您当前的位置:首页 > 电子 > 机器人与智能物联

Ubuntu18.04安装PX4并与ROS联合实验

时间:02-02来源:作者:点击数:

1.如果没有安装ROS,可以去PX4官网使用脚本链接将ROS和PX4一起安装(我不推荐这样,因为装不全,所以建议先自己装好ROS,然后参考本教程)

2.如果已安装ROS-melodic,按下面步骤手动配置。


在这里插入图片描述
px4仿真

手动配置

1.先安装MAVROS

1.1(a) 二进制版本官网

1.1(b) 源码编译(我后来用源码编译并不麻烦,推荐如下)

安装编译工具:

sudo apt-get install python-catkin-tools python-rosinstall-generator -y

创建存放mavros的工作空间,这里推荐放在一个新建的单独的工作空间,因为按照这个教程走下去后,该工作空间只能用catkin build指令编译而不能用catkin_make了。

mkdir -p ~/mavros_ws/src
cd ~/mavros_ws
catkin init
wstool init src

更新保证获取到最新的稳定版mavlink和mavros:

rosinstall_generator --rosdistro melodic 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 -j12
rosdep install --from-paths src --ignore-src -y

其中第二行命令的-j多少,后面的数字最好是你cpu的线程数

这个过程中网速一定要好,不然clone源码这一步会卡住,会一直出现mavros | mavlink active啥啥的。

安装GeographicLib datasets:

sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

** 提醒 ** 若是sudo apt-get install mavros会缺这个sh文件,可以通过直接copy别人gitee下载好的文件

编译源码(在工作空间下):

catkin build

如果你想每个终端都常用的话,source ~/mavros_ws/devel/setup.bash这句话添加到

~/.bashrc文件中,否则就只在这个终端里source一下就行了。

ROS和MAVROS都安装完了。

2.安装FastRTPS和Nuttx及他们的依赖

开始安装一些依赖

权限设置

sudo usermod -a -G dialout $USER

然后注销后,重新登录,因为重新登录后所做的改变才会有效

sudo apt-get update

必备软件(python、git、qt)

sudo apt-get install python-argparse git wget zip \
    python-empy qtcreator cmake build-essential genromfs -y

仿真工具

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jre
sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.9 liblldb-3.9 -y

卸载模式管理器

sudo apt-get remove modemmanager

更新包列表和安装下面的依赖包

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install python-serial openocd \
    flex bison libncurses5-dev autoconf texinfo build-essential \
    libftdi-dev libtool zlib1g-dev \
    python-empy gcc-arm-none-eabi -y

this ppa may be useless:sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded有问题

报错:udo add-apt-repository ppa:terry.guo/gcc-arm-embedded

tag:launchpad.net:2008:redacte

没关系不用理会。

再更新一下

sudo apt-get update -y

Required python packages

sudo apt-get install python-argparse   python-empy python-toml python-numpy   python-dev python-pip -y
sudo -H pip install --upgrade pip
sudo -H pip install pandas jinja2 pyserial
sudo apt install python3-pip
sudo pip3 install numpy toml
pip3 install --user empy
sudo pip3 install jinja2

optional python tools

sudo -H pip install pyulog</pre>

安装Ninja编译工具:

sudo apt-get install ninja-build -y

安装FastRTPS开发环境:(有新的版本可以参考px4_link)

20200705更新:下面的wget网址和px4的链接都不管用了,请参考fastRTPS官网下载文件-->

1.7.1版本

下面的命令中软件包名字有大小写的区别,请自己更改!(重要)

 更新:
 先下载从官网下载1.7.1版本
 tar -xzf eProsima_FastRTPS-1.7.1-Linux.tar.gz eProsima_FastRTPS-1.7.1-Linux/
 tar -xzf eProsima_FastRTPS-1.7.1-Linux.tar.gz requiredcomponents
 tar -xzf requiredcomponents/eProsima_FastCDR-1.0.8-Linux.tar.gz

接着执行下面命令安装,先查看你的cpu线程数。我是make -j12

cd eProsima_FastCDR-1.0.8-Linux
./configure --libdir=/usr/lib
make -j12
sudo make install
cd ..
cd eProsima_FastRTPS-1.7.1-Linux
./configure --libdir=/usr/lib
make -j12
sudo make install
cd ..
rm -rf requiredcomponents eprosima_fastrtps-1-7-1-linux.tar.gz

make后面的j后的数字改为你cpu的线程数

配置Nuttx开发环境:

sudo apt-get install python-serial openocd flex bison libncurses5-dev autoconf texinfo libftdi-dev libtool zlib1g-dev -y

配置arm gcc编译器:

sudo apt-get remove gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi gcc-arm-embedded

如果gdb找不到,则sudo apt install gdb-multiarch

sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa

运行下面这个脚本,建立script.sh ,粘贴进去,然后终端使用 bash script.sh 运行:(注意,把下载路径最好改一下,cd到你想要的目录,然后改这句话的path的位置 exportline="export PATH=$HOME/gcc-arm-none-eabi-7-2017-q4-major/bin:\$PATH")

pushd .cd ~
wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2
tar -jxf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2
exportline="export PATH=$HOME/gcc-arm-none-eabi-7-2017-q4-major/bin:\$PATH"
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
popd

然后重启电脑

检查是否安装成功:

arm-none-eabi-gcc --version

如果输出了像下面这样的:

arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]

Copyright (C) 2017 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

你成功了!

3. 编译px4源码:

3.1下载源码(记得挂USA节点的vpn)

实验室为了稳定版本,若不是十分熟悉PX4,最好不要最新版本,可以下载v1.9.2版本,也可以v1.11.3

mkdir -p ~/src

cd src

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

cd PX4-Autopilot

git submodule update --init --recursive

3.2编译一版最常用的固件,用于刷Pixhawk 4飞控

在PX4-Autopilot文件夹下面:

make px4_fmu-v5_default

过程中也会下载很多东西,等一会儿就OK

这一步必须得成功,最终没有报错,输出:

-- Build files have been written to: /home/youruser/src/Firmware/build/nuttx_px4fmu-v4_default

[954/954] Creating /home/youruser/src/Firmware/build/nuttx_px4fmu-v4_default/px4fmu-v4_default.px4

就OK了!恭喜你配完了!

(过程中的报错基本全是网速的锅,一定要找个网速好的地方!或者fq!)

(可跳过)3.3关于build的固件版本(并未尝试,maybe there is "_" in name ,please use Tab to list what it is):

Pixhawk 4: make px4_fmu-v5_default
Pixracer: make px4fmu-v4_default
Pixhawk 3 Pro: make px4fmu-v4pro_default
Pixhawk Mini: make px4fmu-v3_default
Pixhawk 2: make px4fmu-v3_default
mRo Pixhawk: make px4fmu-v3_default (supports 2MB Flash)
HKPilot32: make px4fmu-v2_default
Pixfalcon: make px4fmu-v2_default
Dropix: make px4fmu-v2_default
MindPX/MindRacer: make mindpx-v2_default
mRo X-2.1: make auav-x21_default
Crazyflie 2.0: make crazyflie_default
Intel® Aero Ready to Fly Drone: make aerofc-v1_default
Pixhawk 1: make px4fmu-v2_default

(可跳过)烧录在板子上:

make px4_fmu-v5_default upload

成功的话会显示:

Erase : [====================] 100.0%

Program: [====================] 100.0%

Verify : [====================] 100.0%

Rebooting.

[100%] Built target upload

(可跳过)搭建Qt开发环境:(我没用,可以自己尝试)

在与Firmware平级的目录下,

mkdir Firmware-buildcd Firmware-build
cmake ../Firmware -G "CodeBlocks - Unix Makefiles"

我的环境显示,没有../Firmware这个文件夹,于是我直接在Qt中打开cmakelist,然后在cmake参数那一栏写入 -G "CodeBlocks - Unix Makefiles",然后run cmake 就成功了。

然后在Qt中open a project,选择这个Firmware的CMakeLists.txt,打开就OK了,就可以看到整个工程了。

4.安装QGC(QGroundControl)地面站

直接去官网下下来,直接给权限就可以运行了。

链接

使用QGC的方法:

Linux下可以用两种方法打开QGC,建议选择AppImage,点击图片就可以运行,不用每次都输入冗长的./qgroundcontrol-start.sh

建议下载完成后将文件复制到Home目录下,并执行下列操作增加可执行权限

chmod +x ./QGroundControl.AppImage

5.GAZEBO仿真(这一部分必须要做)

在运行 Gazebo 仿真之前首先要进行相关文件的配置

Gazebo配置

安装protobuf库,它用作Gazebo的接口。

sudo apt-get install libprotobuf-dev libprotoc-dev protobuf-compiler libeigen3-dev

在仿真文件夹目录顶层创建一个 build 文件夹

cd ~/src/PX4-Autopilot/Tools/sitl_gazebo
mkdir build

添加路径

设置插件的路径以便 Gazebo 能找到模型文件
  export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:$HOME/src/PX4-Autopilot/Tools/sitl_gazebo/build
设置模型路径以便 Gazebo 能找到机型
  export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$HOME/src/PX4-Autopilot/Tools/sitl_gazebo/models
禁用在线模型查找
  export GAZEBO_MODEL_DATABASE_URI=""
设置 sitl_gazebo 文件夹的路径
  export SITL_GAZEBO_PATH=$HOME/src/PX4-Autopilot/Tools/sitl_gazebo

这是我的~/.bashrc,请根据自己的系统路径修改:

source /opt/ros/melodic/setup.bash
source /home/wzy/catkin_ws/devel/setup.bash
source /home/wzy/mavros_ws/devel/setup.bash
source /home/wzy/src/PX4-Autopilot/Tools/setup_gazebo.bash /home/wzy/src/PX4-Autopilot /home/wzy/src/PX4-Autopilot/build/px4_sitl_default
source /usr/share/gazebo-9/setup.sh

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/wzy/src/PX4-Autopilot:/home/wzy/src/PX4-Autopilot/Tools/sitl_gazebo
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/home/wzy/.gazebo/models
export SITL_GAZEBO_PATH=$HOME/src/PX4-Autopilot/Tools/sitl_gazebo
export GAZEBO_RESOURCE_PATH=${GAZEBO_RESOURCE_PATH}:$HOME/src/PX4-Autopilot/Tools/sitl_gazebo/worlds
export GAZEBO_MODEL_DATABASE_URI=""
export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:$HOME/src/PX4-Autopilot/Tools/sitl_gazebo/build

source .bashrc之后,当打开新终端会显示一些路径,比如:

GAZEBO_PLUGIN_PATH :/home/wzy/src/PX4-Autopilot/build/px4_sitl_default/build_gazebo 
GAZEBO_MODEL_PATH :/home/wzy/src/PX4-Autopilot/Tools/sitl_gazebo/models
LD_LIBRARY_PATH :/home/wzy/mavros_ws/devel/lib:/home/wzy/catkin_ws/devel/lib:/opt/ros/melodic/lib:/home/wzy/src/PX4-Autopilot/build/px4_sitl_default/build_gazebo

这是由于

source /home/wzy/src/PX4-Autopilot/Tools/setup_gazebo.bash /home/wzy/src/PX4-Autopilot /home/wzy/src/PX4-Autopilot/build/px4_sitl_default

导致的,你去看一下/home/wzy/src/PX4-Autopilot/Tools/setup_gazebo.bash这个文件,把里面的echo注释就行了。

切换到构建目录并从中调用CMake

cd build
cmake ..

构建 gazebo 插件

also install this package before make

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

现在就可以运行Gazebo仿真了,以最基本的iris仿真为例

cd ~/src/PX4-Autopilot
make px4_sitl_default gazebo

还有其他的机型px4中文

建立自己的外部控制程序包

外部控制程序offboard_node.cpp以及释义请点击PX4中文维基。

px4链接

根据ROS官网教程,先建一个ROS包,

$ cd ~/catkin_ws/src
$ catkin_create_pkg offboard roscpp mavros geometry_msgs

这一步会创建一个名为offboard的新程序包,这个程序包依赖于roscpp 、mavros以及geometry_msgs。

在offboard目录下生自动成两个文件夹include和src。我们将外部控制例程offboard_node.cpp放入刚刚生成的src目录下。然后修改/catkin_ws/src/offboard目录下的CMakeLists.txt文件。取消掉一些注释,生成相应节点(否则会出现找不到节点的错误)。

注意:

1.add_executable(offboard_node src/offboard_node.cpp)

第一个offboard_node是我们根据src/offboard_node.cpp创建的节点的名称

2.target_link_libraries(offboard_node ${catkin_LIBRARIES})

再在offboard_node.cpp修改一个在65行offb_set_mode.response.success ------> offb_set_mode.response.mode_sent

$ cd ~/catkin_ws

$ catkin_make

启动仿真

通过MAVROS应用在Gazebo模拟的Iris四旋翼上。最后,应该会看到飞行器缓慢起飞到高度2米.

切换到固件目录
cd ~/src/PX4-Autopilot
启动gazebo仿真
make px4_sitl_default gazebo
启动MAVROS,链接到本地ROS
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
运行外部控制程序
rosrun offboard offboard_node

或者可以先升级ROS环境后启动px4的节点(我没试过)

cd &lt;Firmware_clone> 
make posix_sitl_default
source ~/catkin_ws/devel/setup.bash    // (只有mavros是用源码编译的才需要)
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build_posix_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 mavros_posix_sitl.launch
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门