Ubuntu 20.04下 PX4+ROS+MAVROS+QGC+VRX 环境搭建完整版

目录

1 PX4环境搭建

1.1 下载 PX4 源码

1.2 运行 ubuntu.sh 安装所有工具链

1.3 环境配置验证

2 ROS搭建

2.1 添加ROS软件源

2.2 添加密钥

2.3 更新软件源

2.4 开始安装ros

2.5 初始化rosdep

2.6 设置环境变量

2.7 安装rosinstall

2.8 验证ros是否安装成功

3 安装MAVROS 

3.1安装 MAVROS 扩展和消息包

3.2 下载并安装 geographiclib 数据集

3.3 配置和测试MAVROS

4 安装QGC

4.1 准备工作

4.2 下载QGround.AppImage

4.3 安装QGC

5 VRX环境搭建

5.1 安装前置依赖

5.2 获取源码

5.3 构建VRX仿真平台


文中涉及PX4内容的详细说明可参考官方文档教程

https://github.com/PX4/PX4-user_guide/blob/main/zh/dev_setup/dev_env_windows_wsl.md

建议在环境搭建之前修改ubuntu软件源,建议改为国内软件源,修改方法参考:

Ubuntu 20.04 修改国内软件源-CSDN博客

1 PX4环境搭建

1.1 下载 PX4 源码

git clone https://github.com/PX4/PX4-Autopilot.git --recursive

2024.9.25 更新 

如果在git clone过程中克隆子项目出现不成功的情况,可以先克隆PX4-Autopilot代码

git clone https://github.com/PX4/PX4-Autopilot.git

指定版本克隆github代码,我是下载的v1.14.0版本的PX4源码

git clone -b v1.14.0 https://github.com/PX4/PX4-Autopilot.git

再切换到PX4文件夹,再去克隆子项目

cd PX4-Autopilot
git submodule update --init --recursive

如果失败再继续执行 git submodule update --recursive,知道下载完成。注意此时没有--init

 在该步骤中使用git远程克隆代码库可能会遇到网络不稳定等状况,需要解决网络问题,可以设置VPN,具体方法各显神通。安装过程中遇到的很多问题也基本都是由于网络连接不稳定产生的。

也可直接下载本人已经下载好的源码,如果需要最新的git提交版本,还是使用上述方法下载源码。
链接:https://pan.baidu.com/s/1TypkQKhMWOqp8Dd-oW0Z8g 
提取码:px4u 

下载后解压到主目录下:

unzip PX4-Autopilot.zip

1.2 运行 ubuntu.sh 安装所有工具链

下列终端命令在主目录下运行,终端输入下列命令,安装过程需要等待一会儿。

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

安装完成后重启

1.3 环境配置验证

安装完所有工具链之后,就可以开始仿真环境和固件的编译。

step1:编译环境测试,在终端输入

cd PX4-Autopilot
make px4_fmu-v3_default

下面是可能出现的错误

错误1

该问题可能是网络问题,多重试几次。

step2:仿真环境测试

(注意,此处虚拟机的内存分配大小最小是4G,但是后续在编译gazebo是使用htop命令进行查看内存占用大小,内存最大占用约8G,建议允许的话内存往8G以上设置)

终端输入,运行jMAVSim仿真环境

make px4_sitl jmavsim

成功编译和启动

终端输入,运行gazebo仿真环境

make px4_sitl gazebo

注意:如果此处使用的是虚拟机分配了8G内存(我在实测时分配8G还不够)以下将出现下面的错误(c++: fatal error: Killed signal terminated program cc1plus)因为内存过小直接杀死cc1plus程序。

成功编译并启动

无人船仿真环境

make px4_sitl gazebo_boat

到此PX4环境已经搭建成功了!

* 这时可以给无人机发送 commander takeoff 和commander land 指令,无人机可以执行对应的起飞降落事件。

官方文档指出建议配合地面站一起执行无人机指令。这样的目的是通过远端界面控制无人机,对用户友好。

INFO

You may need to start QGroundControl before proceeding, as the default PX4 configuration requires a ground control connection before takeoff. 

无人机地面站QGC的安装详见第4部分。

2 ROS搭建

下面是在ubuntu中搭建ROS的步骤。

2.1 添加ROS软件源

在搭建px4时更换了国内源应该也可以。

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

2.2 添加密钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

添加成功后显示下面内容

2.3 更新软件源

sudo apt update

2.4 开始安装ros

完成上述软件源的配置和更新就可以开始安装ros了,我是在ubuntu20.04上安装的ros1,不同的ubuntu版本也会有不同的ros版本(melodic、noetic、kinetic),ubuntu20.04对应的是ros-neotic。

  • Ubuntu 20.04 -> Noetic

  • Ubuntu 18.04 -> Melodic

  • Ubuntu 16.04 -> Kinetic

执行下面的命令

sudo apt install ros-noetic-desktop-full

更换ros源后安装过程应该会比较快,安装完成后可以再运行一次上述命令,显示下面的内容说明安装成功

2.5 初始化rosdep

sudo rosdep init

如果出现下面内容说明初始化成功

在初始化过程中可能会遇到几个错误

错误1:找不到命令

按照错误提示安装即可

sudo apt install python3-rosdep2

错误2:ip地址出错

ERROR: cannot download default sources list from:https: //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.

输入下面命令

sudo gedit /etc/hosts

在打开的hosts文件中添加如下内容,保存退出

185.199.110.133 raw.githubusercontent.com

这个错误的原因是因为该域名对应的ip地址会变动,若上面提供的ip地址不正确那么需要自己查一下,可以通过免费ip地址查询 - 免费ip归属地查询接口查询该域名的ip地址,查询结果如下:

错误3:ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize

输入下面命令

sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

若遇到上述中的一个或几个错误,按照上述解决办法解决之后再运行 sudo rosdep init 应该就能初始化成功了。

2.6 设置环境变量

(1) 输入下列命令,注意${ROS_DISTRO}应根据你的ubuntu版本替换成melodic、noetic或kinetic,我的是neotic

echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ~/.bashrc

ubunutu20.04替换成

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

* 如果不小心设置的版本出错了,比如应该是neotic,但是你使用的是melodic,即使你使用了错误版本的命令,执行命令后也会显示,bash: /opt/ros/melodic/setup.bash: 没有那个文件或目录。那么可以先执行:

gedit .bashrc

打开.bashrc文件,把最后一行 source /opt/ros/melodic/setup.bash 的 melodic 改为noetic,保存退出即可。

(2) 输入下列命令,让环境变量生效

source ~/.bashrc

2.7 安装rosinstall

运行下列命令

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool

2.8 验证ros是否安装成功

在终端输入roscore验证是否安装成功

roscore

如果出现Resource not found: roslaunch错误,说明可能是之前的安装因为网络原因没有装完整,重复执行安装命令即可

sudo apt install ros-noetic-desktop-full

若安装成功则会显示如下界面

到此说明ros安装成功,可以在终端开启小海龟仿真器测试一下。Crtl+Alt+T开启一个新的终端,输入一下命令

rosrun turtlesim turtlesim_node

再开启一个终端,输入

rosrun turtlesim turtle_teleop_key

这个时候就可以通过键盘上的上下左右键控制小海龟的移动了。

到此为止恭喜你完成了ros的安装!!!

3 安装MAVROS 

       MAVROS是一个ROS节点,用于在ROS系统中与无人机飞控系统进行通信。它通过将MAVLink消息转换为ROS消息,实现了ROS系统与无人机之间的数据交换和控制。MAVROS支持多种无人机硬件平台,如Pixhawk、PX4、ArduPilot等,这些平台使用MAVLink通讯协议进行数据传输。

MAVROS的安装官方文档 ROS (1) with MAVROS Installation Guide | PX4 Guide (main),官方文档还提供源码安装(Source installation)的方式,有兴趣的可以自己了解。

接下来开始安装MAVROS

3.1安装 MAVROS 扩展和消息包

安装 ros-neotic-mavros、ros-neotic-mavros-extras、ros-neotic-mavros-msgs。

  1. ros-neotic-mavros 是 MAVROS 的主软件包,它是 MAVLink 到 ROS 的桥梁,允许你在 ROS 环境中使用 MAVLink 协议进行无人机或其他机器人系统的通信。
  2. ros-neotic-mavros-extras 是 MAVROS 的附加扩展包,包含了一些额外的插件和功能,这些功能可能不在主 MAVROS 包中。它提供了更广泛的 MAVLink 消息支持和其他实用工具。
  3. ros-neotic-mavros-msgs 是 MAVROS 使用的 ROS 消息定义包,包含了 MAVLink 消息的 ROS 表示。这些消息定义使得 MAVROS 可以在 ROS 网络中发布和订阅 MAVLink 消息。

打开终端,执行下面的命令,其中的 ${ROS_DISTRO}替换为你需要安装的ros版本,第二行命令就是替换为noetic的执行命令。

sudo apt-get install ros-${ROS_DISTRO}-mavros ros-${ROS_DISTRO}-mavros-extras ros-${ROS_DISTRO}-mavros-msgs

sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras ros-noetic-mavros-msgs

安装过程中若出现 unable to locate package 错误,可能是由于以下几种常见原因:

(1) ROS 源列表未更新:你可能还未添加 ROS 的软件包源,或者未更新你的包列表。

(2) 输入错误:变量${ROS_DISTRO} 没有正确替换为你所使用的 ROS 发行版名称。

(3) 软件包源未设置正确:你的系统可能没有配置正确的 ROS 软件包源。

(4) 网络问题:无法连接到 ROS 软件包服务器。

3.2 下载并安装 geographiclib 数据集

GeographicLib是一个用于地理计算的库,MAVROS(MAVLink到ROS的桥)依赖于它来处理地理信息,例如坐标转换和地图数据。

执行下面的命令。第一个命令下载一个名为 install_geographicLib_datasets.sh 的脚本文件。

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
chmod a+x ./install_geographiclib_datasets.sh
sudo bash ./install_geographiclib_datasets.sh

执行两条命令成功的显示分别如下:

到此,MAVROS的安装就成功了!!!

3.3 配置和测试MAVROS

安装完成后,需要对Mavros进行配置以使其与你的无人机和地面站进行通信。这通常涉及到编辑配置文件和设置环境变量。具体步骤将取决于你的无人机型号和地面站软件。

同样的,测试MAVROS可以参考官方文档提供的测试用例。具体的测试步骤和运行测试用例后续也会通过博客记录下来。

4 安装QGC

QGC 是 PX4 的地面控制站,是 PX4 无人控制系统不可分割的一部分,可以运行在Windows,OS X或Linux等多个平台。使用QGC,可以将PX4固件烧写到硬件,设置机器,改变不同的参数,获得实时航班信息,创建和执行完全自主的任务。QGC通过MAVLink消息格式与飞行控制端进行通信。

QGC地面站具备 ①刷固件,②初始设置,③电调校准,④飞控参数调节,⑤监控飞控状态,⑥航点任务上传,⑦日志下载等功能,并且QGC是一个完全开源的项目,可在其基础上进行二次开发。

下面是在ubuntu20.04上安装QGC(QGroundControl)地面站的详细步骤。

4.1 准备工作

打开终端,运行下列命令

# 将当前用户(${USER})添加到 dialout 组中,dialout 组通常有权访问串行端口设备(如 /dev/ttyUSB0)
sudo usermod -a -G dialout $USER

# 移除 modemmanager 包,modemmanager 可能会干扰串行连接,因为它会自动尝试管理连接到系统的串行设备
sudo apt-get remove modemmanager -y

# 安装 GStreamer 的一些插件和库。GStreamer 是一个多媒体框架,QGC 使用它来处理视频流。
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

4.2 下载QGround.AppImage

在官网下载QGround.AppImage,可以下载后上传ubuntu系统,或直接在ubuntu上下载。

4.3 安装QGC

chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage

安装成功并运行如下图所示

到此为止QGC已经安装成功了!!!

在第1部分提到运行gazebo或jMAVSim需要配合QGC来对无人机收发指令,那么同时运行QGC和gazebo/jMAVSim,并通过终端发送 commander takeoff 和 commander land 命令可以看到仿真环境中无人机执行了起飞和降落的操作。

现在QGC安装成功后可以通过QGC界面的 takeoff land 按钮给仿真环境中的无人机发送MAVLink消息,从而控制无人机起飞降落

5 VRX环境搭建

VRX (Virtual RobotX) 是由 Open Source Robotics Foundation (OSRF)RoboNation 共同开发的一个基于 Gazebo 仿真器 的水上机器人竞赛仿真平台。它模拟了水上环境中的机器人任务,旨在为 RoboNation 旗下的 RobotX 竞赛 提供一个虚拟的竞赛环境,用于团队开发和测试自主导航、探测和控制算法。

下面是VRX的搭建步骤。

5.1 安装前置依赖

sudo apt update
sudo apt full-upgrade
sudo apt install -y build-essential cmake cppcheck curl git gnupg libeigen3-dev libgles2-mesa-dev lsb-release pkg-config protobuf-compiler qtbase5-dev python3-dbg python3-pip python3-venv ruby software-properties-common wget 
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
DIST=noetic
GAZ=gazebo11
sudo apt install ${GAZ} lib${GAZ}-dev ros-${DIST}-gazebo-plugins ros-${DIST}-gazebo-ros ros-${DIST}-hector-gazebo-plugins ros-${DIST}-joy ros-${DIST}-joy-teleop ros-${DIST}-key-teleop ros-${DIST}-robot-localization ros-${DIST}-robot-state-publisher ros-${DIST}-joint-state-publisher ros-${DIST}-rviz ros-${DIST}-ros-base ros-${DIST}-teleop-tools ros-${DIST}-teleop-twist-keyboard ros-${DIST}-velodyne-simulator ros-${DIST}-xacro ros-${DIST}-rqt ros-${DIST}-rqt-common-plugins

5.2 获取源码

mkdir -p ~/vrx_ws/src
cd ~/vrx_ws/src
git clone https://github.com/osrf/vrx -b gazebo_classic

5.3 构建VRX仿真平台

step1: build

加载 ROS Noetic 环境,并编译 ROS 工作空间中的所有包,包括刚刚克隆的 VRX 仿真平台代码。catkin_make 是 ROS 的构建工具,确保所有依赖都被正确编译和链接。

source /opt/ros/noetic/setup.bash
cd ~/vrx_ws
catkin_make

step2: run

# 加载新构建的工作空间环境,使得系统能够找到新编译的VRX包和节点
source ~/vrx_ws/devel/setup.bash

# 启动VRX仿真环境,vrx.launch是启动文件,会启动Gazebo仿真器和相关的ROS节点,并加载VRX场景和模型
roslaunch vrx_gazebo vrx.launch

运行如图所示:

到这里就已经全部安装完成了!

文中可能并没有覆盖到所有安装过程中可能会出现的问题,大家可以在评论区留言一起解决!祝大家安装顺利!

作者:miiiiiiss--un-non

本人博客:https://blog.csdn.net/NowJzy

转载说明:务必注明来源,附带本人博客连接。

<think>好的,我现在要帮用户解决在Ubuntu 20.04上通过QGroundControl连接飞控的问题。首先,我需要回顾用户提供的引用内容,看看是否有相关的步骤可以参考。 用户给的引用中有几个相关的点。引用[1]提到了安装MAVROSPX4和Gazebo,这可能涉及飞控环境的配置。引用[4]提到QGC地面站的安装路径和命名要求,必须为QGroundControl.AppImage,否则校验失败。这应该是一个关键点,需要提醒用户注意文件名是否正确。 接下来,我需要整理连接飞控的一般步骤。通常流程是安装QGC,配置权限,连接硬件,然后启动QGC进行连接。根据Ubuntu系统的特点,可能需要处理USB权限问题,比如使用udev规则。用户的问题可能涉及这些步骤,但用户特别提到了引用中的内容,所以应该结合引用中的信息。 首先,安装QGC。根据引用[4],用户需要下载QGC的AppImage文件,并确保文件名正确。然后赋予可执行权限,这一点在Linux中是常见的操作。启动后,可能需要检查固件或设置,但用户的问题主要是连接飞控,所以重点在硬件连接和权限。 接下来,引用[2]提到了解决依赖问题的命令,比如重新安装libxcb-xinerama0,如果QGC启动时出现库错误,可能需要这个步骤。虽然用户现在可能没有遇到这个问题,但可以作为常见问题提示。 然后,引用[3]中的ROS环境配置可能相关,但用户的问题是关于QGC直接连接飞控,可能不需要ROS。不过如果有用户同时使用ROSMAVROS,可能需要额外步骤,但当前问题可能不需要涉及,除非用户后续有需求。 硬件连接方面,飞控通常通过USB连接到电脑,Ubuntu可能需要添加用户到dialout组,并设置udev规则。引用[1]中的安装教程可能包含这些步骤,比如使用sudo usermod -aG dialout $USER命令,或者复制udev规则文件。这部分需要详细说明,因为权限问题经常导致连接失败。 最后,启动QGC后,如何识别飞控,可能需要检查端口和设备。如果遇到连接问题,建议用户检查线缆、重启服务或者查看日志。 总结步骤应该是: 1. 安装QGC并确保文件名正确。 2. 安装依赖库(如引用[2]提到的)。 3. 配置用户组和udev规则。 4. 连接硬件,启动QGC,检查连接。 同时,需要提醒用户可能需要重新登录或重启以使组权限生效,以及如何验证设备是否被正确识别。可能还需要提到如果使用Pixhawk等常见飞控,特定的udev规则是什么,比如从PX4的仓库下载规则文件。 在生成相关问题的时候,可以考虑安装问题、权限问题、连接故障排除,以及与其他工具如MAVROS的集成。</think>### Ubuntu 20.04通过QGroundControl连接飞控的步骤 #### 1. **安装QGroundControl** - 从[官网下载](https://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html#ubuntu)适用于Linux的AppImage文件,确保文件名为`QGroundControl.AppImage`[^4]。 - 赋予执行权限并运行: ```bash chmod +x QGroundControl.AppImage ./QGroundControl.AppImage ``` - 若启动时报错(如缺少`libxcb-xinerama`),执行: ```bash sudo apt install --reinstall libxcb-xinerama0 # 引用[2]的解决方法 ``` #### 2. **配置USB权限** - 将用户加入`dialout`组以访问串口: ```bash sudo usermod -aG dialout $USER ``` - 重启或重新登录使配置生效。 #### 3. **设置飞控设备规则** - 对于Pixhawk等常见飞控,需添加UDEV规则: ```bash sudo wget https://raw.githubusercontent.com/PX4/PX4-Autopilot/master/Tools/udev/99-px4fmu.rules -O /etc/udev/rules.d/99-px4fmu.rules sudo udevadm control --reload-rules ``` - 重新插拔飞控,执行`ls /dev/ttyACM*`检查是否识别设备。 #### 4. **连接飞控** - 通过USB将飞控连接至电脑,启动QGroundControl。 - 顶部工具栏选择**QGC图标 > 车辆设置 > 载具配置**,系统会自动检测飞控并提示连接。 - 若未自动连接,手动选择**通信端口**(如`/dev/ttyACM0`)。 #### 5. **验证连接** - 成功连接后,QGC会显示飞行数据(如姿态、电池状态)。 - 若失败,检查: - USB线是否正常 - 用户是否在`dialout`组 - 飞控固件是否为最新版本 --- ###
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值