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等。      

还有一些机器人方面的常用运动学、动力学、轨迹规划等库

目前机器人领域中,很多问题可以转为求解优化问题,涉及优化的求解器:

  • 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的网址是这个。进去以后,软件下载安装步骤如下:

image-20240127154346439

记得勾选I have understood and agree with the above terms,然后根据自己的硬件平台选择即可。

之前写过安装教程,大家可以选择性参考

最后,本教程所参考的资料基本都来源于这里论坛老版本(4.5、4.1)

1.3 本教程特点

  • 由浅入深,不仅是CoppeliaSim机器人仿真软件的讲解,还有机器人的基础知识,常用概念等;
  • 不仅是软件中的已有模型的拖拽使用,侧重代码实现,代码逐行讲解;
  • 每章都会留作业,帮助大家巩固、复习

2、用户界面(User interface)

2.1 页面与视图(Pages and views)

启动软件以后,界面如下所示;

image-20240312210146308

关闭多个场景的某个场景Scene,鼠标右击没有反应

image-20240312195918581

方法

  • 可以使用快捷键ctrl+w(command+w)
  • File-Close scene

image-20240312200104550

2.2 CoppeliaSim V4.6、V4.1对比

如果是刚结束的小伙伴,可以直接跳过本小节,后续有了深入理解再来学习

首先,说明一下V4.5的新的特点

打开软件,界面如下

2023-07-18_19-55-12

  • 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工具

    image-20230718210141295

    在V4.6版本中,需要手动编写运动学程序,不能通过拖拖拽拽点点了,涉及一些运动学等函数的使用(后续研究2023.7.18)

    simIK.createIKGroup
    simIK.setIKGroupCalculation
    simIK.method_pseudo_inverse
      
    simIK.applyIKEnvironmentToScene
    ...
    ...
    
  • 对于用户说明手册,V4.1中的Calculation modulesMiscellaneous变成了Functionality,里面的内容也有很多不同

    image-20230718210141295

    更细节一点的,在V4.5中Functionality的Geometric calculationKinematicsDynamics中的内容更丰富一些

    image-20230718210141295

    在Scene objects中,V4.1中展示物体的属性更多一些(Renderable objects),并且Paths的设置也很丰富;但是V4.5中Paths的信息比较少

    image-20230718210141295

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欧拉角。

3.场景和模型(Scenes and models)

3.环境(Environment)

3、实体(Entities)

4、功能(Functionality)

5、编程(Writing code)

x.1

x.2

5.x 仿真(Simulation)

6、教程(Tutorials)

6.1