本文主要介绍如何将CoppeliaSim与Python联合起来进行仿真,
针对于他们直接的联合控制进行配置。
一、The B0-based remote API
这是官方对两个API的说明:
链接:https://www.coppeliarobotics.com/helpFiles/en/remoteApiOverview.htm
基于B0的远程API:这表示远程API的第二个版本。 它基于BlueZero中间件及其CoppeliaSim的接口插件。 与传统的远程API相比,它更易于使用且更具灵活性,最重要的是,它易于扩展。 目前,它支持以下语言:C ++,Java,Python,Matlab和Lua。
旧版远程API(或简称为远程API):这表示远程API的第一个版本。 与基于B0的远程API相比,它相对较轻并且具有更少的依赖性。 但是,它不那么直观,也不灵活,并且很难扩展。 它支持以下语言:C / C ++,Java,Python,Matlab,Octave和Lua。
这里说明一下为什么要用新版的API:
1 使用旧版API时,会发现sim库中不存在某些函数。例如:根据物品handle获取物品的名称的函数。
2 新库有些函数能比旧库返回更多的参数。
二、具体操作
链接:https://www.coppeliarobotics.com/helpFiles/en/b0RemoteApiOverview.htm
分为客户端和服务端两部分,客户端就是我们使用的外部应用,这里使用Python进行控制;客户端就是CoppeliaSim。
2.1 服务端
链接:https://www.coppeliarobotics.com/helpFiles/en/b0RemoteApiServerSide.htm
- 方式一: 启动附加脚本simAddOnScript-b0RemoteApiServer.lua:您可以在菜单栏[Add-ons-> B0RemoteApiServer]中手动启动它,也可以在CoppeliaSim启动时自动启动它(在这种情况下,将附加组件重命名为 simAddOnScript_b0RemoteApiServer.lua)。 附加脚本为所有场景提供了基于B0的远程API功能,而不会中断。
- 方式二: 将模型Model browser / tools / B0 remote Api server.ttm拖放到特定场景中:这样,基于B0的远程API功能将仅适用于该特定场景。
我们采用方式二:
拖进场景内,会自动链接,暂时先不管。
按下图进行操作,点开b0RemoteApiServer设置界面,记住节点名和通道名。
2.2 客户端
链接:https://www.coppeliarobotics.com/helpFiles/en/b0RemoteApiClientSide.htm
- 为Python安装MessagePack:pip install msgpack
- 复制python文件到项目目录下:官方文档内的路径有问题,真实路径为:
安装目录\CoppeliaRobotics\CoppeliaSimEdu\programming\b0RemoteApiBindings\python
- 复制依赖文件到项目目录下:依赖路径为
安装路径\CoppeliaRobotics\CoppeliaSimEdu
注意:以上的文件与我们的项目场景文件.ttm都是在一个目录下。
2.3 连接
启动服务端。(在2.1步骤中,只要将B0RemotApiServer拖入场景内就会自动启动)
修改Python测试文件,打开
testing.py
,修改节点名和通道名(上面刚刚记录过的)。
运行
testing.py:
如果出现connected,说明连接成功。
版权归原作者 望天边星宿 所有, 如有侵权,请联系我们删除。