本文主要介绍如何将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,说明连接成功。