综合运动控制:kinect深度相机仿真
kinect:感知障碍物图像和距离信息
(1)新建文件kinect.xacro并通过include标签集成到car小车模型文件中
<xacro:include filename="my_sensors_kinect.urdf.xacro" />
(2)编写xacro文件
需要修改的地方主要还是gazebo reference和frame name,修改为作用到哪个连杆的名字
<robot name="my_sensors" xmlns:xacro="http://wiki.ros.org/xacro">
<gazebo reference="kinect link名称">
<sensor type="depth" name="camera">
<always_on>true</always_on>
<update_rate>20.0</update_rate>
<camera>
<horizontal_fov>${60.0*PI/180.0}</horizontal_fov>
<image>
<format>R8G8B8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.05</near>
<far>8.0</far>
</clip>
</camera>
<plugin name="kinect_camera_controller" filename="libgazebo_ros_openni_kinect.so">
<cameraName>camera</cameraName>话题命名空间
<alwaysOn>true</alwaysOn>
<updateRate>10</updateRate>
<imageTopicName>rgb/image_raw</imageTopicName>图像信息采集话题
<depthImageTopicName>depth/image_raw</depthImageTopicName>深度信息采集话题
<pointCloudTopicName>depth/points</pointCloudTopicName>
<cameraInfoTopicName>rgb/camera_info</cameraInfoTopicName>
<depthImageCameraInfoTopicName>depth/camera_info</depthImageCameraInfoTopicName>
<frameName>kinect link名称</frameName>
<baseline>0.1</baseline>
<distortion_k1>0.0</distortion_k1>
<distortion_k2>0.0</distortion_k2>
<distortion_k3>0.0</distortion_k3>
<distortion_t1>0.0</distortion_t1>
<distortion_t2>0.0</distortion_t2>
<pointCloudCutoff>0.4</pointCloudCutoff>
</plugin>
</sensor>
</gazebo>
</robot>
(3)roslaunch启动env.launch(gazebo环境)和sensor.launch(rviz环境)即可看到效果
gazebo中的环境会显示出已经配置过的雷达信号,深度相机信息主要通过rviz查看,和添加普通的camera方法一样,在rviz中添加camera组件
与添加查看普通相机不同的是,此时我们的话题里既有普通相机的话题,也有深度相机的话题,我们在这里选择depth相关话题即可查看深度相机的相关信息。
(4)kinect点云信息显示,在rviz中添加组件pointcloud2并设置topic话题camera/depth/points
这时会发现在rviz中点云图像信息显示时错位,应该在前方的点云信息都跑到了上方,很奇怪的状态。这是因为在kinect中图像数据与点云数据使用了两套坐标系统,且两套坐标系统位姿并不一致。
解决方案:
本来点云使用的是连杆的坐标系,需要修改一下,这里命名为support_depth
<frameName>support_depth</frameName>
由于该坐标系在机器人模型配置文件中并不存在,所以需要在启动rviz的launch文件中手动配置静态坐标变换信息.
注意:这里的args参数分别是xyz位置偏移量,zyx角度偏移量和父级坐标系子级坐标系。
<!--添加support到连杆的坐标变换-->
<node pkg="tf2_ros" type="static_transform_publisher" name="static_transform_publisher" args="0 0 0 -1.57 0 -1.57 /support /support_depth"
保存更改后的相机配置文件和rviz启动的launch文件,重新打开点云插件,即可正常显示点云图像数据如下。