别再折腾了!Ubuntu 20.04下用鱼香ROS一键脚本搞定ROS1、PX4、MAVROS和QGC(附完整测试流程)

张开发
2026/4/24 23:34:14 15 分钟阅读

分享文章

别再折腾了!Ubuntu 20.04下用鱼香ROS一键脚本搞定ROS1、PX4、MAVROS和QGC(附完整测试流程)
Ubuntu 20.04无人机开发环境极简部署指南从ROS到PX4全链路验证在无人机仿真开发领域环境配置一直是新手面临的第一个挑战。传统安装方法需要逐个组件手动配置不仅耗时耗力还容易因版本兼容性问题导致失败。本文将介绍一种基于社区成熟工具链的一站式解决方案让开发者在30分钟内完成从ROS基础环境到PX4飞控、MAVROS中间件和QGC地面站的完整部署。1. 系统准备与ROS极简安装Ubuntu 20.04 LTS作为长期支持版本为机器人开发提供了稳定的基础环境。我们推荐使用官方镜像进行全新安装确保系统环境干净。安装完成后首先需要更新软件源sudo apt update sudo apt upgrade -y鱼香ROS一键脚本是社区公认的高效工具它自动化解决了ROS安装过程中的依赖问题。执行以下命令即可启动安装向导wget http://fishros.com/install -O fishros . fishros在交互界面中选择安装ROS推荐选择ROS Noetic按照提示完成基础依赖安装选择安装桌面完整版Desktop-Full安装完成后验证ROS环境是否正常工作# 终端1启动ROS核心 roscore # 终端2启动小海龟仿真器 rosrun turtlesim turtlesim_node # 终端3启动键盘控制 rosrun turtlesim turtle_teleop_key提示如果遇到权限问题可以尝试为当前用户添加dialout组sudo usermod -a -G dialout $USER2. PX4飞控环境快速部署PX4作为开源飞控系统的代表其官方推荐通过源码编译安装。传统方法需要处理大量依赖关系而以下优化流程可显著简化安装过程。首先安装基础编译工具链sudo apt install git python3-pip -y python3 -m pip install --upgrade pip使用国内镜像源加速PX4源码下载避免直接克隆GitHub主仓库git clone https://gitee.com/mirrors/PX4-Autopilot.git --recursive cd PX4-AutopilotPX4提供了自动化安装脚本但需要特别注意依赖项的完整性bash ./Tools/setup/ubuntu.sh --fix-missing安装完成后立即验证PX4 Gazebo仿真环境make px4_sitl_default gazebo在出现的Gazebo界面中可以通过MAVLink控制台测试基本指令commander takeoff commander land常见问题解决方案问题现象解决方法原理说明子模块更新失败git submodule update --init --recursive确保所有依赖子模块完整Gazebo黑屏检查显卡驱动安装libgazebo113D渲染需要正确显卡支持编译内存不足添加交换空间sudo fallocate -l 2G /swapfile缓解内存压力3. 环境变量配置与系统集成ROS与PX4的协同工作需要正确的环境变量配置。传统方法需要手动编辑.bashrc文件而我们可以采用模块化管理方式创建独立的配置文件~/px4_ros_env.sh内容如下# PX4 Gazebo环境 source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash \ ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default # ROS包路径扩展 export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4-Autopilot export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic然后在.bashrc末尾添加# 加载PX4-ROS集成环境 [ -f ~/px4_ros_env.sh ] source ~/px4_ros_env.sh这种模块化配置的优势在于便于版本控制和备份可以快速切换不同版本的环境配置避免直接污染主配置文件应用配置并验证source ~/.bashrc echo $ROS_PACKAGE_PATH | grep PX4-Autopilot # 应能看到PX4路径4. MAVROS安装与连接测试MAVROS是ROS与MAVLink协议之间的桥梁安装时需要注意版本匹配sudo apt install ros-noetic-mavros ros-noetic-mavros-extras -y sudo /opt/ros/noetic/lib/mavros/install_geographiclib_datasets.sh验证MAVROS与PX4的软件在环(SITL)连接# 终端1启动PX4仿真 roslaunch px4 mavros_posix_sitl.launch # 终端2检查连接状态 rostopic echo /mavros/state | grep connected当看到connected: True输出时表示MAVROS已成功连接到PX4仿真器。此时可以尝试发送基础指令# 解锁飞控 rosservice call /mavros/cmd/arming True # 设置飞行模式 rosservice call /mavros/set_mode base_mode: 0 custom_mode: OFFBOARD常见连接问题排查指南权限问题sudo usermod -a -G dialout $USER sudo reboot设备节点冲突sudo apt remove modemmanager -yMAVLink版本不匹配 在QGC参数设置中检查MAV_PROTO_VER是否为2.05. QGroundControl地面站部署与集成QGC作为PX4生态的标准地面站提供了直观的飞行监控界面。Ubuntu下推荐使用AppImage格式无需安装即可运行# 安装必要依赖 sudo apt install libfuse2 libqt5gui5 gstreamer1.0-plugins-bad -y # 下载最新稳定版 wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage -O ~/QGroundControl.AppImage chmod x ~/QGroundControl.AppImage创建桌面快捷方式~/.local/share/applications/qgc.desktop[Desktop Entry] Version1.0 TypeApplication NameQGroundControl Exec/home/$USER/QGroundControl.AppImage Iconqgc CategoriesDevelopment;启动QGC后通过以下步骤验证端到端功能选择Vehicle Setup → Firmware连接PX4 SITL默认UDP端口14550在Parameters中校准传感器切换到Flight View观察无人机状态高级集成技巧使用mavlink-router实现多地面站连接配置视频流gst-launch-1.0 udpsrc port5600 ! application/x-rtp ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink启用日志记录ulogger -d ~/px4_logs6. 全系统功能验证流程为确保所有组件协同工作建议按照以下顺序进行端到端测试基础ROS验证roscore rosrun turtlesim turtlesim_nodePX4 Gazebo仿真cd ~/PX4-Autopilot make px4_sitl_default gazeboMAVROS连接测试roslaunch mavros px4.launch rostopic echo /mavros/stateQGC集成验证启动QGC并连接SITL检查参数同步状态发送起飞指令观察Gazebo响应高级功能测试# 发布目标位置 rostopic pub /mavros/setpoint_position/local geometry_msgs/PoseStamped \ header: seq: 0 stamp: {secs: 0, nsecs: 0} frame_id: map pose: position: {x: 5.0, y: 0.0, z: 3.0} orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0} -r 10性能优化建议为Gazebo设置显卡加速export LIBGL_ALWAYS_SOFTWARE0调整PX4 SITL线程数make px4_sitl_default gazebo PX4_SIM_MODEL_THREADS2使用性能分析工具top -H和rosrun rqt_runtime_monitor rqt_runtime_monitor

更多文章