pixhawk模块添加和修改以及经验分享
2016-11-28 19:01
555 查看
我看了apm的代码半年,px4的代码也看了一段时间,把我在这个过程遇到的问题和大家分享一下,我觉得有些人也会遇到同样的问题,给这部分人一点提示。谢谢大家。
首先还是先从apm讲起,它是由一群无人机爱好者开发的一套代码,的到了广泛的普及,但是他的系统很庞大,冗余的部分也很多,对于一开始就看这套代码的人,会很乱。但是随着时间的推进,这套代码在他自己的硬件上运行的效率越来越低,主要是因为硬件的性能跟不上了。这时候市面上有一款硬件叫pixhawk ,他把自己的代码移植到了这个硬件上。开发这个硬件的公司是3dr,他们根据自己开发的硬件,和苏黎世联邦大学合作,开发了一套代码,名字就要px4。因此一款硬件,有两套代码,但是因为硬件叫pixhawk,所以在网上搜集资料的时候,两者的资料都会出现,要仔细分变是哪一套代码的分析文档。两套代码分别叫ardupilot和px4,这两个代码在github上是免费供电大家下载的,直接在github上下载就可以。
首先下载的代码,不能直接编译,要进行环境的搭建,在搭建好的环境上进行编译,然后可以把,编译好的固件上传到pixhawk这个硬件上,经过调试后就可以飞了,搭建环境的发法就参照官网就可以,两套代码的变异环境一样,都可以参照以下的网址http://dev.px4.io/ 至于编译固件的命令是:make px4fmu-v2_default upload
还有提醒大家一下,代码最好在linux下编译,因为代码就是再这个环境下开发的,编译的过程很顺利,时间也很短,有利于后期调试,
还有就是阅读源码,有何多软件都可以,但是我习惯使用QT,大家可以安装一个,具体安装方法可以在网上查一下,在源码的根目录下,输入命令qmake -project 就可以生成相应的工程.pro文件,在qtcreator里面打开.pro就可以阅读了。(qtcreator是随QT一起安装的)。在阅读源码的过程中,点击工程的.pro文件,在里面添加想的路径就可以跟踪变量了,这样阅读起来非常方便。
搭建好环境就可以进行一系列的二次开发,更具自己的需要进行更改源码,或者自己添加模块。我下面分别介绍一下这两者的具体操作在(px4)。
1.添加模块,首先从github下载代码,代开源码,先编译一次,因为这会生成很多文件,里面有好多文件需要这部分生成的文件,在里面的 src文件夹里面,是这套代码的主要部分,文件夹drivers是硬件的驱动,examples是系统提供的例子,而modules是具体的飞控代码,里面主要包含四个主要部分姿态结算、姿态控制,位置结算、位置控制。而我们添加的模块也一般就添加在这个文件夹里面,在里面新建一个文件夹,文件夹里面就存放具体的程序和编译文件。可以建立.c文件,用来编写自己要添加的部分,而新建的cmakelist用来编写配置文件,让系统来识别到我们所编写的程序,cmakelist的编写主要采用模仿,可以打开其他模块,根据他们的来编写,最主要的是.c文件名,要添加到cmakelist里面。添加结束后,在源代码的文件里面找到cmake文件夹,打开这个文件夹,找到comfigs文件夹,再打开找到nuttx_px4fmu-v2_default.cmake,在里面把自己添加的模块写在里面,就可以进行重新编译,这样新生成的固件里面就有我添加的这一部分了。
2.修改源码,源码的编译环境要求比较高,对于定义的变量,后期没有使用,也会被系统识别到,导致编译不通过,因此在修改的时候,一定要注意,特别是删除原有的代码时,很容易导致编译不通过,因此要细心的检查。
在讲一下,这套飞控是有自己的操作系统的,因此可以进入他的实时系统里面,进行相应的查看信息。直接打开命令screen /edv/ttyACM0 57600 8N1 就可以查看里面的内部信息,如果想进入nsh系统,在里面继续输入module losd nsh ,然后输入 nsh start ,就已经进入了nsh系统,通过help命令,可以查看我们所能查看的部分。在跟大家说一下,有的时候这个命令会导致乱码,莫名其妙的问题,这时候大家可以安装一个软件叫做mavproxy,安装完成后通过这个命令mavproxy.py
--master=/dev/ttyACM0 同样可以进入nsh,操作方式是一样的,可以查看里面的信息。
上面讲的两个命令ACM0是对于大部分电脑的,但是有的部分电脑会有例外存在,这时候,在linux下可以通过ls /dev/tty*来查看设备,拔掉飞控以后在输入这个命令,少了哪一个就知道飞控对应的是哪一个接口。
本来还有图片,但是太麻烦了,这次就算了,谁要时有问题,随时可以问。
首先还是先从apm讲起,它是由一群无人机爱好者开发的一套代码,的到了广泛的普及,但是他的系统很庞大,冗余的部分也很多,对于一开始就看这套代码的人,会很乱。但是随着时间的推进,这套代码在他自己的硬件上运行的效率越来越低,主要是因为硬件的性能跟不上了。这时候市面上有一款硬件叫pixhawk ,他把自己的代码移植到了这个硬件上。开发这个硬件的公司是3dr,他们根据自己开发的硬件,和苏黎世联邦大学合作,开发了一套代码,名字就要px4。因此一款硬件,有两套代码,但是因为硬件叫pixhawk,所以在网上搜集资料的时候,两者的资料都会出现,要仔细分变是哪一套代码的分析文档。两套代码分别叫ardupilot和px4,这两个代码在github上是免费供电大家下载的,直接在github上下载就可以。
首先下载的代码,不能直接编译,要进行环境的搭建,在搭建好的环境上进行编译,然后可以把,编译好的固件上传到pixhawk这个硬件上,经过调试后就可以飞了,搭建环境的发法就参照官网就可以,两套代码的变异环境一样,都可以参照以下的网址http://dev.px4.io/ 至于编译固件的命令是:make px4fmu-v2_default upload
还有提醒大家一下,代码最好在linux下编译,因为代码就是再这个环境下开发的,编译的过程很顺利,时间也很短,有利于后期调试,
还有就是阅读源码,有何多软件都可以,但是我习惯使用QT,大家可以安装一个,具体安装方法可以在网上查一下,在源码的根目录下,输入命令qmake -project 就可以生成相应的工程.pro文件,在qtcreator里面打开.pro就可以阅读了。(qtcreator是随QT一起安装的)。在阅读源码的过程中,点击工程的.pro文件,在里面添加想的路径就可以跟踪变量了,这样阅读起来非常方便。
搭建好环境就可以进行一系列的二次开发,更具自己的需要进行更改源码,或者自己添加模块。我下面分别介绍一下这两者的具体操作在(px4)。
1.添加模块,首先从github下载代码,代开源码,先编译一次,因为这会生成很多文件,里面有好多文件需要这部分生成的文件,在里面的 src文件夹里面,是这套代码的主要部分,文件夹drivers是硬件的驱动,examples是系统提供的例子,而modules是具体的飞控代码,里面主要包含四个主要部分姿态结算、姿态控制,位置结算、位置控制。而我们添加的模块也一般就添加在这个文件夹里面,在里面新建一个文件夹,文件夹里面就存放具体的程序和编译文件。可以建立.c文件,用来编写自己要添加的部分,而新建的cmakelist用来编写配置文件,让系统来识别到我们所编写的程序,cmakelist的编写主要采用模仿,可以打开其他模块,根据他们的来编写,最主要的是.c文件名,要添加到cmakelist里面。添加结束后,在源代码的文件里面找到cmake文件夹,打开这个文件夹,找到comfigs文件夹,再打开找到nuttx_px4fmu-v2_default.cmake,在里面把自己添加的模块写在里面,就可以进行重新编译,这样新生成的固件里面就有我添加的这一部分了。
2.修改源码,源码的编译环境要求比较高,对于定义的变量,后期没有使用,也会被系统识别到,导致编译不通过,因此在修改的时候,一定要注意,特别是删除原有的代码时,很容易导致编译不通过,因此要细心的检查。
在讲一下,这套飞控是有自己的操作系统的,因此可以进入他的实时系统里面,进行相应的查看信息。直接打开命令screen /edv/ttyACM0 57600 8N1 就可以查看里面的内部信息,如果想进入nsh系统,在里面继续输入module losd nsh ,然后输入 nsh start ,就已经进入了nsh系统,通过help命令,可以查看我们所能查看的部分。在跟大家说一下,有的时候这个命令会导致乱码,莫名其妙的问题,这时候大家可以安装一个软件叫做mavproxy,安装完成后通过这个命令mavproxy.py
--master=/dev/ttyACM0 同样可以进入nsh,操作方式是一样的,可以查看里面的信息。
上面讲的两个命令ACM0是对于大部分电脑的,但是有的部分电脑会有例外存在,这时候,在linux下可以通过ls /dev/tty*来查看设备,拔掉飞控以后在输入这个命令,少了哪一个就知道飞控对应的是哪一个接口。
本来还有图片,但是太麻烦了,这次就算了,谁要时有问题,随时可以问。
相关文章推荐
- pixhawk 发展历史、模块添加、修改和经验分享
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除
- FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)
- PHP简单系统数据添加以及数据删除模块源文件下载
- SQL经验分享(二)取得数据库中所有的表名、字段名以及字段属于哪个表
- Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数)
- oracle 表约束的添加、修改以及约束的禁用启用
- CREATE TABLE、ALTER TABLE、DROP TABLE等,及表内列的添加、删除以及列的修改
- 向apache添加模块以及一些说明
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- 分享一下,如何编译自己修改的源码模块
- sqlserver对字段的添加修改删除、以及字段的说明
- PHP简单系统数据添加以及数据删除模块源文件下载
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- 分享下我的z_blog模版 Google广告添加经验。
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)
- ASP.NET FCKeditor 上传修改,添加对文件的类型以及大小的限制
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- 一些工具(online和client的)、常用网址、以及经验总结等罗列出来和大家分享下