PX4无人机仿真_Gazebo(1)

搭建Gazebo仿真环境

看了网上很多教程发现教程太分散了,各个PC在配置环境前的情况不一样导致有很多bug也不一样。于是小编下定决心整理一次!若我的bug恰好也是你的bug,小编不胜荣幸!


首先感谢以下网站作为参考

-https://blog.csdn.net/yrc19950911/article/details/79693648
-https://blog.csdn.net/oqqENvY12/article/details/55263122
-https://github.com/PX4
-https://blog.csdn.net/al86866365/article/details/47424727

小编只是对以上教程加自己的debug经验做出总结整理,望大家笑纳~~

下面让我们开始

本教程基于ubuntu16.04 , python2.7,ROS-kinetic 系统及环境
实现在Gazebo上对PX4无人机的仿真

再啰嗦几句,本教程不从零开始。各位配好的大佬已经配好,没有配好的小伙伴可以照此教程找找错误所在,但是我还是简要说一下配环境的流程:
快看小黑板(接下来的debug顺序按此流程)

1.按照教程安装编译PX4的依赖包
2.建立好目录结构
3.下载PX4代码到对应的目录结构
4.终于可以编译啦
5.进入Gazebo仿真之前
6.进入Gazebo仿真

》》》》》》》》》》

第一步-安装编译PX4依赖包

https://www.ncnynl.com/archives/201709/2009.html
首先要做的就是打开上面的链接,从权限设置开始,到骁龙的工具链安装。因为我们只关注Gazebo仿真所以暂时不用管QDN的SDK。
当你正在欢脱的按照教程安装就快大功告成的时候
在添加arm-non-eabi工具链部分
希望你和我都执行到最后一个命令并且看到了如下结果sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa
PX4无人机仿真_Gazebo(1)
你只要按下ENTER键就完成了删除arm-none-eabi和删除source中ppa源的部分。
亲爱的小伙伴,你以为这样就结束了吗?太天真了!我们只是删除了残余,还没有安装arm-none-eabi这个东西。现在你可能要问了,这是个什么东西?

虽然都是linux系统开发,但是不同内核的CPU所需要的编译工具是不一样的,这就产生了一种叫做交叉编译器的工具。交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序。
arm-none-eabi-gcc:是 GNU 推出的的ARM交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。

当我们在开发ARM版的linux的时候(比如树莓派),所要用到的编译器就是带有arm-none-eabi这样类似的前缀的,所以我们还需要安装一个arm-none-eabi-gcc
(如果没有安装在之后编译PX4代码的时候会出现>could not find arm-none-eabi-gcc compiler)本着缺啥装啥的原则我们也应该装一个!
接下来就按照如下链接安装arm-none-eabi-gcc,注意不用进行最后gcc版本的切换,gcc在编译的时候会自动去找到合适的编译器。
https://blog.csdn.net/al86866365/article/details/47424727
PX4无人机仿真_Gazebo(1)

》》》》》》》》》》

第二&三步、建立好目录结构

为啥合在一起写?因为关于目录结构的建立以下链接中已经说的很清楚了
https://www.ncnynl.com/archives/201709/2013.html
大家按部就班就好。注意!有的教程没有递归到子目录,也就是执行git submodule update --init --recursive
这是很坑的地方,我们来看PX4源代码所在的github https://github.com/PX4 我们会发现这里有所需要每个模块的代码
PX4无人机仿真_Gazebo(1)
按照目录进入Firmware/Tools我们可以看到在目录下的sitl_gazebo右面有个@,这是什么意思?
PX4无人机仿真_Gazebo(1)
我们继续点击进入[email protected]
PX4无人机仿真_Gazebo(1)
很好它是有东西的,但是!注意到页面最上方PX4目录,它并不如我们所期望的在PX4/Firmware/Tools/sitl_gazebo目录下,而是直接跳转到了PX4/sitl_gazebo目录!也就是说如果你没有执行递归的git指令,你在自己的目录中进入sitl_gazebo(输入cd ~/src/Firmware/Tools/sitl_gazebo)你会发现目录下什么都没有,nothing!nothing!Firmware里还有许多这样的情况,要不你就根据报错深入到源代码库的对应目录git对应的package,要不就老老实实按本教程来。小编怂怂的选择后者~

》》》》》》》》》》

第四步、终于可以编译啦

编译的命令在教程里也讲清楚了
cmake ..
make
首先,如果cmake ..出错了,检查一下你在前面几步是不是漏装了什么工具链!
好不容易cmake ..成功了,make又出现了错误
PX4无人机仿真_Gazebo(1)
原来是jinja2没有安装,缺啥补啥,果断装一个
sudo apt-get install python-jinja2

装成功后再次make
PX4无人机仿真_Gazebo(1)
我们可以看到已经成功了!

》》》》》》》》》》

第五步、进入Gazebo仿真之前

不妨先进行一下基本仿真,检查自己前面几个步骤的仿真必备条件是否已经真正完成了。只需要执行如下命令:
make posix_sitl_default jmavsim
PX4无人机仿真_Gazebo(1)
我们已经可以看到jmavsim弹出了仿真界面,这时候你在命令行输入commander takeoff它也是可以起飞的,但是这就说明你成功了么?太天真了!我们看到px4的启动代码里还是有报错的。
PX4无人机仿真_Gazebo(1)
这又是什么错误呢!
对,还是工具链没有装全的问题,如果遇到这类问题,欢迎返回步骤一进行检查(坏笑中。。)
如果发现此类错误,请怀疑自己的偷懒->没有装全软件和依赖

》》》》》》》》》》

第六步、进入Gazebo仿真

在src/Firmware目录下运行教程所述的指令make posix_sitl_default gazebo
PX4无人机仿真_Gazebo(1)
咋回事???内存不够了?好吧,我们再为ubuntu挂载一个8G的swap虚拟内存,参考如下链接。
https://blog.csdn.net/qq_17046291/article/details/79023305
再次执行make posix_sitl_default gazebo
PX4无人机仿真_Gazebo(1)
我们看到px4已经成功运行了,可是为什么没有弹出Gazebo的仿真界面?有同样问题的小伙伴一定和小编一样崩溃,离成功只差一步了┗|`O′|┛ 嗷~~让我们往上翻看看错误:
PX4无人机仿真_Gazebo(1)
我们看到提示说要用root运行?好吧,那就sudo一下
执行sudo make posix_sitl_default gazebo怀着一颗忐忑不安的心等待>>>>>>>>
PX4无人机仿真_Gazebo(1)
PX4无人机仿真_Gazebo(1)
终于成功了!没有报错,也弹出了Gazebo的仿真页面!
小编终于可以安心睡一觉了!