CoppeliaSim(原V-REP)新手上路

 

 

目录

一、CoppeliaSim简介

二、CoppeliaSim初入门

三、CoppeliaSim与python的连接

连接之前要做的事!!!

用python程序去连接CoppeliaSim并控制机器人

我遇到的问题

四、控制效果与代码

控制效果

代码

五、总结


一、CoppeliaSim简介

CoppeliaSim(原V-REP)是一个机器人仿真平台,里面有很多来自别的公司的机器人模型以及完备的物理引擎,我们可以通过python,c++,matlab等语言控制里面的机器人。

CoppeliaSim(原V-REP)新手上路

CoppeliaSim的官网是:https://www.coppeliarobotics.com/

CoppeliaSim V4.1.0的下载网址:https://www.coppeliarobotics.com/files/CoppeliaSim_Edu_V4_1_0_Setup.exe,您也可以在官网中Downloads里找您需要的版本,一般只需要下载EDU版本就可以了,我下载的是v4.1.0 windows EDU版本。

CoppeliaSim(原V-REP)新手上路

在版本V4之前,CoppeliaSim叫V-REP,在官网可以下载到之前的V-REP版本。旧版本与新版本的代码相差不是特别大,python中只需将vrep改成sim就行,V-REP创建的scene在CoppeliaSim也能正常运行。

CoppeliaSim的官方资料网址:https://www.coppeliarobotics.com/helpFiles/,在上面可以查找函数的使用说明,个人认为函数说明是足够的,但缺乏实例,新手上路还是不方便。

CoppeliaSim(原V-REP)新手上路
CoppeliaSim资料页面

二、CoppeliaSim初入门

CoppeliaSim(原V-REP)新手上路
CoppeliaSim操作界面

简单介绍一下,上图就是CoppeliaSim的操作界面,从model browser中拖出底板、围墙、机器人等物件,然后可以设置他们的position和Rotation,这个大家自己摸索一下就可以建立自己的世界了!

三、CoppeliaSim与python的连接

连接之前要做的事!!!

①新建一个文件夹,这个文件夹将包括您未来写的函数,然后要将3个重要文件复制到这个文件夹里,分别是:sim.py,simConst.py以及remoteApi.dll

sim.py和simConst.py在:..CoppeliaRoboticsCoppeliaSimEduprogrammingremoteApiBindingspythonpython下

remoteApi.dll在:..CoppeliaRoboticsCoppeliaSimEduprogrammingremoteApiBindingsliblibWindows下

直接将这3个复制到您的文件夹中即可。

②打开CoppeliaSim,点开场景右边的代码,添加一句:

 这个代码是建立连接必须的

CoppeliaSim(原V-REP)新手上路

 

用python程序去连接CoppeliaSim并控制机器人

直接贴代码,这段代码在:..CoppeliaRoboticsCoppeliaSimEduprogrammingremoteApiBindingspythonpythonsimpleTest.py中有

这个代码的功能是一个基础的连接功能,大家刚入门的时候可以先跑这个代码,在跑代码之前需要在CoppeliaSim运行仿真,这样才能连接上!

代码讲解:sim.simxFinish(-1)是断开一切可能的连接,sim.simxStart就是python和CoppeliaSim建立连接的代码,返回的clientID是建立连接的ID,可以理解为指向你的scene,后续一切的操控都需要用到这个ID,sim.simxFinish(clientID)用在程序的结尾断开连接。

 

能够成功连接上CoppeliaSim之后我们就可以读取或者控制CoppeliaSim中的物件了。

代码讲解,sim.simxGetObjectHandle就是获取你目标物体的ID,’Quadricopter_target’可以在你的scene中找到,如下图所示,这上面的名字就可以在代码中调用。Quadricopter_target是无人机的目标位置,无人机会飞到目标位置然后悬空不动。

CoppeliaSim(原V-REP)新手上路

sim.simxGetObjectPosition可以获取CoppeliaSim中物体的坐标,返回的arr是x,y,z三维坐标。sim.simxSetObjectPosition就是设置物体的坐标,当改变无人机的目标位置时,无人机就会朝着新的目标位置运动,从而控制无人机的飞行。如果设置步长太大的话,会导致无人机飞炸,说明默认的无人机控制程序并不好,所以要么每次控制的步长小点,要么在设置完之后来一个time.sleep(0.5),让无人机飞到目标位置后再进行下一步。

我遇到的问题

使用CoppeliaSim环境来做强化学习的训练,需要在训练完一个epoch后,需要环境从头开始,很简单,就是reset一下。

然后我找来了两句相关代码:

sim.simxStopSimulation就是结束仿真,sim.simxStartSimulation就是开始仿真。我整了一晚上,只能做到Stop,Stop完就无法重启,查阅很多资料没法查到解决方案,最后是在看了很多别人的代码后,对一个地方作出了一个小改动就成功了。

将代码中的19999改为19997:

 改为

改成19997后就可以成功的关闭和开启了,改成19995也不行,我也不知道是为什么,可能19997有什么特殊含义吧。或许有知道的大佬可以在评论区告诉我,万分感谢!!!

 

四、控制效果与代码

完整的代码包括场景已上传Github

https://github.com/lzw0515/CoppeliaSim_python

控制效果

CoppeliaSim(原V-REP)新手上路

代码

来源:Cocojalz

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月26日
下一篇 2021年2月26日

相关推荐