(最新)ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装(适用于ROS1、ROS2)

            <div id="content_views" class="markdown_views prism-atom-one-dark">
                <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                    <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                </svg>
                <p></p> 

前言

MAVROS是一个ROS(Robot Operating System)软件包 ,有了它就可以让ROS与飞控通信。这次安装 ROS1 是以ubuntu 18.04 (ROS1 Melodic)为例,ROS2 是以ubuntu 22.04 (ROS Humble)为例,也适用于其他版本 。安装之前确保 ROS 安装成功,没安装的可以看我仿真系列教程。
(注:安装方式有二进制安装和源码安装两种方式,源码安装需要从GitHub上下载源码,推荐二进制安装)

搭建仿真环境系列教程👇

ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍

ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装(适用于ROS1、ROS2)

ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建

ubuntu安装ROS melodic(最新、超详细图文教程)

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 缓慢的章节
在这里插入图片描述

  • 更新环境:
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 缓慢的章节

  • 编译:
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 缓慢的章节

  • 编译:
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:

在这里插入图片描述

如有其他问题,或者发现文章有错误,请在评论区留言
Keep learning!

参考

mavros官方教程ROS1

PX4 documentation

mavros/mavros/README.md at ros2 · mavlink/mavros · GitHub

### 配置和运行 ROS 2 PX4 MAVROS Gazebo 无人机仿真 #### 安装依赖项 为了确保所有组件能够正常工作,建议按照官方文档安装必要的依赖包。对于 Ubuntu 系统而言,可以通过以下命令来更新软件源并安装所需工具链: ```bash sudo apt update && sudo apt install git wget qtcreator clang-format python3-pip -y pip3 install --user pyulog pymavlink dronecan empy toml geographiclib pandas jinja2 numpy ``` #### 获取 PX4MAVROS 源码 下载最新PX4 自动驾驶仪固件以及 MAVROS 软件包到本地计算机中。 ```bash cd ~/ git clone https://github.com/PX4/PX4-Autopilot.git -b v1.12.0 cd ~/PX4-Autopilot DONT_RUN=1 make px4_sitl_default gazebo ``` MAVROS 的获取方式取决于所使用的 ROS 版本,在此假设为 ROS Foxy: ```bash source /opt/ros/foxy/setup.bash mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src vcs import <(wget -qO- https://raw.githubusercontent.com/mavlink/mavros/master/mavros.yaml) cd .. colcon build --symlink-install source install/local_setup.bash ``` #### 启动 SITL (Software In The Loop) 模拟器 启动包含 MAVROS 插件在内的 Gazebo 场景文件,并加载默认的 iris 型号四旋翼机架结构模型。 ```bash export ROS_DOMAIN_ID=30 ign gazebo -r ~/PX4-Autopilot/Tools/simulation/gazebo-classic/models/empty_world/empty.world sleep 5s pxh> commander takeoff ``` 此时应当可以在终端窗口观察到来自于 MAVLink 协议的数据流输出信息[^1]。 #### 编写简单的 Python 控制脚本 编写一段用于发送指令给 MAVROS 设备节点的小型应用程序实例,以便测试基本功能是否正常运作。 ```python import rclpy from geometry_msgs.msg import PoseStamped, TwistStamped from mavros_msgs.srv import CommandBool, SetMode def main(args=None): rclpy.init() node = rclpy.create_node('simple_offboard') arm_client = node.create_client(CommandBool, '/mavros/cmd/arming') set_mode_client = node.create_client(SetMode, '/mavros/set_mode') while not arm_client.wait_for_service(timeout_sec=1.0): pass request = CommandBool.Request(value=True) future = arm_client.call_async(request) rclpy.spin_until_future_complete(node, future) mode_request = SetMode.Request(base_mode=0, custom_mode="OFFBOARD") future = set_mode_client.call_async(mode_request) rclpy.spin_until_future_complete(node, future) if __name__ == '__main__': main() ``` 上述代码片段展示了如何通过调用服务接口向飞行控制器请求切换至离板模式(Offboard Mode),从而接管姿态控制权柄;同时发出武装电机信号使螺旋桨开始旋转准备升空动作[^2]。 #### 故障排除技巧 如果遇到无法成功解锁或起飞的情况,则需重点检查以下几个方面: - 确认已正确设置了环境变量 `ROS_DOMAIN_ID` ,防止多台设备间发生冲突; - 使用 `rostopic list` 或者 `ros2 topic list` 查看当前活跃话题列表,验证各模块之间的连接状况良好无误; - 利用 `mavros_commander.py` 工具辅助诊断潜在问题所在位置,例如查看日志记录、重置参数设定等操作; - 尝试重启整个系统或者单独的服务进程,有时候可以有效解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值