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

上篇:Coppeliasim仿真日记(一): 简介、下载和API的查询

本文主要讲python与Coppeliasim的连接,实现入门的第一步。

关于The legacy remote API

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


具体步骤:

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

Coppeliasim仿真日记(二): Coppeliasim与python的联动——The legacy remote API, 以及进行多机器人仿真_第1张图片

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

Coppeliasim仿真日记(二): Coppeliasim与python的联动——The legacy remote API, 以及进行多机器人仿真_第2张图片

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

最后

这个系列是我很久之前用coppeliasim做群体仿真时做的一些笔记,当时还不会ROS,这边建议要用coppeliasim进行多机器人仿真的话还是用ROS接口。而且做单个机器人或者数量不是很多的机器人的话还是参考我后面的The B0-based remote API的使用。

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

你可能感兴趣的:(Coppeliasim仿真日记,python,人工智能)