大家好,我是小鱼,本节我们主要对机器人仿真进行介绍,同时对ROS2支持的常用仿真平台进行介绍。

1.为什么需要机器人仿真

所谓机器人仿真其实就是通过软件来模仿硬件的特性,用于验证机器人算法、架构等。

肯定有同学会问为什么要做机器人仿真,有这个用软件来模拟硬件的空当,直接搞真实的机器人不行吗?

答案肯定是可以的,对于个人极客来说,直接动手比仿真要来的快和直接的多。但对于公司和非常复杂的项目来说,仿真就变得很重要了。

原因在于:

  1. 仿真可以解决真机资源不足,真实的机器人一般价格都很贵,搭建起来也很耗费资源,小鱼是从一家创业公司一路走来的,不同部门抢机器人的现象时常发生。
  2. 仿真可以保证环境的一致和稳定,举个例子,之前小鱼在部署导航系统时发现在A机器人上没问题,但在B机器人上老是丢位置,明明算法是一致的,后来发现是B机器人的IMU模块出现了松动。
  3. 仿真场景可以更加灵活,在测试机器人算法时可以通过仿真软件快速更改仿真环境,验证算法(甚至还可以让机器人原地起飞)

2.仿真有哪些缺点

上面说完仿真的各种好,那仿真有哪些缺陷呢?

之前听一位做机械臂动力学的朋友说,他们做研发时候从来没做过仿真,原因在于仿真环境中的机器人和真实环境机器人差别过大。

所以机器人仿真的主要缺陷就是仿不全,现实世界中的环境非常复杂,光线、材质、电磁干扰等等,仿真平台无法做到100%的仿真。

3.常用仿真平台

相较于ROS,ROS2支持更多更专业的仿真平台,常用的有:

3.1 Gazebo

官网链接:https://www.cyberbotics.com/

Gazebo是ROS中常用的机器人仿真平台,也是OSRF(开源机器人基金会)的作品之一,关于Gazebo的介绍,小鱼已经在第六章进行介绍了,忘记的同学可以翻看下。

3.2 WeBots

官网链接:https://www.cyberbotics.com/

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作为本次进行仿真的主要平台。但在本章节的后面,小鱼会带你一起探索下其他的仿真平台。

让我们保持好奇心,下一节在上一章节机器人建模的基础上,为我们的机器人模型注入仿真需要的物理属性参数。

支持ROS2的仿真平台: UnityForRos2相关推荐

  1. 支持国产处理器仿真的全数字实时仿真平台SkyEye与可信编译器L2C的核心翻译步骤

    1.核心翻译步骤示例 本节我们以第2节提到的Lustre语言的主要特性为线索来解释L2C在翻译过程中的关键节点是如何处理的, 并以图 1的实例来解释Lustre程序是如何被一步步地翻译到Clight语 ...

  2. [UAV] 无人机仿真平台搭建

    [Amovlab] 开源项目 从0开始的无人机仿真平台搭建 1. 基础环境 1.1 新建本地代码仓库 1.2 编译 添加路径(记得 将Path To Prometheus替换成你的文件路径) 1.3 ...

  3. 使用树莓派4B搭建简易的控制器硬件在环仿真平台

    文章目录 前言 一.实验准备 二.具体实施 1.Ubuntu ROS和Matlab通信 2.控制算法部署树莓派 3.Simulink车辆模型环境 总结 前言 在上篇教程中,基于运动学模型和dlqr离散 ...

  4. 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...

    作文「通信原理虚拟实验仿真平台的设计和实现」共有 4564 个字,其中有 2704 个汉字,1316 个英文,162 个数字,382 个标点符号.作者佚名,请您欣赏.玛雅作文网荟萃众多优秀学生作文,如 ...

  5. Apollo进阶课程㊵丨Azure仿真平台使用

    原文链接:进阶课程㊵丨Azure仿真平台使用 Azure是一种灵活和支持互操作的平台,它可以被用来创建云中运行的应用或者通过基于云的特性来加强现有应用.它开放式的架构给开发者提供了Web应用.互联设备 ...

  6. 全数字实时仿真平台SkyEye经典案例——空间站项目

    1. SkyEye 简介 SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模.采用基于LLVM的二进制加速技术,加 ...

  7. 全数字实时仿真平台SkyEye和同步数据流语义与翻译正确性验证

    全数字实时仿真平台 SkyEye,中文全称天目全数字实时仿真软件,应用软件仿真技术,逼真地模拟出被测软件的物理环境.用图形化方式构建虚拟目标系统,有效降低了硬件工程师和软件工程师之间的沟通成本,软件工 ...

  8. 全数字实时仿真平台SkyEye与SystemC集成进行时序仿真

    SkyEye与SystemC集成进行时序仿真 仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误.时序仿真使用布局布 ...

  9. 全数字实时仿真平台SkyEye的同步数据流语言可信编译器的构造

    随着计算机控制系统在人们生活中的普及,软件自身的可靠性也越来越受到重视.在航空.高铁.核电及军事等高安全要求领域的软件系统--安全关键系统(safety-critical system,简称SCS)更 ...

最新文章

  1. shell脚本编程学习笔记(四)shell操作数据库
  2. linux 找出耗io的,linux根据io消耗找进程
  3. Dynamics CRM 注册插件dll到GAC
  4. 【转载】静态时序分析
  5. Matlab高级绘图功能
  6. npm安装时-S -D分别的意思
  7. bzoj4195 noi2015 day1 t1
  8. Linux系统中输入输出管理
  9. Android开发笔记(六十八)工程库打包
  10. linux扫描目标主机开放端口
  11. python编程入门 适合于零基础朋友-零基础能学好python吗?教女朋友学python是送命题吗?...
  12. 《剑指offer》第五十六题(数组中唯一只出现一次的数字)
  13. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少?
  14. python 全栈开发,Day88(csrf_exempt,ES6 快速入门,Vue)
  15. SFDC common errors
  16. 专题:2019世界移动通信大会(MWC)精彩纷呈,中国企业各出大招
  17. 常用benchmark小结
  18. 华为手机怎么录屏?十分简单,轻松学会
  19. NRF51822 小黄车智能锁 逆向工程
  20. 总结用过的几个视频同步分离电路--LM1881

热门文章

  1. Android中读写文件的N种方法
  2. 【Openmv】Openmv脱机运行教程
  3. 思维导图是什么?如何制作学习思维导图
  4. 计算机导论excel相关知识,计算机导论单元6 电子表格处理
  5. 如何抓取各种网页上的图片
  6. .mogrt格式怎么打开, pr如何导入.mogrt文件?pr模板怎么安装?
  7. android studio 海马玩,react-native 环境的搭建(包括Android和iOS)
  8. 怎样查看笔记本电池损耗程度
  9. 城市“一网统管”平台—智慧平安小区的场景应用
  10. word 文档怎么去除页眉的横线