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

miiiiiiss--un-non 2024-10-22 10:07:02 阅读 58

目录

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 源码

<code>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仿真环境

<code>make px4_sitl jmavsim

成功编译和启动

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

<code>make px4_sitl gazebo

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

成功编译并启动

无人船仿真环境

<code>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时更换了国内源应该也可以。

<code>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 更新软件源

<code>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

执行下面的命令

<code>sudo apt install ros-noetic-desktop-full

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

2.5 初始化rosdep

<code>sudo rosdep init

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

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

错误1:找不到命令

按照错误提示安装即可

<code>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

输入下面命令

<code>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验证是否安装成功

<code>roscore

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

sudo apt install ros-noetic-desktop-full

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

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

<code>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。

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

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

<code>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 准备工作

打开终端,运行下列命令

<code># 将当前用户(${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 安装前置依赖

<code>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

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。