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

运行gazebo_iris_opt_flow时PX4无人机相机无ROS话题输出问题

问题排查与解决方案

核心问题定位

你的操作流程存在两个关键错误,导致相机话题未发布:

  1. 仿真启动命令重复,创建了多个冲突的SITL实例
  2. gazebo_iris_opt_flow模型默认未配置RGB相机的ROS话题发布

具体修复步骤

1. 修正仿真启动流程

当前先执行make px4_sitl_default gazebo_iris_opt_flow再执行roslaunch px4 posix_sitl.launch的操作,会启动两个独立的SITL实例,导致Mavros连接的实例与Gazebo显示实例不一致,且环境变量配置被覆盖。正确流程如下:

  • 先清理残留进程:
    killall px4 gzserver gzclient
    
  • 切换到PX4源码目录,执行单条命令启动仿真并配置ROS环境:
    cd ~/PX4-Autopilot # 替换为你的PX4源码路径
    make px4_sitl_default gazebo_iris_opt_flow
    source ~/catkin_ws/devel/setup.bash
    source Tools/simulation/gazebo/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
    export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd):$(pwd)/Tools/simulation/gazebo/sitl_gazebo
    
    注意:不要重复执行roslaunch px4 posix_sitl.launch,make命令已完成SITL与Gazebo的启动。

2. 启用RGB相机话题发布

gazebo_iris_opt_flow模型默认仅加载光流相机,未配置RGB相机的ROS话题输出,需修改模型配置文件:

  • 打开模型配置文件:
    nano Tools/simulation/gazebo/sitl_gazebo/models/iris_opt_flow/iris_opt_flow.sdf
    
  • 在光流相机配置块(<sensor name="camera" type="camera">)后,添加以下RGB相机配置:
    <sensor name="rgb_camera" type="camera">
      <pose>0.05 0 0.1 0 0 0</pose>
      <camera name="camera">
        <horizontal_fov>1.047</horizontal_fov>
        <image>
          <width>640</width>
          <height>480</height>
          <format>R8G8B8</format>
        </image>
        <clip>
          <near>0.05</near>
          <far>100</far>
        </clip>
      </camera>
      <plugin name="camera_controller" filename="libgazebo_ros_camera.so">
        <ros>
          <namespace>iris</namespace>
          <remapping>image_raw:=camera/rgb/image_raw</remapping>
          <remapping>camera_info:=camera/rgb/camera_info</remapping>
        </ros>
        <update_rate>30</update_rate>
      </plugin>
    </sensor>
    
  • 保存文件后重启仿真,执行rostopic list即可看到/iris/camera/rgb/image_raw话题。

3. 验证代码与话题兼容性

  • 用rostopic echo /iris/camera/rgb/image_raw确认话题有数据输出
  • 检查Python代码中的话题名称是否为/iris/camera/rgb/image_raw(ROS话题为全局命名空间,需带开头斜杠,避免受节点命名空间影响)
  • 确认代码订阅的消息类型为sensor_msgs/Image,回调函数能正确解析图像数据

额外注意事项

  • Mavros启动命令需在仿真启动后执行,确保连接正确的SITL实例:
    roslaunch mavros px4.launch fcu_url:="udp://:14540@192.168.1.36:14557"
    
  • 若仍无法看到话题,检查Gazebo终端输出是否有相机插件加载错误(如找不到libgazebo_ros_camera.so),可安装对应版本的Gazebo ROS包:
    sudo apt install ros-noetic-gazebo-ros-pkgs # 替换为你的ROS版本,如melodic/rolling
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:10:51