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

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




手动配置

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 requiredcomponentstar -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.shexport 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

Ubuntu18.04安装PX4并与ROS联合实验相关推荐

  1. Ubuntu18.04安装basler相机的ROS驱动程序pylon_ros_camera

    系统:Ubuntu 18.04 64位,ROS:melodic 安装basler单目相机驱动之前需要安装ROS,安装过程见我之前发的博客,一定要确保rosdep update成功,否则可能会导致安装失 ...

  2. Ubuntu18.04安装ROS Melodic(解决网络原因,先将所需压缩包下载到本地,然后rosdep update)

    Ubuntu18.04安装ROS Melodic(解决网络原因,先将所需压缩包下载到本地,然后rosdep update) 一.ROS介绍 机器人操作系统(Robot Operating System ...

  3. Nvidia TX2 Ubuntu18.04 安装 IntelRealsense L515 realsense SDK 及 Realsense ROS (make各种问题解答,一篇到位版本)

    前提:刷完tx2板子 及 安装完ros 可以参考我这两篇博客 Nvidia JetsonTx2 Ubuntu18.04 安装 ros melodic(顺带快速解决sudo rosdep init问题) ...

  4. Ubuntu18.04安装ROS最后的rosdep update不成功解决方案(亲测可行)

    Ubuntu18.04安装ROS最后的rosdep update不成功解决方案(亲测可行) 问题描述 很多人在安装ROS时会卡在最后一步rosdep update上面,虽然这一步不成功并不影响小海龟的 ...

  5. ubuntu18.04安装Realsense D435i 摄像头的驱动SDK和ROS Wrapper

    ubuntu18.04安装Realsense D435i 摄像头的驱动SDK和ROS Wrapper 2022年更新: 安装教程同:进更新安装包下载方式和下载链接--见文末. 1.安装Realsens ...

  6. Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)

    这也是我在Ubuntu里面安装ROS的第N次,以前每次安装过程都忘记总结了,导致每次安装ROS都浪费了很多的时间用来解决各种问题.为了避免自己以后出现问题需要再安装,所以写这篇博客总结一下,这次是我安 ...

  7. Ubuntu18.04安装ROS Melodic+turtlebot3仿真配置

    先说一下基本情况,因为本科毕业设计,需要用到Ubuntu,ROS,还有Turtlebot3,所以自己研究了一下.在安装ROS和使用Turtlebot3的过程中遇到了很多问题,但幸好最终都解决了.所以总 ...

  8. Ubuntu18.04安装ROS过程记录:主要解决 sudo rosdep init时的无法连接和rosdep update时的time out问题

    安装流程基本上参考的文章[1],在过程中遇到一些问题.采用以下步骤解决: 1.是初始化命令时出错 sudo rosdep init 提示:sudo rosdep:找不到命令提示,参照[2]的解决方案 ...

  9. Ubuntu18.04 安装ROS Melodic(官方版) 之不使用科学方法

    此前记录了官方安装流程,参见Ubuntu18.04 安装ROS Melodic(官方版),但是受限于无法访问raw.githubusercontent.com,需科学方法才能成功安装,带来诸多不便,网 ...

  10. Ubuntu18.04 安装完成后的开发配置

    Ubuntu18.04 安装完成后的开发配置 1 终端工具 2 屏幕录制工具 3 屏幕截图工具 4 向日葵远程操作与开机自启动设置 5 MarkDown笔记工具 6 ROS 机器人操作系统安装 7 编 ...

最新文章

  1. 微软DevWow博客达人征文大赛
  2. Oracle序列的建立以及使用
  3. ps -ef | grep 查看进程命令
  4. 深度学习之循环神经网络(9)LSTM层使用方法
  5. java redis hash_我爱java系列---【redis中如何存取hash类型的值(key field value)】
  6. 如何把本地yum源给其他机器使用_配置本地yum源以及第3方软件仓库的搭建
  7. 类似新浪微博和google图片的HTML5实现图片拖拽上传功能
  8. ubuntu使用CMake时报错compilation terminated找不到头文件解决方法
  9. 软件测试第五周 - 编码的 UI 测试
  10. FISCO BCOS源码(6)编译源码 获取FISCO BCOS可执行程序
  11. php字符串操作整理,PHP学习之整理字符串
  12. 北京-京医通-小孩-人脸识别
  13. 不能登录Google账号
  14. 弹出登录框 您未被授权查看该页 的解决办法
  15. Kyligence 完成 2500 万美元 C 轮融资,Coatue 领投
  16. windows 无法停止ics_Win10系统ICS服务启动后停止怎么办
  17. 对Slim 框架进行总结 一
  18. Java8新日期和时间API
  19. 5000词学英语——DAY1
  20. phantomjs html2Image.js 网页转换图片

热门文章

  1. 你可以将类似于Google Earth的地球仪嵌入到自己的网站中
  2. python读音有道-[Python]通过有道词典API获取单词发音MP3
  3. 为什么每个阿里新人都要上“百阿”?
  4. 【计算机网络】数据链路层(超多图详析)
  5. 如何下载电驴网站Verycd上的资源
  6. python计算微分方程组_如何使用python计算常微分方程?
  7. html发送邮jmail,[分享]一个ASP写的JMAIL邮件发送测试程序,测试空间是否可以发送邮...
  8. 如何解决切换双系统导致windows没声音的问题
  9. QA | 关于手持式频谱仪,您想了解的那些技术问题(一)
  10. 教你用C调1645和弦,写出不一样的歌