关于The legacy remote API
查阅官方的用户手册可知,它是remote API的第一个版本,相比于新版,有很多不足,但是对于刚用这款软件的人来说,还是比较容易上手的,所以先讲该API在python上的使用。
具体步骤:
查看官方的用户手册,我们可以得知:
也就是说,要在仿真软件的安装目录上找到这几个文件加到自己的python文件目录上。这里是Python端连接coppeliasim的相关代码:
import sim # sim文件在仿真软件安装目录上,要将其移到python脚本的主目录中
sim.simFiniish(-1) # 关掉上一个进程
clientId = sim.simxStart("127.0.0.1", 19991, True, True, 5000, 5) # 建立和服务器的连接
if clientId != -1: # 连接成功
print('Scene connect successfully')
break
然后在机器人的coppeliasim下的脚本文件添加相应端口连接代码,如下图所示
注意端口号(这里是19991)要一致,否则连不上。
如何进行多机器人仿真:
作者我是做群体机器人相关的工作,所以会用到多机器人的仿真,但在网上相关的教程很难找到,为此把我知道的分享给大家。
最初我们进行多机器人并行控制仿真时,采用多线程或多进程方法时,但是仿真效果不理想。
具体表现为:多机不能实现协同控制,传感器读取容易出错。
因此,我们采用类似实机的方法:主要通过建立每台机器人的端口连接,具体如下图所示。
首先在每台机器人加入以下Python控制代码:
clientId = sim.simxStart("127.0.0.1", 19991, True, True, 5000, 5) # 每台机器人端口号要不一样
每台机器人的端口号不一样,范围是19901-19999。
然后在每台机器人的coppeliasim下的脚本文件添加相应端口连接代码,本文前面所示。
最后编写一个最上层的python文件,用来启动控制每台机器人的python文件:
import os
import threading
import sim
def uav_start(Index):
os.system('python uav_' + str(Index) + '.py')
if __name__ == '__main__':
while True:
clientId = sim.simxStart("127.0.0.1", 19997, True, True, 5000, 5) # 建立和服务器的连接
if clientId != -1: # 连接成功
print('Scene connect successfully')
break
for i in range(1, 6): # 5架无人机
uav = threading.Thread(target=uav_start, args=(i,))
uav.setDaemon(True)
uav.start()
注意,该段代码中的无人机的py文件要自己编写,内容包含python与coppeliasim的连接以及机器人的控制程序,这里我只提供一种多机器人仿真的思路。