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

如何不使用ROS,通过PX4、Gazebo和C++控制SITL无人机并获取视频流

解决方案

一、无ROS环境下获取Gazebo PX4仿真视频流

PX4官方提供的Gazebo仿真模型默认已集成相机输出能力,无需依赖ROS即可直接读取:

  • 第一步先确认仿真模型配置:找到PX4源码目录下的Tools/simulation/gazebo/sitl_gazebo/models/iris_fpv_cam(或你使用的对应带相机的无人机模型)下的SDF文件,确认libgazebo_camera_plugin.so插件已启用,可根据需求修改配置项:

    若需要本地低延迟读取,配置输出类型为共享内存:<output_type>shmem</output_type>,自定义共享内存键值即可
    若需要跨进程/跨设备读取,配置输出类型为TCP流:<output_type>tcp</output_type>,设置监听端口如5600

  • 第二步启动仿真时指定带相机的模型:执行make px4_sitl gazebo_iris_fpv_cam启动仿真,相机数据会按配置的方式输出
  • 第三步C++端读取数据:共享内存模式下直接通过shm_open系统调用读取对应内存块,转为cv::Mat即可供OpenCV处理;TCP模式下编写简单TCP客户端接收原始帧/H264流解码后使用即可

二、C++替代DroneKit的控制工具

官方推荐使用MAVSDK作为C端无人机控制方案,这是PX4团队维护的原生C MAVLink协议库,功能完全覆盖DroneKit的所有能力:

  • 支持飞控状态读取、解锁/上锁、模式切换、航点规划、位置/速度控制等所有常用控制功能
  • 无冗余依赖,支持C++11及以上版本,可静态编译进你的项目,体积轻量
  • 对接仿真环境时,PX4 SITL默认开放UDP 14540端口用于MAVLink通信,你只需要在代码中初始化MAVSDK连接udp://0.0.0.0:14540即可直接收发控制指令,逻辑和DroneKit完全一致。如果后续部署到实体机,只需要把连接地址改为Jetson Nano和Pixhawk连接的串口设备路径即可,无需修改核心控制逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:15:07