虽然怒飞老师给出了详细的windows下的开发环境的搭建教程。但是对于开发者而言,最好的系统环境还是在Linux系统下,尤其一些顶层开发下,还是用ROS香呀,所以我将尝试在ubuntu下建立完整的ardupilot开发环境。这篇文章就作为这个尝试的第一篇笔记,希望可以帮助到之后的朋友。
由于在github上下载较慢(我懒,还没弄过下载加速),所以建议使用gitee。
直接搜索一下就有了,搬运日期很新鲜,nice!
在自己喜欢的目录下,进行clone (这里默认大家都安装好了git并熟悉git的基本使用,如果不清楚的同学可以看这里Git教程)
git clone https://gitee.com/gu-kaifeng/ardupilot.git
不出意外的很快就下载完了。
然后我们基于目前最稳定的分支来新建一个分支“new_one”
然后需要更新子模块(这一步很容易失败,得想办法多试试;实在不行可以先用已经更新好的代码。比如我就失败好多次了,为了尽快弄通整个流程,我就用了以前的旧代码,它的子模块已经更新好了)
cd ardupilot
git checkout -b new_one Copter-4.0.7
git submodule update --init --recursive
最后一行命令其实也可以不用弄,在编译环境建立的时候,脚本会给我们自动更新子模块。
ardupilot的开发人员已经帮我们写好了编译环境的一键配置脚本
./Tools/environment_install/install-prereqs-ubuntu.sh -y
有大佬指出这样才能正常运行(注意要先切到environment_install文件下哈)
chmod +x install-prereqs-ubuntu.sh
我自己好像都试过,好像都可以。不重要,反正上面两个总有一个ok。
!!!不过由于国内网络特性,我们需要在修改一些东西。
这里,参考monte3card大佬在知乎的文章。
tar -jxvf xx.tar.bz2 -C /opt
按照monte3card大佬的说法上述一切顺利的话,最后只用像如下一样配置路径就好,ardupilot 官网也是这么写的。(注意,这个环境的配置命令的作用,如果不重启电脑的话,它只再当前terminal中有效。重启电脑后才算完全生效)
. ~/.profile
至此便大功告成!
完成了上述的编译环境搭建后,ardupilot的仿真环境也就搭建好了。接下来我们就可以按照官方的说明开始进行仿真。
cd ardupilot/ArduCopter
sim_vehicle.py --console --map
就可以出现仿真界面了:我们可以在终端输入相应的指令来控制飞机,然后再console和map里观察飞机的飞行状况
这里是一些自己无意踩到的坑,记录一下。
我自己在最后实际上遇到了意外,这些情况各位看官可能并不会遇到,但是我自己是遇到了。所以我就自己记录一下。
输入飞控固件的配置指令:
./waf configure --board fmuv3
等着我的不是finished successfull,而是:
然后我第一反应是这个好像在怒飞老师那里看见过,果然被我翻到了。但是重启并没有解决我的问题。那我猜测肯定是交叉编译环境没有成功地添加路径。于是我找到了这个帖子link
按照这个帖子的方法,和我自己的尝试,进行如下操作:
vim /etc/profile
export PATH=$PATH:/usr/lib/gcc/gcc-arm-none-eabi-4_9-2014q4/bin
source /etc/profile
此命令只在当前终端有效,若需要在其它终端中使用,需要重启计算机。在当前终端执行我们熟悉的waf命令后,everthing is ok! 最棒的是原来这台在windows环境下编译需要花费4min30s左右,而现在在ubuntu系统下,编译时间缩短为了1mim30s
在运行脚本时,我犯了两个致命错误,在编译上不会有问题,但是在进行仿真运行就让我找了很久的问题。
错误1:在配置pip国内镜像源时,把第一行的[global]没复制全,导致pip一直报错: ConfigParser.MissingSectionHeaderError: File contains no section headers.
解决方法:把pip的那个配置文件 .pip/pip.conf 里的错误改正
错误2:既然已经配置好了国内的高速镜像源,我还开了代理,解决了错误1后,它又一直报错:TypeError: unsupported operand type(s) for -=: ‘Retry’ and ‘int’
解决方法:关闭代理通道,重启电脑
解决这两个问题后再重新操作一下整个编译环境的配置过程,最终得到了完美解决
1.https://zhuanlan.zhihu.com/p/61616055
2.https://ardupilot.org/dev/docs/building-setup-linux.html#building-setup-linux
3.https://blog.csdn.net/yk150915/article/details/80117082