前言
在前面的博客中,我们已经学习过了如何对目标机器人进行数学意义上的模型建立,以便实现基础控制,而在实际生活中,由于机器人造价高昂,我们往往难以获得实际的目标机器人进行部署研究,这就需要我们对目标进行仿真,采用编程或可视化方法建立机器人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)等系统性实现。
-
作用:
仿真的优点:
- 成本低:实际机器人的成本常常高达几十W,风险大,难以进行实际研究;
- 效率高:强大的仿真软件可以为我们提供大量真实的仿真环境,可以在短时间内提高测试效率和覆盖率
- 安全性:由于在虚拟世界中进行的实验研究,可以避免耗损等安全问题。
仿真的缺点:
- 环境失真:仿真软件的物理引擎无法真实代替现实世界;
- 硬件失真:仿真器构建的是关节驱动器(电机&齿轮箱)、传感器与信号通信的绝对理想情况,目前不支持模拟实际硬件缺陷或者一些临界状态等情形
- 涉及组件:
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流程
① 创建功能包,导入依赖项:
- 自定义名称,创建性功能包(依赖项:urdf、xacro)
- 功能包下新建目录:
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文件可以保存先前组件配置信息:
- 将组件皮遏制保存到
config
目录下:文章来源:https://www.toymoban.com/news/detail-492016.html
- 启动配置添加参数:
<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的入门教程,敬请期待。
文章来源地址https://www.toymoban.com/news/detail-492016.html
到了这里,关于基于ROS的机器人模型建立及3D仿真【物理/机械意义】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!