Coppeliasim仿真日记(三): Coppeliasim与python的联动——The B0-based remote API

上篇:Coppeliasim仿真日记(二): Coppeliasim与python的联动——The legacy remote API, 以及进行多机器人仿真

本文主要讲python与Coppeliasim,通过使用B0-based remote API来进行机器人的仿真。


The B0-based remote API

这是官方对旧版API和新版的说明:

基于B0的远程API:这表示远程API的第二个版本。 它基于BlueZero中间件及其CoppeliaSim的接口插件。 与传统的远程API相比,它更易于使用且更具灵活性,最重要的是,它易于扩展。 目前,它支持以下语言:C ++JavaPythonMatlabLua

旧版远程API(或简称为远程API):这表示远程API的第一个版本。 与基于B0的远程API相比,它相对较轻并且具有更少的依赖性。 但是,它不那么直观,也不灵活,并且很难扩展。 它支持以下语言:C / C ++JavaPythonMatlabOctaveLua

这里说明一下为什么要用新版的API

  • 之前我们查阅官方的API手册时,会发现有些函数在调用旧版的sim库上时没有,例如:根据物品handle获取物品的名称的函数

       

   有时候我们想得到读取接近传感器函数返回检测到的handle是对应哪个物品名称,用旧库的函数就无法进行这种操作。

  • 新库有些函数能比旧库返回更多的参数,例如:

     

   读取接近传感器的函数,新库函数会返回接近传感器检测到的物品的距离,而旧库函数不会返回这些值。

  • 使用新库能更好地使用多机器人并行仿真,之前有讲过,用旧库要想达到能同时控制多台机器人的效果,采用的是每个py脚本控制每台机器人的方法。但使用新库,就能直接实现同时控制多台机器人的操作。

接下来,将说明新库,即基于B0的远程API,是如何使用的。


具体操作:

仿真环境的配置

查阅官方手册,我们可以得知:

服务端(一般是CoppeliaSim软件)的设置:

  1. 启动附加脚本simAddOnScript-b0RemoteApiServer.lua:您可以在菜单栏[附加组件-> b0RemoteApiServer]中手动启动它,也可以在CoppeliaSim启动时自动启动它(在这种情况下,将附加组件重命名为 simAddOnScript_b0RemoteApiServer.lua)。 附加脚本为所有场景提供了基于B0的远程API功能,而不会中断。
  2. 将模型Models / tools / B0远程Api server.ttm拖放到特定场景中:这样,基于B0的远程API功能将仅适用于该特定场景。

客户端(python端)的设置:

这里要说明一下blueZero库,这个库在软件安装目录\CoppeliaRobotics\CoppeliaSimEdu下面,要能够使用新库API,需要python工程文件夹下包含下列文件:

相关文件添加完后,就可以运行程序了,接下来说明在python上怎样使用这个库。

在python上的使用

下面是python客户端上的代码:

import b0RemoteApi
import time


with b0RemoteApi.RemoteApiClient('节点名称', '通道名字') as client:
    client.doNextStep = True

    def simulationStepStarted(msg):
        simTime = msg[1][b'simulationTime']

    def simulationStepDone(msg):
        simTime = msg[1][b'simulationTime']
        client.doNextStep = True

    client.simxSynchronous(True)
    client.simxGetSimulationStepStarted(client.simxDefaultSubscriber(simulationStepStarted))
    client.simxGetSimulationStepDone(client.simxDefaultSubscriber(simulationStepDone))
    client.simxStartSimulation(client.simxDefaultPublisher())  # 开始仿真
    startTime = time.time()
    while time.time() < startTime + 40:   # 仿真时间设定
        if client.doNextStep:
            client.doNextStep = False
            '''控制代码'''
            client.simxSynchronousTrigger()
        client.simxSpinOnce()
    client.simxStopSimulation(client.simxDefaultPublisher())  # 结束仿真

Coppeliasim上将API模型拖动到场景上:

同时软件会检测到你是否打开了b0 resolver,若没有打开会自动给你打开,这是通过bluezero连接场景和电脑的接口,这个b0 resolver在软件安装目录\CoppeliaRobotics\CoppeliaSimEdu可以找到。

最后运行程序,其中通道名要和python代码上的通道名对应,若出现

代表连接成功!

最后

吐槽一下当时改用这个The B0-based remote API时真的走了很多坑,在网上如何使用这个API的教程真的少之又少,最后是通过看用户手册慢慢试出来的,所以说多多看官网的用户手册能解决不少问题。

后面会讲如何多计算机进行联合仿真。

下篇:Coppeliasim仿真日记(四): 如何在Coppeliasim进行多计算机联合仿真

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
CoppeliaSimremote API是一种用于与CoppeliaSim仿真环境进行通信的接口。它与常规的API函数类似,但有一些区别。首先,大部分remote API函数会返回一个值,即服务端返回给客户端的应答,通常是一个返回码。其次,大部分remote API函数需要两个额外的输入参数,即运行模式和客户端ID。\[1\] 在CoppeliaSim中,可以通过多种方式启动remote API服务。其中一种常用的方式是通过场景脚本启动,这是我们最常用的启动方式。这种服务是暂时的,当仿真开始时,服务器会启动;当仿真结束后,服务器会自动关闭。\[2\] 如果你想在CoppeliaSim中使用remote API,你需要按照以下步骤进行设置。首先,打开路径C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\lib。然后,打开QT工程文件remoteApiSharedLib.pro,并进行release编译。编译完成后,将release文件中的相关文件拷贝到remoteAPI文件夹中(或其他文件夹)。这样,你就准备好使用QT工程来使用remote API了。\[3\] #### 引用[.reference_title] - *1* *2* [CoppeliaSim笔记(1):remote API的使用](https://blog.csdn.net/Azahaxia/article/details/119358892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [CoppeliaSim Remote API 实操](https://blog.csdn.net/qq_29696095/article/details/104474081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向南而行灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值