You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RViz中显示Gazebo仿真Lidar点云并测量参数?

解决RViz显示Gazebo仿真Lidar点云及距离测量问题

一、先确认基础通信状态

启动Gazebo仿真后,先在终端敲rostopic list,查看是否存在Lidar相关Topic(比如/scan对应2D激光,/points_raw对应3D点云),以及/tf、/tf_static、/robot_description这类机器人状态相关Topic。再用rostopic echo /scan(或对应点云Topic)验证是否有数据输出——如果没有数据,优先排查Gazebo的Lidar插件配置,不要先折腾RViz。

二、让机器人模型在RViz显示

  1. 检查启动Gazebo的launch文件,确保包含robot_state_publisher节点,没有的话补上:
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen">
      <param name="publish_frequency" value="50.0" />
    </node>
    
    这个节点负责发布机器人TF变换和模型描述,是RViz加载模型的核心。
  2. 打开RViz,添加RobotModel组件,将Robot Description设为robot_description,Fixed Frame选择机器人基坐标系(比如base_link)。如果模型未显示,敲rosrun tf tf_echo base_link laser_link检查Lidar与基坐标系的变换是否正常。

三、显示Lidar点云

2D激光雷达(输出/scan)

直接在RViz中添加LaserScan组件,将Topic选为/scan,Fixed Frame选择base_link或Lidar自身坐标系(比如laser_link)即可。

3D激光雷达(输出/points_raw)

添加PointCloud2组件,将Topic设为/points_raw,Fixed Frame同上。如果点云无输出,检查Gazebo的Lidar插件配置,3D激光需使用libgazebo_ros_point_cloud.so插件,配置片段参考:

<plugin name="3d_laser_plugin" filename="libgazebo_ros_point_cloud.so">
  <topicName>/points_raw</topicName>
  <frameName>laser_link</frameName>
  <!-- 扫描范围、频率等参数按需调整 -->
</plugin>

四、测量距离——无需额外编码

RViz自带测量工具,直接点击顶部工具栏的尺子图标(Measure),在3D视图中点击任意两个点,底部状态栏会显示两点间的直线距离,点云的点和模型表面的点都可直接选取测量。

五、编写联合启动Gazebo与RViz的launch文件

替换成自己的包和文件路径即可使用:

<launch>
  <!-- 加载机器人模型(纯URDF可修改command参数) -->
  <param name="robot_description" command="$(find xacro)/xacro --inorder $(find your_package)/urdf/your_robot.xacro" />

  <!-- 发布机器人状态 -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" />

  <!-- 启动Gazebo -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find your_package)/worlds/your_world.world" />
    <arg name="paused" value="false" />
    <arg name="use_sim_time" value="true" /> <!-- 必须开启,保证时间同步 -->
  </include>

  <!-- 在Gazebo中生成机器人 -->
  <node name="spawn_robot" pkg="gazebo_ros" type="spawn_model" args="-urdf -param robot_description -model your_robot -x 0 -y 0 -z 0.1" output="screen" />

  <!-- 启动RViz(可自行保存配置后添加args参数) -->
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find your_package)/rviz/your_config.rviz" output="screen" />
</launch>

常见问题排查

  • 若RViz提示“无[laser_link]到[base_link]的变换”,检查URDF中Lidar的关节是否正确连接到基坐标系,避免拼写错误。
  • 节点启动后无效果,用rosnode list查看节点运行状态,rosnode info /node_name检查节点的订阅/发布情况。

内容的提问来源于stack exchange,提问作者MmVi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:10:43