ROS Noetic搭建PX4仿真环境

参考链接:

https://blog.csdn.net/HuangChen666/article/details/128754106

https://www.yuque.com/xtdrone/manual_cn/basic_config_13

安装mavros

MAVROS是ROS(机器人操作系统)下的开源功能包,核心作用是搭建ROS与MAVLink协议设备(如PX4飞控)之间的通信桥梁,适配ROS1与ROS2版本(含MAVROS2)。

它可实现ROS话题、服务与飞控指令、状态数据的双向互通,既能向PX4飞控下发起飞、悬停、返航等控制指令,也能实时订阅GPS位置、飞行姿态、电池状态等遥测数据。

作为无人机智能化开发的核心工具,MAVROS广泛应用于避障算法、目标追踪、路径规划等场景,也是Offboard模式调试的关键支撑,常与PX4飞控配合使用,构成无人机开发的标准架构。

bash 复制代码
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras  # for ros-noetic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

安装PX4

编译安装

Github下载

复制代码
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2
git submodule update --init --recursive
make px4_sitl_default gazebo

可下载上述安装包

复制代码
cd PX4_Firmware
make px4_sitl_default gazebo

编译完成后,会弹出Gazebo界面,将其关闭即可。

修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。

我用的是zsh

所以添加这些到~/.zshrc

bash 复制代码
# PX4 Gazebo simulation environment
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

改变飞机模型

搭载不同传感器

bash 复制代码
 Tools/sitl_gazebo/models/

修改launch文件的sdf属性

``

bash 复制代码
echo "commander takeoff" | python3 Tools/mavlink_shell.py 127.0.0.1:14550
echo "commander land" | python3 Tools/mavlink_shell.py 127.0.0.1:14550
bash 复制代码
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
复制代码
roslaunch px4 outdoor1.launch

需要下再好gazebo的模型不然运行时会加载不出来,保存到~/.gazebo/models目录下

安装XTDrone

XTDrone是一款基于ROS、Gazebo与PX4开发的开源通用无人机仿真平台,可看作无人机开发的"虚拟沙盒",核心用于无人机算法调试、功能验证与开发练习,无需真机即可完成各类测试,安全且高效。

它支持多旋翼、固定翼、VTOL等多种机型,还可适配无人车、无人船、机械臂等多种无人系统,能实现多机编队、自主导航、SLAM、目标追踪等多种场景的仿真。其核心优势是模块化设计,可灵活修改仿真模型与参数,且在平台上验证通过的算法,能方便地部署到真实无人机上。

XTDrone与PX4飞控配合紧密,可通过相关通信工具实现ROS与PX4飞控的通信,构建起"仿真环境-飞控"的完整开发架构,是无人机智能化开发与调试的重要工具。

安装QGC

QGroundControl (QGC) 是一款开源、跨平台、专业级 的无人机 / 无人系统地面控制站(GCS),基于 MAVLink 协议,为 PX4、ArduPilot 等主流飞控提供全链路控制、任务规划与数据分析能力。

完全适配 PX4 仿真。

官网: https://qgroundcontrol.com/

  1. On the command prompt enter:

    复制代码
    sudo usermod -a -G dialout $USER
    sudo apt-get remove modemmanager -y
    sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
    sudo apt install libfuse2 -y
    sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y
  2. Logout and login again to enable the change to user permissions.

To install QGroundControl:

  1. Download QGroundControl-x86_64.AppImage.

  2. Install (and run) using the terminal commands:

    复制代码
    chmod +x ./QGroundControl-x86_64.AppImage
    ./QGroundControl-x86_64.AppImage  (or double click)

安装版本为v3.5.5版本,参考github链接 : https://github.com/mavlink/qgroundcontrol/releases

安装过程用Claude code解决

在设置中可打开虚拟按钮操控

左摇杆为升降高度,右摇杆为前后左右

安装Lightning-LM

Lightning-Speed Lidar Localization and Mapping

Lightning-LM 是一个完整的激光建图+定位模块。

Lightning-LM特性:

  1. done\] 完整的3D Lidar SLAM,快速的LIO前端(AA-FasterLIO),标配

  2. done\] 实时回环检测,标配,选上的话会进行后端回环检测并闭环

  3. done\] 地图分区动态加载方案,适用大场景

  4. done\] 高频率IMU平滑输出,标配,100Hz

  5. 车辆里程计输入,选配 (TODO)
  6. done\] 轻量优化库miao以及增量式优化(来自g2o,但更轻更快,支持增量优化,不需要重新构建优化模型),标配,在回环、定位中均有用到

  7. done\] 基于外推器和平滑器的高频率输出,平滑因子可调

bash 复制代码
git clone https://github.com/gaoxiang12/lightning-lm.git

因为此算法适配的是ROS2,需要改为ROS1 noteic

此步骤采用CC来辅助实现

采用NCLT数据集测试

离线建图指令为

bash 复制代码
rosrun lightning run_slam_offline --config /home/ychooo/ROS_WS/Lightning_ws/src/lightning-lm/config/default_nclt.yaml --input_bag /media/ychooo/KINGIDISK/Datasets/nclt/20130110.bag

已成功运行

结束后会自动保存至data/new_map目录下

原作者提供了三种msg类型: PointCloud, PointCloud2 和 CustomMsg,因此可以兼容A-LOAM,Fast-LIO和R3live等slam算法。

相关推荐
Sinsa_SI13 小时前
2026算法应用主题赛初赛-小学4-6组(c++)试卷(含答案+详细解析)
java·c++·算法
Zhang~Ling13 小时前
C++继承机制详解上:概念、语法、作用域与转换规则
开发语言·c++
曦夜日长13 小时前
Linux系统篇,开发工具(六):文件的编译配置、调试的理解、cgdb和gdb的操作使用
java·linux·php
wengqidaifeng13 小时前
C++从菜鸟到强手:2.类和对象(中)—— 拷贝、赋值与运算符重载
开发语言·c++
相思难忘成疾13 小时前
Linux 网络服务综合实战:双机搭建 NFS+DNS+LNMP 博客平台
linux·运维·服务器·ssh·rhce
英辰朗迪AI获客14 小时前
Claude 官方插件生态落地应用指南
java·linux·运维
炘爚14 小时前
智能指针:共享型shared_ptr的底层逻辑
c++·智能指针
林熙蕾LXL14 小时前
线程池介绍
linux
枳实-叶14 小时前
【Linux驱动开发】第13天:Linux内核设备树解析 OF API 超详细全解
linux·运维·驱动开发