草庐IT

CoppeliaSim学习笔记(1):建立Python脚本与CoppeliaSim的连接

qq_22487889 2023-04-11 原文

参考文章:

使用Python项目与 V-REP联合仿真 - Play V-REP with Python
CoppeliaSim(原V-REP)新手上路
V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第二部分:Vrep与python的联调)
【CoppeliaSim】远程 API 之 Python 控制,对比 V-rep 有些不同

一、在CoppeliaSim中搭建仿真环境

  • 这些资料网上很多,在此不做赘述,本人以UR5机械臂为例,软件版本是CoppeliaSim 4.1。打开软件,系统会自动新建一个场景,然后将UR5拖拽到你的场景中,这里仅以UR5为例。
    UR5机械臂上增加了Graph画图,夹子RG2和深度相机kinect。

二、CoppeliaSim与Python的连接

1. 在UR5右边的脚本程序增加一行代码:

simRemoteApi.start(19999)


下面的代码是UR5自带的代码,可以删去也可以保留。
对19999的解释:coppeliasim默认开启19999端口,在remoteApiConnections.txt定义,允许自定义
// Let’s start a continuous remote API server service on port 19997:
portIndex1_port = 19997
portIndex1_debug = false
portIndex1_syncSimTrigger = true

2. 创建一个脚本的项目文件夹:

  • python或者matlab都可以,此处只学习了python,便只对python进行教学:
    可以在文件夹…\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings
    看到所支持的语言以及提供的相关语言的示例工程:里面的示例都已经配置好了环境,只需要再CoppliaSim中添加需要的通讯代码(例如端口号),就可以直接运行

matlab参考:【CoppeliaSim】远程 API 之 Matlab 控制,对比 V-rep 有些不同
文件夹应当是 一个python的项目文件夹,可以用Visual Studio、PyCharm等进行创建。

  • 了解前置知识后,具体的创建项目以及建立连接的步骤如下:

a. 创建一个空文件夹,然后在PyCharm中打开,最后放入三个文件,分别是sim.py、simConst.py和remoteApi.dll

sim.py和simConst.py在:CoppeliaSim安装目录\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\python\python\下

remoteApi.dll在:CoppeliaSim安装目录\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\lib\lib\Windows\下

b. 在PyCharm中打开后(自动)配置python运行相关环境,配置以后文件夹如上图

此时环境已经配置完毕了,可以实现python和CoppeliaSim的联调。此时我们需要的便是用python程序去连接CoppeliaSim并控制机器人

c. 写python脚本进行测试

这里我们直接使用安装文件夹中提供的文件simpleTest.py进行测试
文件位于:
…\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\python\python\simpleTest.py
代码的讲解见:CoppeliaSim(原V-REP)新手上路
配置完毕后文件夹内容如下:

  • 最后:先运行CoppeliaSim仿真再运行python程序simpleTest.py,才能连接上。
  • 若程序正常运行,可看到CoppeliaSim的状态栏中有如下显示:

    其中:Hello CoppeliaSim! 在python运行结束后出现。
  • 此时python运行结果如下:


    关闭CoppeliaSim仿真:

    可以看到输出框下有一个可以输入Lua代码的地方和Sandbox的脚本选择下拉菜单,暂时不知道作用是什么。
  • 最后,建议把CoppeliaSim的scene文件(.ttt后缀)放进项目文件夹中,以免不知道项目对应的scene文件是哪一个,虽然不这样也可以正常使用和联调:

有关CoppeliaSim学习笔记(1):建立Python脚本与CoppeliaSim的连接的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  3. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  4. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  5. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  6. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  7. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  8. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  9. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  10. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

随机推荐