datetime:2023/09/26 18:28
author:nzb
该项目来源于大佬的动手学ROS2
9.1 机器人仿真介绍
本节课我们主要对机器人仿真进行介绍,同时对ROS2支持的常用仿真平台进行介绍。
1.为什么需要机器人仿真
所谓机器人仿真其实就是通过软件来模仿硬件的特性,用于验证机器人算法、架构等。
肯定有同学会问为什么要做机器人仿真,有这个用软件来模拟硬件的空挡,直接搞真实的机器人不行吗?
答案肯定是可以的,对于个人极客来说,直接动手比仿真要来的快和直接的多。单对于公司和非常复杂的项目来说,仿真就变得很重要了。
原因在于:
仿真可以解决真机资源不足,真实的机器人一般价格都很贵,搭建起来也很耗费资源。
仿真可以保证环境的一致和稳定,举个例子,之前在部署导航系统时发现在A机器人上没问题,但在B机器人上老是丢位置,明明算法是一致的,后来发现是B机器人的IMU模块出现了松动。
仿真场景可以更加灵活,在测试机器人算法时可以通过仿真软件快速更改仿真环境,验证算法(甚至还可以让机器人原地起飞)
2.仿有哪些缺点
上面说完仿真的各种好,那仿真有哪些缺陷呢?
之前听一位做机械臂动力学的朋友说,他们做研发时候从来没做过仿真,原因在于仿真环境中的机器人和真实环境机器人差别过大。
所以机器人仿真的主要缺陷就是仿不全,现实世界中的环境非常复杂,光线、材质、电磁干扰等等,仿真平台无法做到100%的仿真。
3.常用仿真平台
相较于ROS,ROS2支持更多更专业的仿真平台,常用的有:
3.1 Gazebo
Gazebo是ROS中常用的机器人仿真平台,也是OSRF(开源机器人基金会)的作品之一,关于Gazebo的介绍,已经在第六章进行介绍了,忘记的同学可以翻看下。
3.2 WeBots
Webots由Cyberbotics公司开发,是一个用于模拟机器人的开源和多平台桌面应用程序。它提供了一个完整的开发环境来对机器人进行建模、编程和仿真。Webots内核基于开源动力学引擎ODE和OpenGL,可以在Windows,Linux和macOS上运行,并且支持多种编程语言( C/C++,Python,Java,MATLAB)。
3.3 Ignition
官网链接:https://gazebosim.org/ 官方文档:https://ignitionrobotics.org/docs
Ignition是继承于Gazebo的下一代仿真平台,Ignition Robotics基于开发库和云服务等丰富全面的工具箱,提供了一种全新的仿真方式,进一步简化仿真。高度逼真的传感器可在接近真实的环境中快速迭代更新机器人物理设计。在安全上可测试控制策略,并在持续的集成化侧重中利用仿真的诸多优势。
3.4 Unity
官网链接:hhttps://unity.com/ UnityForROS2:https://github.com/RobotecAI/ros2-for-unity
Unity Robotics软件包带有许多现成的接口,能让你轻松与ROS或ROS 2的交换信息。你也能用URDF Importer直接从URDF文件中导入机器人配置,在Unity高质量的渲染管线与高精度的物理模拟加持下开始训练机器人。Unity的Asset Store还售有大量现成的环境和道具,可用于补充机器人的训练环境、完善训练任务。只需几键,你搭建的模拟就可以构建并部署到Windows 10、Mac OS或Linux等任意主流操作系统。你甚至可以使用C#、Bolt可视化编程及Asset Store上的众多脚本和实用程序来根据自己的需求进一步定制模拟环境。
4.我们用哪个仿真平台?
鉴于从ROS和Gazebo中得到的大量经验,我们依然选择Gazebo作为本次进行仿真的主要平台。但在本章节的后面,会带你一起探索下其他的仿真平台。
让我们保持好奇心,下一节在上一章节机器人建模的基础上,为我们的机器人模型注入仿真需要的物理属性参数。