前言

在前面的博客中,我们已经学习过了如何对目标机器人进行数学意义上的模型建立,以便实现基础控制,而在实际生活中,由于机器人造价高昂,我们往往难以获得实际的目标机器人进行部署研究,这就需要我们对目标进行仿真,采用编程或可视化方法建立机器人3D模型,从而在ROS中使用RVIZ和GAZEBO组件进行相应的仿真分析。本篇文章首先分析了建立机器人3D模型的基本方法,包括使用URDF文件和Gazebo可视化建立等,在之后简单介绍了使用机器人3D模型进行ROS仿真的基本流程,主要涉及RVIZ和Gazebo两个强大的功能组件。

一、建立3D模型

1. URDF文件

  • 概念:Unified Robot Description Format ,统一(标准化)机器人描述格式,主要使用XML格式描述机器人模型结构。

  • 使用方法:通过XML格式描述机器人结构,包含底盘、摄像头、雷达等传感器,以及机械臂和不同关节的自由度,该文件通过C++内置的解释器可以转换成可视化机器人模型。

如下代码就是一个简单的机器人模型代码文件:

<robot name="mycar"><link name="base_link"><visual><geometry><box size="0.5 0.2 0.1" /></geometry></visual></link>
</robot>
  • 仿真:使用URDF创建机器人模型,之后通过Gazebo搭建仿真环境,通过RVIZ进行3D可视化分析机器人模型,最后通过传感器获取环境数据最终实现控制仿真

2. 可视化建立3D模型并转换

  • 建模流程:通过Gazebo或者一些其他的三维建模软件,例如Solidworks等,利用可视化的方法建立3D模型,最后通过转换导出成为URDF文件。Solidworks的界面如下图所示:

  • Gazebo可视化建模:对于Gazebo而言,存在一种新的机器人模型文件,为SDF格式,改进了一些URDF的缺点,在后续的Gazebo教程中,会深入进行分析Gazebo的相关操作和知识。并且对于Gazebo来说,在仿真中更多的也是作为一种仿真环境的建立,如下图所示:

  • Solidwork模型转换:

在工具栏中选择下拉选项中的Tool,选择Export as URDF可得:

通过选择坐标系和机器人关节等,最终可以导出完整对应的URDF文件;

二、ROS仿真流程

1. 机器人系统仿真

  • 概念:通过计算机对实体机器人系统进行模拟,在 ROS 中,仿真实现涉及的内容主要包含:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。

  • 作用:

仿真的优点:

  1. 成本低:实际机器人的成本常常高达几十W,风险大,难以进行实际研究;
  2. 效率高:强大的仿真软件可以为我们提供大量真实的仿真环境,可以在短时间内提高测试效率和覆盖率
  3. 安全性:由于在虚拟世界中进行的实验研究,可以避免耗损等安全问题。

仿真的缺点:

  1. 环境失真:仿真软件的物理引擎无法真实代替现实世界;
  2. 硬件失真:仿真器构建的是关节驱动器(电机&齿轮箱)、传感器与信号通信的绝对理想情况,目前不支持模拟实际硬件缺陷或者一些临界状态等情形
  • 涉及组件:

URDF,统一机器人描述格式:通过XML格式的文件描述机器人结构。可转换成可视化机器人模型,具体在上述已有介绍

RVIZ,ROS的三维可视化工具:通过三维方式显示ROS消息数据,可以继承雷达、激光等传感器获取环境数据,并进行可视化表达

安装方法:

sudo apt install ros-[ROS_DISTRO]-rviz

使用方法:命令rviz或者rosrun rviz rviz

Gazebo,ROS的3D动态模拟器:用于显示机器人模型并创建仿真环境,提供高保真度的物理模拟及传感器模型,拥有非常良好的交互方式

安装方法:

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main"
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
sudo apt install gazebo11
sudo apt install libgazebo11-dev

使用方法:命令gazebo或者rosrun gazebo_ros gazebo

注意:在实际的仿真中,使用 URDF 结合 Gazebo 搭建仿真环境,并结合 Rviz 显示感知的虚拟环境信息,结合使用完成综合应用

2. URDF集成RVIZ流程

① 创建功能包,导入依赖项:

  1. 自定义名称,创建性功能包(依赖项:urdf、xacro)
  2. 功能包下新建目录:
    urdf:存储urdf文件;meshes:存储机器人模型渲染文件;config:存储配置文件;launch:存储启动文件

② 编写urdf文件:在urdf文件夹下新建子级文件夹urdf,添加.urdf文件,内容暂略;

③ 编写launch文件:启动RVIZ、导入urdf文件、显示机器人模型,代码如下:

<launch><!-- 设置参数 --><param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" /><!-- 启动 rviz --><node pkg="rviz" type="rviz" name="rviz" /></launch>

④ 修改RVIZ配置:默认情况没有机器人显示组件,手动添加方式如下:


⑤ 优化RVIZ实现自动保存:保证重复启动launch文件可以保存先前组件配置信息:

  1. 将组件皮遏制保存到config目录下:

  1. 启动配置添加参数:
<launch><param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" /><node pkg="rviz" type="rviz" name="rviz" args="-d $(find 报名)/config/rviz/show_mycar.rviz" />
</launch>

总结

  • 声明:本节博客部分参考了CSDN用户赵虚左的ROS教程,本篇博客主要针对于如何进行机器人3D建模及仿真完成了简单介绍,在之后的博客中会进一步介绍urdf文件的编写方法、rviz的可视化使用以及Gazebo的入门教程,敬请期待。

基于ROS的机器人模型建立及3D仿真【物理/机械意义】相关推荐

  1. 机器人建模中移动关节如何建立坐标系_案例(一)三自由度机器人模型建立

    下图所示为一个三自由度机器人,其中包括一个移动关节.该操作臂称为"RPR型机构"(一种定义关节类型和顺序的表示方法).分析机构并建立相应连杆坐标系,写出各连杆的D-H参数.最后通过 ...

  2. 基于ROS的机器人系统(Python实现)--1 ROS系统与安装

    基于ROS的机器人(Python实现)--1 ROS系统与安装 1 .1 ROS系统与安装 1.1.1 ROS概述 1.1.2 ROS安装 1.2 Roboware 安装与使用 1.3 Gazebo ...

  3. ROS——UDRF机器人模型优化(xacro)

    文章目录 UDRF机器人模型的不足 UDRF机器人模型的优化实现 xacro模型优势 xacro的使用方法 xacro创建一个小车机器人 编辑xacro机器人模型 启动模型在rviz中显示 小结 参考 ...

  4. 基于ros的机器人运动控制相关学习(一)

    基础知识 机器人控制分层 底层包括三个级别:(1)发动机.编码器:(2)发动机控制器和驱动器:(3)驱动程序和pid控制器整合到一起的基控制器. 中间层:movebase级别,路径规划 高层:slam ...

  5. SimMechanics/Second Generation倒立摆模型建立及初步仿真学习

    笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...

  6. matlab机械手ikine函数,MATLAB机器人工具箱(二)机器人模型建立

    理论基础(D-H) 此处理论基础取自<机器人导论>采用改进的Modifird DH参数模型 R代表转动副,P代表移动副 有N个关节(编号从1到N)机械臂具有N+1个连杆(编号从0到N)连杆 ...

  7. 2018-3-10论文(网络评论非结构化信息表示与应用研究)笔记-----基于证据理论的综合评价模型建立

    证据理论证据合成问题 运用证据理论对商品进行综合评价,在对每一条评论给出就决策矩阵的类别值进行分析合成,让后将其看成不同的证据,然后兼顾不同的一家内进行合成 模型表述----评语等级 (2)评论分类 ...

  8. ros构建机器人运动学模型_ROS环境下的机器人仿真模型构建方法研究

    现代电子技术 Modern Electronics Technique 2018 年 4 月 1 日 第 41 卷第 7 期 Apr. 2018 Vol. 41 No. 7 DOI : 10.1665 ...

  9. 【Matlab 六自由度机器人】定义标准型及改进型D-H参数建立机器人模型(附MATLAB建模代码)

    Matlab建立六自由度机器人模型 近期更新 前言 1.Matlab机器人工具箱 2.研究对象-六自由度机器人 正文 一.D-H参数(Denavit–Hartenberg parameters) 1. ...

  10. 机械臂机器人——使用Matlab Robotic ToolBox建立四轴机械臂模型并实现运动控制仿真

    文章目录 四轴机械臂实物 Robotic ToolBox机械臂建模 1.建立机械臂的D-H表 建立机械臂坐标系 根据坐标系建立D-H表 2.代码建模 机械臂运动学仿真 1.正运动学仿真 2.逆运动学仿 ...

最新文章

  1. ccat – 使用语法突出显示输出内容
  2. bom头解释方法和去掉方法
  3. kettle学习笔记(二)——kettle基本使用
  4. 进阶学习(4.3) JVM 垃圾回收算法
  5. js 截取 前后 空格 获取字符串长度
  6. try-catch-finally 与返回值的修改
  7. QT的QSplineSeries类的使用
  8. Python代码打包成exe文件
  9. Solaris10下Nagios安装
  10. bwlabel算法_bwlabel函数的c++实现
  11. 多媒体计算机在英语学科的应用,多媒体计算机应用于初中英语学科学习教学的研究...
  12. Android应用开发实例篇(1)-----简易涂鸦板
  13. 这么说吧,NIO很简单,其实就是个牛逼IO
  14. transact和onTransact的区别
  15. 数据分析为周杰伦打榜的夕阳红老年团,告诉你他们真实年龄!
  16. WINDOWS获得当前执行程序路径的办法
  17. 饥荒 Don‘t Starve Together Mac游戏介绍
  18. 面试问离职原因,怎么说才好?
  19. CloudFlare Workers 设置使用自定义域名
  20. 微信授权APP第三方登陆(Android)

热门文章

  1. scrapy爬取时出现错误:Forbidden by robots.txt: <GET https://www.xinpianchang.com/channel/index/sor
  2. 计算机换色带技巧,打印机色带维护技巧
  3. Word2016 页码从任意页开始
  4. Java小农养成记第七天
  5. 苹果手机来电归属地_手机号码归属地能否取消?
  6. linux查看显卡温度cpu温度,怎样从指令提示符窗口查看cpu温度
  7. 查看计算机温度指令,怎么看cpu温度(电脑CPU温度怎么查看?)
  8. python制作动态二维码
  9. Mysql UDF Bug “ERROR 1125 (HY000): Function ‘xxx‘ already exists“
  10. 案例:微博传播引爆点