11

阿木币

1

精华

4 小时

在线时间

老司机

Rank: 2

发表于 2019-7-21 10:31:53 54144 浏览 18 回复

[入门教程] PX4开发环境搭建

前言

很多朋友在搭建PX4开发环境的时候都会出现一些环境配置的问题,今天笔者就来总结一下ubuntu系统下搭建PX4开发环境的过程。想要开发PX4的朋友强烈建议安装ubuntu系统,在windows下只会遇到很多问题,既不方便,编译速度也慢。下面的整个过程是笔者今天花了整整一天时间亲测过的,真实有效。
系统对比.jpg
   
添加用户到dialout工作组
将你创建的用户加入到用户组dialout中去,注销后重新登录。创建独立用户的目的是这样可以让开发环境分离开来,避免出现不同用户间的版本冲突等情况。将用户加入dialout用户组的目的是dialout拥有对串口tty的操作权限。
sudo usermod-a -G dialout$USER
安装软件包
基本上就是你编译程序,下载程序,调试程序需要使用的软件包了,ubuntu系统的一个好处就是可以使用指令直接安装这些程序,当然你也可以单独下载后再进行安装。
更新软件源列表:
sudo apt-get update -y

安装git、zip、cmake、qt、ninja等必用软件包:
sudo apt-get install git zip qtcreator cmake \
    build-essential genromfs ninja-build exiftool -y
安装python依赖包
安装常用python依赖包及管理工具:
sudo apt-get install python-argparse \
    python-empy python-toml python-numpy python-yaml \    python-dev python-pip -y
sudo -H pip install --upgrade pip
sudo -H pip install pandas jinja2 pyserial cerberus
安装日志分析工具
Pyulog可以帮助处理px4的日志文件,尤其是在提取单个topic的数据时非常方便,建议安装。
sudo -H pip install pyulog
安装Gazebo仿真软件
仿真软件有好几个,Gazebo只是其中一个,但是其功能强大,版本迭代也快,使用者人数众多,建议优先使用。
依赖包安装:sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev –y

设置软件包的来源:
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-get update -y

安装Gazebo:
sudo apt-get install gazebo9 -y

安装Gazebo9的依赖包:sudo apt-get install libgazebo9-dev -y
安装ROS和MAVROS
ROS和MAVROS对PX4二次开发以及想要通过其他板载计算机处理诸如视觉识别等任务的开发者来说是比较好的使用方案,建议有此类需求者安装。
设置软件包的来源:
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://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116

更新软件源列表:
sudo apt-get update

安装基础版ROS和MAVROS:
sudo apt-get install -y ros-kinetic-ros-base ros-kinetic-mavros ros-kinetic-mavros-extras

证书问题:
sudo c_rehash /etc/ssl/certs

MAVROS支持包:
sudo geographiclib-get-geoids egm96-5

rosdep初始化:
sudo rosdep init

rosdep更新:
rosdep update

设置ros运行环境:
echo "source /opt/ros/kinetic/setup.bash" >> $HOME/.bashrcsource /opt/ros/kinetic/setup.bash
安装交叉编译器
用户在ubuntu系统下编译的固件要在arm系统中运行,所以一定会用到交叉编译器,先到下面这个网站下一个比较高版本的安装文件:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
这里建议用2017-q4版本,笔者下载了以下3个版本试验过,只有这个版本在交叉编译时没有问题,这个跟PX4的版本有关。
Screenshot from 2019-07-19 10-26-46.png
解压缩:
tar -jxf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2

配置编译环境,将编译器的路径放到.bashrc或者.profile文件中:
export PATH=$HOME/gcc-arm-none-eabi-7-2017-q4-major/bin:\$PATH

查看编译器版本确认是否配置成功:
arm-none-eabi-gcc --version
运行指令及结果如下:
Screenshot from 2019-07-18 23-31-41.png
PX4代码管理
先到github上面找到px4,然后根据下图中的地址使用git clone指令下载代码:
px4git.png

下载代码:git clone https://github.com/PX4/Firmware.git

更新子模块:
git submodule update --init –-recursive

编译:
make px4_fmu-v3_default

编译后上传:
make px4_fmu-v3_default upload
环境配置验证
在完成上述环境的搭建之后,就可以开始仿真和固件的编译了
先进行仿真环境的测试,打开一个Terminal,进入到px4文件夹下,输入以下指令:
make px4_sitl gazebo
界面是这样的:
simulation.png

配合QGC进行仿真测试:
simulation_QGC.png

固件编译:
一般情况下仿真没有问题时如果编译固件出错都是交叉编译器的问题,这次小编亲自测试了三款交叉编译器的版本,发现只有2017-q4这个版本编译不出现问题,所以你们就去下这个版本的交叉编译器就行了。

一般没有安装交叉编译器时是运行编译指令时是这样的:
px4_cuowu.png

而交叉编译器出现版本问题时是这样的:
ERROR_MAKE.png


而编译成功是这样的(左边仿真,右边固件):
fangzhenhebianyi.png

关于MVAROS以及ROS的使用,我们以后有机会再单独讲述,在这里我们放一个运行MAVROS时的界面给大家看下,下图是运行MAVROS时发布的topic,ROS就是通过这些topic与px4进行数据交互的:
mavros—topic.png

总结

要开发PX4的朋友按照上面的步骤搭建环境一般就不会出现问题了,当然出现问题了也可以根据问题的提示单独进行解决,要想熟练地在ubuntu下进行嵌入式软件的开发还是需要了解一些常用的系统指令以及能够熟练使用像git一样的分布式版本管理系统。

最后,跟大家分享一点心得体会,我们在做技术开发时没有捷径可走,遇到问题先自己去定位问题,寻找答案,平时在开发的过程中也要善于总结,这样才能不断成长,在以后遇到相似的问题时也能提供可以借鉴的方法。只有自己尝试过后实在无法解决的时候才去寻求他人的帮助,这时候也应该将问题归纳总结,描述清楚,而不是提出一个让人看不明白的问题或者宽泛无边的话题,毕竟他人的时间是宝贵的,任何一个愿意为你解答问题的人都应该被尊重和感谢!!!

更多无人机技术知识课扫描下方二维码关注公众号:无人机系统技术。

文末图.jpg


gcc-2017-4.png
error_gcc-arm.png
mavros—topic.png

扫一扫浏览分享
回复

使用道具 举报

188

阿木币

3

精华

71 小时

在线时间

技术大V

Rank: 4

发表于 2019-7-21 12:22:13
点赞! 现在装PX4坑已经少很多了 当年都是各种折腾
回复 点赞

使用道具 举报

185

阿木币

0

精华

34 小时

在线时间

老司机

Rank: 2

发表于 2019-7-22 08:26:37
赞一个~~写的很详细了,北航无人机方向博士。。。期待分享更多文章
回复 点赞

使用道具 举报

202

阿木币

0

精华

373 小时

在线时间

版主

Rank: 7Rank: 7Rank: 7

发表于 2019-7-22 12:58:55
可以使用社区的markdown编辑器,排版更好更方便哦~  代码部分不是特别清楚   另外可以在资料中添加 更多信息,认证技术大V。可以获得阿木社区更多的资源支持哦,包括课程合作和项目合作。

回复 点赞

使用道具 举报

11

阿木币

1

精华

4 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2019-7-22 14:16:46
maxiou 发表于 2019-7-22 12:58
可以使用社区的markdown编辑器,排版更好更方便哦~  代码部分不是特别清楚   另外可以在资料中添加 更多信 ...

好,有空看一下
回复 点赞

使用道具 举报

11

阿木币

1

精华

4 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2019-7-22 14:17:17
AmovlabQYP 发表于 2019-7-21 12:22
点赞! 现在装PX4坑已经少很多了 当年都是各种折腾

都是折腾过来的,总结一下让大家可以方便入手
回复 点赞

使用道具 举报

11

阿木币

1

精华

4 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2019-7-22 14:17:38
goodQ 发表于 2019-7-22 08:26
赞一个~~写的很详细了,北航无人机方向博士。。。期待分享更多文章

可以关注公众号,那边文章比较多
回复 点赞

使用道具 举报

156

阿木币

0

精华

32 小时

在线时间

老司机

Rank: 2

发表于 2019-7-22 17:25:28
这个文档是所有px4都可以用吗?是基于哪个版本的啊,没提示一下。
回复 点赞

使用道具 举报

11

阿木币

1

精华

4 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2019-7-23 09:29:15
shanghuo 发表于 2019-7-22 17:25
这个文档是所有px4都可以用吗?是基于哪个版本的啊,没提示一下。

最新版本,老版本基本一样,有一些指令不同、交叉编译器可能有点差异而已
回复 点赞

使用道具 举报

52

阿木币

1

精华

2402 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2019-7-24 10:04:08
”毕竟他人的时间是宝贵的,任何一个愿意为你解答问题的人都应该被尊重和感谢!!!”  写的非常好,所以赶紧来我们技术问答专区回答悬赏提问吧。每一个认真回答,都可能获得阿木币的悬赏哦。未来阿木币有更多玩法。

回复 点赞

使用道具 举报

下一页 »
12下一页
返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表