系列文章目录
文章目录
系列文章目录
文章目录
前言
相机-toc" style="margin-left:0px;">一、RGB相机
1.urdf建模
2.gazebo物理特性
二、深度相机
1.urdf建模
2.gazebo物理特性
三、激光雷达
1.urdf建模
2.gazebo物理特性
四、差速驱动插件及传动机构
1.传动机构
2.差速驱动插件
总结
前言
当我们想在gazebo当模拟一个更逼真的机器人时,光有机器人的外观是远远不够的。真正的机器人通常配备各种传感器,如编码器来估计机器人的位置IMU;用来感知外部环境的摄像头、雷达等,如果我们想在电脑上完全复制一个逼真的传感器,这是非常罕见的,幸运的是gazebo它为我们提供了最常用的插件,用于模拟传感器kinect、激光雷达等,极大地方便了用户在模拟环境中构建机器人。
本文以三种常见且难度中等的传感器仿真为例,介绍了如何gazebo构建自己的传感器模型。
一、RGB相机
1.urdf建模
相机的urdf在前面的文章简要介绍了urdf在相机的建模中,我们简单地把它建模成一个盒子(box),然后给它一些真实的特征。
然后我们用xacro格式建模方法将传感器单独列为文件,然后在主文件中调用。
2.gazebo物理特性
在gazebo颜色显示和在中rviz在上述视觉模型中设置的颜色显示不同"black"颜色显示只能显示在rviz中,因此我们先通过以下代码,设置模型在gazebo中的颜色。
<gazebo reference="${prefix}_link"> <material>Gazebo/Black</material> </gazebo>
根据我们在现实生活中购买的根据我们在现实生活中购买的相机参数填写
下面将我们的相机链接到插件库,实现真正的相机仿真
二、深度相机
1.urdf建模
kinect是ROS常用的深度相机,在gazebo在建模中,我们把它建模成一个盒子,但因为kinect作为微软的品牌,人们配置了模型渲染文件
仍然使用了xacro在主文件中调用文件格式
2.gazebo物理特性
第一部分仍然是根据我们购买的相机参数填充的。事实上,一种流行的建模方法是使用它.sdf文件,比如kinect根据提供的官方教程sdf再进行建模
然后链接到插件库进行更详细的设置
最后附上了gazebo中使用kinect如何教程制作自己sdf模型的教程
三、激光雷达
1.urdf建模
在激光雷达建模部分,我们通过固定关节,将其建模成圆柱体(fixed)连接到机器人上,描述了它的视觉模型、惯性模型以及碰撞模型
2.gazebo物理特性
在官方教程中,说以下参数都是不说自明的,其实根据我们真实的雷达参数进行修改即可,我对它们进行简单解释
其中,这一条如果为真,则在 gpu 激光器的扫描区域内可以看到半透明的激光射线
<visualize>false</visualize>
然后我们将雷达链接到插件库
最后,我们在主文件中,调用我们写好的传感器文件,然后建立关节将他们与我们的主体连接起来即可。
四、差速驱动插件及传动机构
在我们的移动机器人中电机关节往往需要搭配减速器使用,而且通常需要对其进行PID控制,ROS为我们提供了差速驱动插件,以及传动机构的配置
1.传动机构
ROS中的传动机构主要是在urdf文件中,通过transmission标签体现,这一部分其实是属于ros提供的通用硬件接口ros_control,有几种类型的transmission可以使用,如:TransmissionInfo、TransmissionLoader、SimpleTransmission等,我们常用的就是SimpleTransmission,transmission标签分为两部分-joint和actuator。
joint部分主要是针对要设置的关节,hardwareInterface标签指定的是关节空间的接口类型。
actuator部分主要是针对驱动器部分进行设置,mechanicalReduction标签指定关节/执行器传动装置处的机械减速;hardwareInterface标签指定的是关节空间的接口类型。
2.差速驱动插件
差速驱动插件也是通过plugin标签链接到相应的差速驱动库,下面对它的一些参数进行了解释。
总结
本文介绍了ROS仿真中常用的三种传感器-RGB相机、Kinect深度相机、激光雷达的仿真建模方式以及其中参数的含义,最后介绍了SLAM中常见的载体-移动机器人的差速驱动器建模方式,并简单介绍了ros_control硬件接口中关节的传动机构的配置。