1、课程简介¶
1.1 前沿¶
大家好,今天给大家带来CoppeliaSim V4.6版本的使用教程,在介绍软件的使用之前,先聊解几句闲话:我本身是做机器人方向,机器人的控制要不是真机控制,要不是仿真。
真机控制不是本套教程的重点;里面涉及机器人(比如franka、UR等等)的实际操作,SDK的使用、ROS的开源包、编写C++、Python代码,以后有需要或者有成熟的想法再发布相关的教程。
机器人仿真有很多软件,我以前做过非常非常简单的基于Matlab的机器人工具箱(robotics-toolbox-matlab)的教程,目前这个工具箱也有对象的Python版本了。
除此之外,还有很多关于机器人的仿真软件,overall comparison of physics simulators
Hint
- 课程内容,暂不对外开放
仿器真软件名称 | (物理引擎) | (渲染引擎) | 运动学求解器 |
---|---|---|---|
CoppeliaSim V4.6(原Vrep); | bullet 2.78 Bullet 2.83 ODE Vortex Newton MuJoCo |
||
Gazebo; | ODE | OGRE | 链接 |
Drake; | |||
Webots; | |||
MuJoCo; | Mujoco | OGRE | |
PyBullet; | Bullet | OGRE | |
RaiSim(ETH,不开源); | RaiSim | OGRE | |
ISAAC(Nvidia,不开源); | PhysX | RTX | |
Matlab的Robotics System Toolbox | |||
Matlab的Simscape中的Multibody等。 |
还有一些机器人方面的常用运动学、动力学、轨迹规划等库
-
ikfast:是OpenRAVE运动规划软件中的一个逆运动学求解器,官网好像很久远,也是MoveIt的一个Kinematics Solver
-
trac_ik:在MoveIt中作为它的一种Kinematics Solver
-
RBDL:Featherstone的《Rigid body dynamics algorithms》,高效C++库。好像没有pinocchio好用。
-
OMPL等。
目前机器人领域中,很多问题可以转为求解优化问题,涉及优化的求解器:
- CVX:Matlab Software;(Stephen Boyd)
- OSQP;
- qpsolvers;
- MindOpt;
- COPT;
- ALGLIB;
- SCIP;
- Gurobi Optimizer;
- CPLEX;
- BARON;
- Mosek;
- ACADO等等(Nonlinear Optimal Control、Multi-Objective Optimal Control、State and Parameter Estimation、Model Predictive Control、Code Generation for Fast NMPC and MHE)。
今天,我们的重点是机器人的仿真软件 --- CoppeliaSim V4.6。
1.2 CoppeliaSim V4.6 简介与下载¶
简单介绍一下这个CoppeliaSim仿真软件
CoppeliaSim原来的叫做V-REP(virtual robot experimentation platform),是Switzerland的Coppelia Robotics, Ltd.的一款机器人仿真软件。
基于分布式控制架构:每个对象/模型都可以通过an embedded script(脚本,非常重要的概念)、a plugin、a ROS node、a remote API(也很重要,可以和matlab,python等联合仿真)或a custom solution单独控制,这使得CoppeliaSim非常通用。控制器可以用C/C++, Python,Java,Lua,Matlab或Octave编写。(不理解也没关系,后面慢慢理会)
本教程采用的是V4.6版本,CoppeliaSim的网址是这个。进去以后,软件下载安装步骤如下:
记得勾选I have understood and agree with the above terms,然后根据自己的硬件平台选择即可。
之前写过安装教程,大家可以选择性参考
最后,本教程所参考的资料基本都来源于这里;论坛;老版本(4.5、4.1)
1.3 本教程特点¶
- 由浅入深,不仅是CoppeliaSim机器人仿真软件的讲解,还有机器人的基础知识,常用概念等;
- 不仅是软件中的已有模型的拖拽使用,侧重代码实现,代码逐行讲解;
- 每章都会留作业,帮助大家巩固、复习
2、用户界面(User interface)¶
2.1 页面与视图(Pages and views)¶
启动软件以后,界面如下所示;
关闭多个场景的某个场景Scene,鼠标右击没有反应
方法
- 可以使用快捷键ctrl+w(command+w)
- File-Close scene
2.2 CoppeliaSim V4.6、V4.1对比¶
如果是刚结束的小伙伴,可以直接跳过本小节,后续有了深入理解再来学习
首先,说明一下V4.5的新的特点
打开软件,界面如下
-
V4.1中菜单栏的Plugins和Add-ons,变成了V4.5版本中的Modules
-
V4.1中右侧的Calculation Modules、Collections、Path、Selection没有了
-
V4.5中软件自带的
*.ttm
模型有所更新 -
V4.5中Dynamics engine增加了MuJoCo
- V4.5中场景的
new scene
中的主脚本,点开后只有一行代码,需要再调用defaultMainScript
选择defaultMainScript
,右击选择Open'defaultMainScript'
就会打开默认的主脚本,右上角可以看到其存储路径***/CoppeliaRobotics/CoppeliaSimEdu/lua/defaultMainScript.lua
。
- V4.5脚本中,获取对象名称需要考虑对象所处位置,涉及相对路径,下图是ABB IRB 360.ttm模型的某段代码。
- 上述是一些直观感受,还有比较重要的变化是模型的运动学求解方式,在V4.1中可以直接使用Tools---Calculation module properties工具
在V4.6版本中,需要手动编写运动学程序,不能通过拖拖拽拽点点了,涉及一些运动学等函数的使用(后续研究2023.7.18)
Lua | |
---|---|
1 2 3 4 5 6 7 |
|
- 对于用户说明手册,V4.1中的Calculation modules和Miscellaneous变成了Functionality,里面的内容也有很多不同
更细节一点的,在V4.5中Functionality的Geometric calculation、Kinematics、Dynamics中的内容更丰富一些
在Scene objects中,V4.1中展示物体的属性更多一些(Renderable objects),并且Paths的设置也很丰富;但是V4.5中Paths的信息比较少
2.3 位置/姿态操作(Position/Orientation manipulation)¶
3.2 对象位姿操作¶
3.3 Euler Angles、shortcuts、command line¶
本小节简单介绍一下Euler Angles(欧拉角)的相关问题,欧拉角是描述刚体(rigid body)的姿态(orientation)的一种方法,当然还有很多其他的方法,比如:旋转矩阵、RPY角、轴角法(罗德里格旋转公式)、四元数等。
我以前录过几期关于《机器人学》的教程,里面有关于欧拉角的解释。
欧拉角有12种不同的形式,分为两种
- Proper Euler angles
- Tait-Bryan angles
在CoppeliaSim中,使用Tait-Bryan angles,alpha(\(\(\alpha\)\))、beta(\(\(\beta\)\))、gamma(\(\(\gamma\)\)) $$ R_{total}=R_x(\alpha)R_y(\beta)R_z(\gamma) $$ Rz、Ry和Rx分别表示绕着固定坐标系的Z轴、Y轴和X轴的旋转。
CoppeliaSim中的欧拉角规则:XYZ欧拉角。