关于The legacy remote API

查阅官方的用户手册可知,它是remote API的第一个版本,相比于新版,有很多不足,但是对于刚用这款软件的人来说,还是比较容易上手的,所以先讲该API在python上的使用。

Python模拟机器人 python 机器人运动仿真_API


具体步骤:

查看官方的用户手册,我们可以得知:

Python模拟机器人 python 机器人运动仿真_python_02

也就是说,要在仿真软件的安装目录上找到这几个文件加到自己的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下的脚本文件添加相应端口连接代码,如下图所示

Python模拟机器人 python 机器人运动仿真_人工智能_03

Python模拟机器人 python 机器人运动仿真_python_04

注意端口号(这里是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的连接以及机器人的控制程序,这里我只提供一种多机器人仿真的思路。