目录
一、CoppeliaSim简介
二、CoppeliaSim初入门
三、CoppeliaSim与python的连接
连接之前要做的事!!!
用python程序去连接CoppeliaSim并控制机器人
我遇到的问题
四、控制效果与代码
控制效果
代码
五、总结
一、CoppeliaSim简介
CoppeliaSim(原V-REP)是一个机器人仿真平台,里面有很多来自别的公司的机器人模型以及完备的物理引擎,我们可以通过python,c++,matlab等语言控制里面的机器人。
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版本。
在版本V4之前,CoppeliaSim叫V-REP,在官 可以下载到之前的V-REP版本。旧版本与新版本的代码相差不是特别大,python中只需将vrep改成sim就行,V-REP创建的scene在CoppeliaSim也能正常运行。
CoppeliaSim的官方资料 址:https://www.coppeliarobotics.com/helpFiles/,在上面可以查找函数的使用说明,个人认为函数说明是足够的,但缺乏实例,新手上路还是不方便。
二、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,点开场景右边的代码,添加一句:
这个代码是建立连接必须的
用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是无人机的目标位置,无人机会飞到目标位置然后悬空不动。
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
控制效果
代码
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!