Ubuntu搭建PX4无人机仿真环境 前言 本教程基于 ROS2 ,在搭建之前,需要把 ROS2、QGC 等基础环境安装配置完成。 小白必看 : 本次安装是以 px4 v1.14.0 为例,不适用之前的 px4 版本。(支持 Ubuntu 22.04 ROS2 Humble PX4v1.14.0+,Ubuntu 24.04 ROS2 Jazzy PX4v1.16.0+) 我的配置如下: 虚拟机 Ubuntu 22.04 (运行内存 4G、硬盘内存 80G) 、ROS2 Humble 、QGC v4.4.4 禁止无脑复制:首先大部分命令都有先后顺序,就是要上一个命令执行成下一个才能执行成功,对于不熟悉的命令可以直接复制问 AI 这样还能顺带学习学习;其次在有些情况下多个命令一起执行会出现奇怪的错误,而且有些命令旁边有注释,有时候复制上去可能也会出现错误。 建议使用虚拟机:虽然虚拟机得性能有限,但是对于新手入门阶段是完全够用了,后续大型仿真再用双系统也比较熟悉了。而且虚拟机有一个快照功能,可以保存当前虚拟机的状态 (相当于存档),这样如果后面出了问题要重新搭建环境,可以用快照回到上一个状态,这样就不用重头开始(我一般是安装好 ROS 拍一个、安装好 mavros 拍一个…)。 关于网络:由于一些懂得都得的原因,再加上每个人的网络环境不同,我们下载 GitHub上的资源、安装 Python 包、apt 安装包等会时快时慢,所以大家会换源,比如一开始的换 apt 软件安装源等。但是下载资源一定要耐心,如果是网络问题,可以尝试多执行几次命令,而且有些我也给了相应的解决方案。 1. 准备 1.1 下载源码 方式一: 从 Github 上下载,但是比较考验个人网速 sudo apt install git git clone https://github.com/PX4/PX4-Autopilot.git # 下载源码 mv PX4-Autopilot PX4_Firmware # 更改目录名 cd PX4_Firmware git checkout v1.14.0 # 切换版本 git submodule update --init --recursive # 更新下载子模块 方式二: 从提供的网盘里下,或者从QQ群(961297255)里下载 链接: 百度网盘 请输入提取码 提取码: rbrk 下载后解压,然后执行下面命令: cd PX4_Firmware wget https://gitee.com/tyx6/mytools/raw/main/px4/set_executable.sh chmod +x set_executable.sh ./set_executable.sh 1.2 安装依赖 sudo apt install ros-dev-tools cd ~/PX4_Firmware/Tools/setup 修改文件并备份 (就把 pip 安装源换成了清华源),这一步是可做可不做,如果觉得python 包下载太慢了,可以试试 sed -i.bak 's|\/requirements.txt|\/requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple|' ./ubuntu.sh chmod +x ubuntu.sh ./ubuntu.sh --no-nuttx --no-sim-tools # 这是官方提供的脚本 有两个可选参数 # --no-sim-tools 不安装仿真环境 # --no-nuttx 不安装交叉编译环境 #(如果需要自己编译飞控固件,烧录到飞控中,那就需要交叉编译环境) # 脚本执行时间,跟个人网络有关,可能需要一段时间 重启电脑 1.3 安装 Gazebo Gazebo是一款强大的3D仿真软件,主要用于机器人学的研究和开发。它提供了高度逼真的物理模拟环境,包括动力学、碰撞检测、传感器模型以及与真实世界相似的物理属性如重力、摩擦力等。Gazebo可以模拟各种类型的机器人,从移动机器人、无人机到机械臂,甚至可以模拟整个城市环境。 根据上图说明,Gazebo 官方做了更新将之前的 Gazebo Ignition 命名为 Gazebo,以前的 Gazebo 现在叫 Gazebo Classic ,而 Ubuntu 22.04 及以后的版本就支持 Gazebo (Gazebo Ignition) 。 因为几年前官方对 Gazebo 进行了重大架构变更,然后将变更后的版本叫 Gazebo Ignition,旧的仍叫 Gazebo。后面Gazebo Ignition 逐渐成熟并经过使用验证,所以他结束了旧的 Gazebo ( Gazebo 11 是 Gazebo Classic 的最后一个版本,支持到 2025 年 ),并重新对它们命了名。 cd ~/PX4_Firmware/Tools/setup ./ubuntu.sh --no-nuttx # 这一步会安装仿真环境,包括 gazebo # 脚本执行时间,跟个人网络有关,可能需要一段时间 再运行一下 gazebo : gz sim 2. 安装 Micro XRCE-DDS Agent 在 ROS2 中 PX4 使用 uXRCE-DDS 中间件来允许在配套计算机上发布和订阅 uORB 消息,就像它们是 ROS2 话题一样。这提供了 PX4 和 ROS2 之间快速可靠的集成,并使 ROS2 应用程序更容易获取车辆信息和发送命令,如上图所示。 这应该跟 ROS2 将中间件改为 DDS 有关,但是官方又说明了在 ROS2 中仍可以使用 MAVROS,可能官方觉得在 ROS2 中 Micro XRCE-DDS Agent 更好用 ,也可能是因为 MAVLink 是外部通信协议,uORB 是内部通信协议。 注:如果想用 Mavros 请参考这篇文章 ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装(适用于ROS1、ROS2)-CSDN博客 使用方法跟 ROS1 类似,这里不做描述。 Micro XRCE-DDS Agent 与 MAVROS 的对比(来自豆包AI,仅供参考) MAVROS 是 ROS(机器人操作系统)生态中连接 MAVLink 协议设备(如 PX4、ArduPilot 飞控)的主流工具,本质是 ROS 与 MAVLink 的桥梁。二者的核心差异体现在如下方面: 维度 Micro XRCE-DDS Agent MAVROS 核心定位 资源受限设备与 DDS 分布式网络的通信代理,支持多设备协同 ROS 与 MAVLink 设备(如飞控)的通信桥梁,专注无人机控制 生态兼容性 兼容 DDS 生态(如 Fast DDS、Cyclone DDS),可与非 ROS 系统集成 强依赖 ROS 生态,仅支持 ROS 节点与 MAVLink 设备交互 资源占用 客户端(Client)极轻量(适合 MCU 等嵌入式设备),Agent 本身资源消耗中等 依赖 ROS 节点和进程,资源占用较高(不适合极简嵌入式环境) 灵活性 支持自定义数据类型,可灵活扩展消息结构,适应复杂分布式场景 消息类型固定为 MAVLink 标准消息,扩展需修改协议或自定义消息 实时性 原生支持实时性配置(通过 DDS QoS),适合低延迟场景 实时性依赖 ROS 调度,默认配置下实时性中等 适用场景 无人机集群协同、多传感器分布式融合、跨平台设备互联 单无人机与 ROS 系统的通信(如地面站控制、数据日志、任务规划) 优点 1. 分布式架构,支持多设备协同; 2. 轻量级客户端适合嵌入式; 3. 可自定义消息,灵活性高; 4. 强实时性与 QoS 保障 1. 无缝集成 ROS 生态,开发便捷; 2. 成熟稳定,支持 MAVLink 全功能(控制、参数、日志等); 3. 社区活跃,问题易解决 缺点 1. 学习成本高(需理解 DDS 概念),目前资料相比于mavros少很多 ; 2. 与 ROS 集成需额外适配; 3. 对单设备简单通信场景略显复杂 1. 依赖 ROS,非 ROS 环境下使用不便,但非ROS环境也有其他基于mavlink的库可以使用 ; 2. 分布式多设备协同能力弱; 3. 资源占用较高,不适合极简嵌入式 下载源码: git clone -b v2.4.3 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git 编译: cd Micro-XRCE-DDS-Agent mkdir build cd build cmake .. make # make 的时候还会下载代码,跟个人网速有有关,大概要10-20分钟 安装: sudo make install sudo ldconfig /usr/local/lib/ # 更新动态链接器的缓存 3. 编译 cd ~/PX4_Firmware make px4_sitl gz_x500 # 这步可能有点慢 出现这个表示编译成功 错误 :如果在虚拟机中可能遇到下面错误,这是由于在虚拟机设置中开启了 3D 图形加速,导致系统的 OpenGL 版本降低。 参考这个 Issue 中的解决方法,降低仿真使用的渲染引擎的版本 修改处大概在 73 行(PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/px4-rc.simulator): sed -i 's/${gz_command} ${gz_sub_command} -g &/${gz_command} ${gz_sub_command} -g --render-engine ogre \&/' ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/px4-rc.simulator 错误 :如果编译过程中出现类似下面错误,应该是 gz_bridge 启动超时 INFO [gz_bridge] world: default, model name: x500_0, simulation model: x500 ERROR [gz_bridge] Service call timed out ERROR [gz_bridge] Task start failed (-1) ERROR [init] gz_bridge failed to start ERROR [px4] Startup script returned with return value: 256 参考下面链接中给出的解决方法 make px4_sitl gz_x500出错 - 哔哩哔哩 然后,再重新编译 4. 通信 打开一个终端,启动 MicroXRCEAgent: MicroXRCEAgent udp4 -p 8888 打开另一个终端,启动仿真: cd ~/PX4_Firmware make px4_sitl gz_x500 都启动后,可以看到通信成功 5. offboard 测试 创建工作空间: mkdir -p ~/ros2_ws/src 下载源码: cd ~/ros2_ws/src git clone https://github.com/PX4/px4_msgs.git git clone https://github.com/PX4/px4_ros_com.git 编译: cd ~/ros2_ws colcon build 更新环境: echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc source ~/.bashrc #使环境生效 测试: 先启动 QGC 地面站,然后执行下面命令,不然有可能无法起飞 终端一,启动 MicroXRCEAgent: MicroXRCEAgent udp4 -p 8888 终端二,启动仿真: cd ~/PX4_Firmware make px4_sitl gz_x500 终端三,启动官方 offboard 案例(上升5米): ros2 run px4_ros_com offboard_control 注:如果过了一段时间,无人机无法 offboard 起飞,程序都正常启动,这时可以尝试下面命令 cd ~/ros2_ws/src rm -f ./px4_msgs/msg/*.msg cp ~/PX4_Firmware/msg/*.msg ./px4_msgs/msg/ # rm -f ./px4_msgs/srv/*.srv # v1.15.0 之后 # cp ~/PX4_Firmware/srv/*.srv ./px4_msgs/srv/ # v1.15.0 之后 # cp ~/PX4_Firmware/msg/versioned/*.msg ./px4_msgs/msg/ # v1.16.0 之后 然后重新编译 source /opt/ros/humble/setup.bash cd ~/ros2_ws colcon build 编译成功后,记得 source 一下,再重新offboard测试 到这 PX4 无人机基本仿真环境就搭建完成了,大家可以基于此来拓展自己的仿真。 参考 PX4 ROS 2 User Guide PX4 documentation uXRCE-DDS PX4 Ubuntu Development Environment a-new-era-for-gazebo Unable to ros2 topic echo specific topics - PX4 Autopilot - Discussion Forum 如有其他问题,或者发现文章有错误,请在评论区留言 Keep learning! 1 个帖子 - 1 位参与者 阅读完整话题
Ubuntu搭建PX4无人机仿真环境 前言 本教程基于 ROS1 ,在搭建之前,必须把 ROS、MAVROS、QGC 等基础环境安装配置完成。如果没有配置完成,大家可以参考我之前的教程配置。 小白必看 : 本次安装是以 PX4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、 ROS1 Melodic 、 QGC v4.2.6 ( Ubuntu 20.04 、ROS1 Noetic 、PX4 v1.13.2 同样适用;Ubuntu 20.04 、ROS1 Noetic 、PX4 v1.14.0及以上也同样适用 ) 禁止无脑复制:首先大部分命令都有先后顺序,就是要上一个命令执行成下一个才能执行成功,对于不熟悉的命令可以直接复制问 AI 这样还能顺带学习学习;其次在有些情况下多个命令一起执行会出现奇怪的错误,而且有些命令旁边有注释,有时候复制上去可能也会出现错误。 建议使用虚拟机:虽然虚拟机得性能有限,但是对于新手入门阶段是完全够用了,后续大型仿真再用双系统也比较熟悉了。而且虚拟机有一个快照功能,可以保存当前虚拟机的状态 (相当于存档),这样如果后面出了问题要重新搭建环境,可以用快照回到上一个状态,这样就不用重头开始(我一般是安装好 ROS 拍一个、安装好 mavros 拍一个…)。 关于网络:由于一些懂得都得的原因,再加上每个人的网络环境不同,我们下载 GitHub上的资源、安装 Python 包、apt 安装包等会时快时慢,所以大家会换源,比如一开始的换 apt 软件安装源等。但是下载资源一定要耐心,如果是网络问题,可以尝试多执行几次命令,而且有些我也给了相应的解决方案。 1. 准备 1.1 下载源码 方式一: 从 Github 上下载,但是比较考验个人网速 sudo apt install git git clone https://github.com/PX4/PX4-Autopilot.git # 下载源码 mv PX4-Autopilot PX4_Firmware # 更改目录名 cd PX4_Firmware git checkout v1.13.2 # 切换版本 git submodule update --init --recursive # 更新下载子模块 方式二: 从提供的网盘里下,或者从QQ群(961297255)里下载 链接: 百度网盘 请输入提取码 提取码: krb5 下载后解压,然后执行下面命令: cd PX4_Firmware wget https://gitee.com/tyx6/mytools/raw/main/px4/set_executable.sh chmod +x set_executable.sh ./set_executable.sh 1.2 安装依赖 cd ~/PX4_Firmware/Tools/setup 修改文件 (就修改了一个 python 包版本和把 pip 安装源换成了清华源),这一步是可做可不做,如果觉得python 包下载太慢了,可以试试 sed -i.bak 's/empy>=3.3/empy==3.3.4/' ./requirements.txt sed -i.bak 's|\/requirements.txt|\/requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple|' ./ubuntu.sh chmod +x ubuntu.sh ./ubuntu.sh --no-nuttx --no-sim-tools # 这是官方提供的脚本 有两个可选参数 # --no-sim-tools 不安装仿真环境 # --no-nuttx 不安装交叉编译环境 #(如果需要自己编译飞控固件,烧录到飞控中,那就需要交叉编译环境) # 脚本执行时间,跟个人网络有关,可能需要一段时间 重启 Ubuntu 1.3 安装 Gazebo Gazebo是一款强大的3D仿真软件,主要用于机器人学的研究和开发。它提供了高度逼真的物理模拟环境,包括动力学、碰撞检测、传感器模型以及与真实世界相似的物理属性如重力、摩擦力等。Gazebo可以模拟各种类型的机器人,从移动机器人、无人机到机械臂,甚至可以模拟整个城市环境。 (由于Gazebo版本变化,现在也叫 Gazebo Classic) 注: 使用之前要检查是否已经安装了 gazebo ,建议使用 官方推荐的gazebo版本 : gazebo --version 如果出现 上图内容 ,说明没有安装,如果出现了 gazebo的版本信息 说明已经安装了,要卸载,命令如下: sudo apt-get remove gazebo* sudo apt-get remove libgazebo* sudo apt-get remove ros-$ROS_DISTRO-gazebo* 卸载完后,开始安装**(Ubuntu 18 会安装 gazebo 9.19,Ubuntu 20 会安装 gazebo 11.15.1)**: cd ~/PX4_Firmware/Tools/setup ./ubuntu.sh --no-nuttx # 这一步会安装仿真环境,包括gazebo # 脚本执行时间,跟个人网络有关,可能需要一段时间 sudo apt-get install ros-$ROS_DISTRO-gazebo-ros-pkgs ros-$ROS_DISTRO-gazebo-ros-control sudo apt update && sudo apt upgrade 重启 Ubuntu ,之后测试一下gazebo gazebo --version 再运行一下 gazebo : gazebo 如果是在虚拟机上,可能出现上图错误,输入以下命令: echo "export SVGA_VGPU10=0" >> ~/.bashrc source ~/.bashrc 重新运行 gazebo 出现类似下图,表示运行成功: 注: 运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久,所以我们可以先下载到本地。 git clone https://gitee.com/tyx6/gazebo_models.git # 检测文件夹 ~/.gazebo/models 是否存在,如果不存在就创建文件夹 if [ ! -d "~/.gazebo/models" ]; then mkdir -p ~/.gazebo/models ;fi mv ./gazebo_models/* ~/.gazebo/models/ 或者也可以用下面提供的 ZIP 压缩包,将该压缩包里的模型文件放在 ~/.gazebo/models/ 路径下,然后可以看到很多模型文件。 如果下载慢,可以从网盘里下,或者从QQ群(961297255)里下载 链接: 百度网盘 请输入提取码 提取码:ud28 2. 编译 cd ~/PX4_Firmware make px4_sitl_default gazebo # 这步可能有点慢 出现类似下图,表示编译成功 注:如果运行后终端有下图报错,这个不影响仿真,不用管也行。这是因为 gazebo 会检查 models 文件夹下是否有 model.config 文件,但是 .git 文件夹不属于 model 文件,那自然也不会有 model.config 文件。如果觉得难受就从其他model.config文件复制修改一个过来,或者删掉 .git 文件夹。 3. 配置环境 将下面语句添加到 ~/.bashrc(此文件在主目录下,是个隐藏文件) 文件中(前两个source顺序不能颠倒,路径要根据自己的实际路径修改,如果一直按照我的步骤来,应该是不用修改) gedit ~/.bashrc # 打开文件 source ~/catkin_ws/devel/setup.bash # 可选 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 v1.14 source ~/catkin_ws/devel/setup.bash # 可选 source ~/PX4_Firmware/Tools/simulation/gazebo-classic/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/simulation/gazebo-classic/sitl_gazebo-classic 注: 为了方便大家,我做了一个自动添加环境的脚本,效果与手动添加等同,只要有一个成功就行。 首先下载脚本,然后将脚本放入你的 PX4 源码目录下,再执行(以我的为例) cd ~/PX4_Firmware wget https://gitee.com/tyx6/mytools/raw/main/px4/setenv.sh # 添加可执行权限 chmod +x setenv.sh ./setenv.sh 执行完后如下所示 再运行(最好重启一下 Ubuntu ): source ~/.bashrc 关掉终端,再次打开,会像下图一样: 4. 测试 在终端输入下面命令: roslaunch px4 mavros_posix_sitl.launch 注: 有时启动Gazebo会出现奇怪的报错,这时可以通过 killall -9 gzclient 和 killall -9 gzserver 彻底关闭Gazebo,再启动roslaunch尝试解决,或通过重启电脑尝试解决。 打开另一个终端,运行下面命令,查看MAVROS与仿真无人机通信状况。 若connected: True,则通信成功,如果是false,一般是因为 .bashrc 里的路径写的不对,请仔细检查。 rostopic echo /mavros/state | grep connected # 只查看 connected 信息 rostopic echo /mavros/state # 只查看全部信息 到这 PX4 无人机基本仿真环境就搭建完成了,大家可以基于此来拓展自己的仿真。 参考 仿真平台基础配置(对应PX4 1.13版) (yuque.com) PX4 documentation 2 个帖子 - 2 位参与者 阅读完整话题
Ubuntu安装QGC地面站 前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。本教程以 Ubuntu 18.04,QGC v4.2.6 为例,但也适用于其他 Ubuntu 发行版。QGC 版本可以自行选择,如果发现不行可以降低 QGC 的版本。 注:对于最新版稳定版 QGC (v5.0+),已经不支持旧版 Ubuntu LTS 如:20.04、18.04,仅支持 22.04 或更高的版本 1. 安装依赖 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 libqt5gui5 -y sudo apt install libfuse2 -y 注: 如果你是 Ubuntu 20.04 或更高的版本,使用下面命令: 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-cursor0 -y 2. 下载 打开 官方教程 ,往下滑找到 Ubuntu Linux ,点击下载 (官网上默认下载最新稳定版) 如果需要其他版本,可以打开 releases 找到自己想要的版本,点击 AppImage 后缀的安装包即可。 或者使用下面 提供的安装包(v4.2.6) https://wwl.lanzout.com/i4FKL1u020hg 密码:4d0o 还要稍微处理一下,改个名: mv QGroundControl.appimage QGroundControl.AppImage 3. 安装 浏览器默认下载到 Downloads 目录 cd ~/Downloads/ chmod +x QGroundControl.AppImage ./QGroundControl.AppImage 4. 错误解决 错误 : 缺少依赖 ,输入下列命令: sudo apt-get install libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl2-2.0-0 错误 : 缺少依赖 ,输入下列命令: sudo apt install libpulse-mainloop-glib0 错误 : /tmp/.mount_QGrounh5iaaC/QGroundControl: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/.mount_QGrounh5iaaC/QGroundControl) /tmp/.mount_QGrounh5iaaC/QGroundControl: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /tmp/.mount_QGrounh5iaaC/QGroundControl) 原因是系统的 glibc 库版本低于 QGC 的要求,但是这是系统库,不建议升级,所以重新下载低版本的 QGC 就可以了。 错误 : QGC 打开一直不显示地图,且为白。原因是网络问题,地图数据下载失败 先打开下面链接,下载地图数据包,然后再解压 https://wwit.lanzout.com/iXcMI35ptlnc 执行下面命令: rm -rf ~/.cache/QGCMapCache300 cp -r ./QGCMapCache300 ~/.cache/ 再次运行,成功!(后面就可以双击安装包打开了)(QGC版本不同界面也会有些许差别,以实际为准) 注: 如果不习惯英文界面在设置里更换 参考 官方教程 PX4 documentation 打开地面站错误,缺少组件error while loading shared libraries:libSDL2-2.0.so.0: cannot open shared object file: N-CSDN博客 2 个帖子 - 2 位参与者 阅读完整话题
# MAVROS安装 ### 前言 MAVROS是一个ROS(Robot Operating System)软件包 ,有了它就可以让ROS与飞控通信。这次安装 ROS1 是以ubuntu 18.04 (ROS1 Melodic)为例,ROS2 是以ubuntu 22.04 (ROS Humble)为例,也适用于其他版本(ROS1与ROS2 都可以)。 (注:安装方式有二进制安装和源码安装两种方式,源码安装需要从GitHub上下载源码,推荐二进制安装) 注:在 Ubuntu 20.04,ROS2 foxy 中,启动 px4.launch 可能会遇到 InvalidLaunchFileError,ValueError 之类的错误,这是 Foxy 中的MAVROS2 2.4.0版本会有这个问题,换版本就行,可以参考这个 教程 1. 二进制安装 下载安装: sudo apt install ros-$ROS_DISTRO-mavros ros-$ROS_DISTRO-mavros-extras # 安装 GeographicLib datasets: wget https://gitee.com/tyx6/mytools/raw/main/mavros/install_geographiclib_datasets.sh chmod a+x ./install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh #这步可能需要装一段时间 注:如果10分钟了都没安装好,可以参考后面[安装 GeographicLib datasets 缓慢的章节]( #3 . 安装 GeographicLib datasets 缓慢) 更新环境: source ~/.bashrc 2. 源码安装 注:源码安装之前,必须确保 ROS 已经配置了 rosdep ROS1 安装依赖 sudo apt-get install python-catkin-tools python-rosinstall-generator -y # For Ros Noetic use that: # sudo apt install python3-catkin-tools python3-rosinstall-generator python3-osrf-pycommon -y 创建 ROS1 工作空间(如果之前有就不用了)后面的步骤都要在 catkin_ws 目录下执行 mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init wstool init src 下载源码和依赖: cd ~/catkin_ws rosinstall_generator --rosdistro $ROS_DISTRO mavlink | tee /tmp/mavros.rosinstall rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall wstool merge -t src /tmp/mavros.rosinstall wstool update -t src -j4 # 这步会把源码下载到本地,访问的是GitHub,可能会失败,多试几次 rosdep install --from-paths src --ignore-src -y # 安装依赖 安装 GeographicLib datasets : cd ~/catkin_ws sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh #这步可能需要装一段时间 注:如果10分钟了都没安装好,可以参考后面[安装 GeographicLib datasets 缓慢的章节]( #3 . 安装 GeographicLib datasets 缓慢) 编译: cd ~/catkin_ws # 编译源码 大概需要几分钟 catkin build 编译成功 配置环境 echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc #使环境生效 ROS2 安装依赖 : sudo apt install -y python3-vcstool python3-rosinstall-generator python3-osrf-pycommon python3-colcon-common-extensions 创建 ROS2 工作空间(如果之前有就不用了)后面的步骤都要在 ros2_ws 目录下执行 mkdir -p ~/ros2_ws/src 下载源码和依赖: cd ~/ros2_ws/ rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos vcs import src < /tmp/mavlink.repos vcs import src < /tmp/mavros.repos # 这两个命令比较考验网络,如果失败,多执行几次即可 rosdep install --from-paths src --ignore-src -y 安装 GeographicLib datasets : cd ~/ros2_ws/ sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh #这步可能需要装一段时间 注:如果10分钟了都没安装好,可以参考后面[安装 GeographicLib datasets 缓慢的章节]( #3 . 安装 GeographicLib datasets 缓慢) 编译: cd ~/ros2_ws/ colcon build # 大概10分钟左右,跟电脑性能有关 配置环境 echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc source ~/.bashrc #使环境生效 3. 安装 GeographicLib datasets 缓慢 鉴于每个人环境不同,在执行 install_geographiclib_datasets.sh 脚本时,有的人很快,有的人几十分钟都安装不好,如果出现这种情况可以使用我修改的脚本。 注:此方法不一定对每个人有效。 git clone https://gitee.com/tyx6/geographiclib_datasets_tools.git cd geographiclib_datasets_tools/ chmod a+x ./install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh 4. 检测 如果可以跳转那就代表安装成功,如果不行,重新执行配置环境这一步,记得将之前添加的删掉 ROS1: roscd mavros ROS2: ros2 pkg prefix mavros 如果用方式法一,结果大致如下: ROS1: ROS2: 如果是方式法二,结果大致如下: ROS1: ROS2: 参考 mavros官方教程ROS1 PX4 documentation mavros/mavros/README.md at ros2 · mavlink/mavros · GitHub 如有其他问题,或者发现文章有错误,请在评论区留言 Keep learning! 1 个帖子 - 1 位参与者 阅读完整话题
了解PX4 前言 搭建PX4仿真环境对于纯小白来说是一个有挑战性的过程,我在搭建PX4仿真环境的时候,不知道Linux、ROS、git,语言也只会一个C语言,没有任何无人机基础,纯小白一个,靠着自学与网上的各种教程,花了一两个月才搭好基本的仿真环境框架。那时候还是古法编程的时代,没有现在AI编程这么方便。 概念介绍 在搭建环境之前还是希望大家能看看这些概念,避免大家概念模糊。 PX4 所谓无人机的飞控,就是无人机的飞行控制系统。无人机飞控能够稳定无人机飞行姿态,并能控制无人机自主或半自主飞行,是无人机的大脑。而 PX4 是自动驾驶仪软件(或称为固件),基于Nuttx实时操作系统开发的,可以驱动无人机或无人车。它是 Pixhawk 的原生固件,虽然起步比APM晚。它与 地面站 (地面控制站)在一起组成一个完全独立的自动驾驶系统。它是一个在GitHub上开源的一个项目, 项目地址 ,还有官方参考 文档 (这里建议可以多看看)。(最近几年为了跟上人工智能的潮流,官方也添加了端到端学习的特性,不过还在实验中) QGC QGC地面站是Dronecode地面控制站称为QGC地面站 。它是基于 Qt 开发的。如果使用的是 PX4固件 , 建议使用QGC地面站 。使用者可以用QGroundControl将PX4固件加载(烧写)到飞行器控制硬件上,可以设置飞行器,更改不同参数,获取实时飞行信息以及创建和执行完全自主的任务,如航点规划等。QGroundControl是跨平台的,可以在Windows,Android,MacOS或Linux上运行。它是一个在GitHub上开源的一个项目, 项目地址 ,还有官方参考 文档 MAVSDK MAVSDK 基于Mavlink协议的sdk包,可以使机载电脑与MAVLink协议兼容的无人机通信,从而控制无人机。 多用于PX4固件 ,它最初是使用C++写的,经过发展,现在已经支持Python、Java、C#、Rust、Swift、Go、JavaScript,适合多平台开发。它是一个在GitHub上开源的一个项目, 项目地址 ,还有官方参考 文档 APM Ardupilot Mega或称为APM 也是一款自驾仪软件,是早在2007年由DIY无人机社区(DIY Drones)推出的飞控产品。APM刚开始是基于Arduino的开源平台,后来软件代码不断状大,原来的硬件不能胜任最新代码,再后来开发者就把Ardupilot代码转移到了Pixhawk平台上,基于Nuttx实时操作系统,兼容了Pixhawh硬件平台。目前主要是支持的5种设备的目录包括ArduPlane(固定翼)、ArduCopter(直升机/多旋翼)、APMrover2、AntennaTracker、ArduSub。它是一个在GitHub上开源的一个项目, 项目地址 ,还有官方参考 文档 。 MP Misson Planner简称MP ,是Windows 平台运行的一款APM/PIX的专属地面站,基于 C# 开发的,对于Windows 兼容更好,其他平台也可以运行,但兼容性不是很好。如果使用 APM固件 , 建议使用MP地面站 。它的基本功能与 QGC 是一样的,虽然功能强大多样,但是太冗余。它是一个在GitHub上开源的一个项目, 项目地址 ,还有官方参考 文档 Dronekit DroneKit 是一款Python语言的无人机开发库,同样基于Mavlink协议,可以对使用MAVLink通讯协议的ArduPilot和PX4无人机进行控制, 多用于ArduPilot固件 。它最初是使用Python编写的,后面也支持了Java,跨平台性没有MAVSDK好,但个人觉得更容易上手。它是一个在GitHub上开源的一个项目, 项目地址 ,还有官方参考 文档 MAVROS MAVROS是一个ROS(Robot Operating System)软件包 ,它提供了一组ROS节点,可以将ROS系统与MAVLink协议兼容的无人机(例如Pixhawk)集成在一起,支持ROS1和ROS2,所以不管是什么固件,只要是支持MAVLink协议,都可以用MAVROS。通过MAVROS,ROS系统可以与无人机通信,接收和发送MAVLink消息,控制无人机的姿态、速度和位置等。MAVROS也提供了许多其他功能,例如姿态解算、飞行模式切换、航点导航和状态反馈等。 MAVROS的设计旨在使它易于与ROS系统集成,它提供了一组简单的ROS服务和ROS消息,可以用于 机载电脑与无人机进行通信和控制无人机 ,实现无人机的自主飞行。此外,MAVROS还提供了一组C++ API和Python API,使开发人员可以轻松地编写自己的ROS节点,使用MAVLink协议控制无人机。 项目地址 文档 Micro XRCE-DDS Agent Micro XRCE-DDS Agent 是一个实现了 OMG(对象管理组织)DDS-XRCE 标准协议的软件包 ,用C++开发的。它提供了一个高性能的代理服务器,可以将极度资源受限的设备(如微控制器)与 DDS(数据分发服务)生态系统无缝集成在一起。所以不管是什么硬件平台,只要运行了 Micro XRCE-DDS Client 库,都可以通过 Agent 接入 DDS 网络。**它是 micro-ROS(ROS 2 官方微控制器扩展)的默认中间件,也是 PX4 等主流无人机飞控系统与 ROS 2 通信的标准桥梁。**通过 Micro XRCE-DDS Agent,资源受限设备可以像标准 DDS 参与者一样,在 DDS 全局数据空间中发布和订阅主题,执行远程过程调用(RPC)。Micro XRCE-DDS Agent 也提供了许多其他功能,例如客户端连接管理、DDS 实体代理创建、多传输协议支持、消息路由和状态反馈等。 Micro XRCE-DDS Agent 的设计旨在使它易于与 DDS 和 ROS 2 系统集成,它提供了一组简单易用的命令行接口(CLI),可以用于快速部署和配置通信链路,实现微控制器与上位机或机载电脑之间的实时数据交换。此外,Micro XRCE-DDS Agent 还提供了 C++ API,使开发人员可以轻松地编写自定义的 Agent 应用程序,满足特定的通信需求。 项目地址 官方文档 环境建议 大家安装的时候可能会碰到跟教程的步骤一样但是运行出错的问题,这大概率就是环境问题,只要环境选好了,就会少很多麻烦。 Ubuntu: 对于新手直接用在虚拟机里装 ubuntu 就可以,或者对于命令行操作很熟练也可以用WSL。如果后续对仿真的性能有要求,可以在自己的笔记本上装双系统,或者组个Linux主机也行。至于 ubuntu 的版本推荐 20.04(ROS1 noetic) 和 22.04(ROS2 humble) 。PX4 官方目前的最新稳定版是 v1.17.0,可以支持 ubuntu 24.04 ,并不是说新版 PX4就不支持 20.04+ROS1 仿真了,实测使用起来毫无压力。对于新手来说,现在 ROS2 的一些资料不如 ROS1 多,大家可以根据自己需要自行选择。 依赖安装: 在正式安装之前还需要安装很多依赖,官方也提供了一个安装脚本,里面包括需要的 python包、软件库、交叉编译器,gazebo等 ,脚本会根据你的 ubuntu 的版本自行选择安装。建议大家使用他提供的脚本就行,使用方法可以看这篇文章 ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建 交叉编译器: 交叉编译器可以将宿主机上的程序编译后,能够在目标机上运行。一般是在 x86架构 的平台上写好程序,然后用交叉编译器编译,再将可执行文件烧到 arm架构 的平台上。 如果想自己编译飞控固件烧到飞控上,就需要安装交叉编译器 。 参考 Introduction · MAVSDK Guide (mavlink.io) DroneKit-Python’s documentation Plane documentation (ardupilot.org) PX4 documentation PX4(Pixhawk)和Audupilot(APM)的区别与联系 ArduPilot与Pixhawk什么关系? - 知乎 (zhihu.com) PX4和ardupilot(APM)的对比 3 个帖子 - 3 位参与者 阅读完整话题
之前一直在某SDN上发PX4仿真的教程,鉴于某SDN上的某些恶心操作,我想把教程搬到L站来 5 个帖子 - 5 位参与者 阅读完整话题