我们可以在ubuntu中利用三维建模进行环境模拟。三维环境模拟有以下优势:1、三维环境模拟可以反复测试场景,收集模拟实验数据,以供后期模型完善;2、三维环境模拟不需要现实中的机器人,方便了没有实体机器人的同志学习测试;3、有一些测试有一定安全性问题,三维环境模拟就没有安全担忧。但三维环境模拟不能完全还原真实环境的各种参量,模拟结果多少存在失真,所以最终还是需要线下实地测试。
我们可用urdf在rviz中搭建三维模型。
首先我们创建新的功能包,只需包以下包:urdf和xacro。
再建三个新的包:config,urdf,launch,再在urdf下建两个文件夹urdf和xacro,
然后我们在urdf/urdf文件夹建一个.urdf格式的文件,代码如下:
<robot name="my_car">
<link name="base_link">
<visual>
<geometry>
<box size="0.5 0.2 0.1" />
</geometry>
</visual>
</link>
</robot>
再在launch文件夹中建立.launch文件,代码如下:
<launch>
<param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo01_helloworld.urdf" />
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_my_car.rviz" />
</launch>
然后我们roslaunch发布即可。
我们打开rviz,添加axes和robotmodel,然后就可以看到一个“板砖”状的机器人了,然后我们可以在file中保存,save config as保存即可。
之后直接调用launch文件即可。
--------------------------------------------------------------------------------
对于launch文件中的参数在笔者之前的文章有提及,我们初步讨论.urdf文件的各项标签
<robot>标签name用于机器人的命名,类似于话题命名;
<link>用于描述机器人某个部位的外观和物理属性,比如机器人底座、轮子、激光雷达等,每一个部件对应一个link用于描述其形状、尺寸、颜色、惯性矩阵、碰撞系数等属性。name属性用于命名,有三个子级标签:
1、visual 用于描述外观(数据可视)
geometry 形状
1.box,有属性size="x.x y.y z.z"(长宽高)
2.cylinder ,有属性radius=r(半径)和length=h(高度)
3.sphere ,有属性radius=r(半径)
4.mesh,有属性filename=资源路径(格式:package://<package>/<path>/<file>)
origin 设置偏移量与倾斜弧度
xyz=x偏移 y偏移 z偏移
rpy=x翻滚 y俯仰 z偏航 (单位是弧度)
material 设置材料属性(颜色)
name
color 有属性 rgba=红绿蓝权重值(各自权重数值)与透明度(取[0,1])
collision 碰撞属性
inertial 惯性属性