ROS综合运动控制:kinect深度相机仿真

本文介绍了如何在ROS环境中使用Kinect作为深度相机进行仿真,包括在xacro文件中集成Kinect,配置gazebo参考和帧名,以及在rviz中查看和处理点云信息。在遇到点云图像显示错位的问题时,通过修改frameName和添加静态坐标变换解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

综合运动控制: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文件,重新打开点云插件,即可正常显示点云图像数据如下。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝士就是力量蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值