之前看了许多介绍px4环境搭建的文章有介绍windows下eclipse和ubuntu下eclipse阅读px4源码的文章,但是没有看到对px4进行代码调试的文章,后来查看px官网发现可以通过visual code进行jlink调试代码,突然觉得这个不错,打算搭建这个环境。(写的少不太会文章排版,将就看,求谅解)
开始之前先介绍一下我的基本环境,Jlink,px4fmu-v2的裸板(焊接了SWD线),VMware15下Ubuntu16.04,大致如此,其他软件需要了在下载。
步骤一,下载源码
这个不用多说,直接按照官方文档进行源码下载,完事之后记得更新子模块。如果你网速比较好可能一遍就成功,如果网速不好,比如像我,公司网速特别差,下载最好就3,4百kb,往往下载这就断了,子模块下载了好几遍,直到20来个子模块全部ok,我才输了口气。
步骤二 ,ubuntu环境依赖下载
官网支持JMAVSim Simulation Gazebo Simulation ROS, 我暂时没想着进行simulation所以只想这能编译代码并且在线调试,看看代码就行,至于Gazebo仿真,需要了在整,所以我没有按照官网的推荐去做。
更改用户组,删除不必要的模块管理。这两个命令记得输入。
官网推荐 下载完源码后 一键脚本即可 bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
说实话这样做也行,但是肯定脚本中做了许多我不清楚的事情,我不太想这么做,打算看看脚本,需要什么我自己安装呗。
这个是px4的通用依赖,说实话我没有全部安装,也可能我以前安装过许多现在并不知道,所以我没有挨个敲,想着需要了在安装。
python的依赖和INSTALL_NUTTX的依赖还是需要的,最好全部安装。然后gcc的版本脚本写的是“7-2017-q4-major” 我的环境之前就是5的,所以我没有装,但是后来证明,5的版本在编译的时候会报错,所以还是要更新这个gcc-none-eabi的版本。SITL,和gazebo我直接跳过。
和ubuntul.是同一目录的requirement.txt这个目录有许多python的模块,这个我后来编译不过,报了许多有关python的模块无法解析的错误,我手敲挨个安装的,不太懂python,编译的时候需要啥,我就安装啥,后来发现需要挺多,就全部安装了requirement.txt的所有模块。
好了致此应该具备编译PX4代码的环境,具体如果编译的时候遇到什么错误,个人建议是认真把错误挨个看一遍,不要害怕报错,尝试理解报错,尝试自己想为啥,不行在百度,解决的多了,你知道的就多了。
直接输入编译命令 make px4_fmu-v2 ,编译结果如下图所示。
步骤三 vscode环境搭建
下载vscode安装,这个直接百度安装吧。然后按照官网的提示一步一步导入代码,选择调试项目。
这里有个问题可能没有px4-v2的选项,按照launch.json配置自己添加,我按照其他的json配置复制粘贴,然后修改了program项目,填入自己的编译px4-v2_default.elf 的目录。
完事之后就可以点击debug进行在线调试,查看内存变量,栈回调,单步执行等等。
总结:
以上只是简单概述了我按照官网进行vscode对px4代码进行在线调试的环境搭建。具体源码阅读需要看看makefile,启动脚本了,等等,是怎么组织源文件的。在线调试起到一个辅助的作用。当然在这个环境的搭建过程中,并没有那么顺利,也遇到了一些坑,包括源码下载,下载后编译gcc的版本支持,cmake的版本过低,等等。遇到错误一定要认真分析,尽量抓住要点进行百度,这样慢慢就会知道的越来越多嘻嘻。
这篇文章写得比较粗糙,其实也不是粗糙,事实上是,我想写得很详细,但是写起来发现除了附图,很难表达出自己真正的想法,我想着可能就是写得少外加不会写文章的原因吧。希望以后自己多多练习起来。
总而言之,希望对看px4代码的朋友有所帮助。