PX4代码分析
文章平均质量分 81
SIR_wkp
这个作者很懒,什么都没留下…
展开
-
PX4-Autopilot v1.11.1 Makefile 的一点解读
好久没关注 PX4 的更新进度,最近正好想重新搭一个仿真环境,就下载了最新的代码来看。原本的下载地址https://github.com/PX4/Firmware已经更名为https://github.com/PX4/PX4-Autopilot,目前在浏览器里输入这两个链接都能打开。代码中只有主目录中一个 Makefile ,而且文件长度比原本v1.7.3 之前减少了很多,易读性大大增强。(实际上以前的我从来没看懂过,这次反而十几分钟就看懂了。)主要就干了两件事:1、定义所有可供 ma...原创 2020-11-08 21:57:48 · 861 阅读 · 0 评论 -
从 MAVROS 到 PX4 飞控的数据流向
上一篇分析了 MAVROS 中数据收发的实现方法。当用户发送一个 ros 话题的消息后,对应的 plugin 中的回调函数被处罚,ros 消息被包装成 mavlink 消息,从链路中发送出去。下面以 "/mavros/setpoint_position/local" 话题为例进行分析。一、MAVROS 部分用户代码发送了一个 "/mavros/setpoint_position/loc...原创 2019-02-21 23:54:09 · 3280 阅读 · 0 评论 -
MAVROS 源码分析
一、安装 MAVROS利用机载计算机对 PX4 飞控进行 OFFBOARD 控制,需要在机载计算机上安装 ROS 的 MAVROS 包。安装方式可以参考 PX4 开发者网站,有二进制文件安装和源码安装两种方式,选择其中一项即可。MAVROS 安装链接其中源码安装之后可以获得 MAVROS 的所有源代码。以下是 MAVROS 的官方 wiki 网址:http://wiki.r...原创 2019-02-21 17:52:53 · 4952 阅读 · 1 评论 -
PX4代码中LIDAR-Lite v3激光测距仪PWM驱动
调试了LIDAR-Lite v3激光测距仪PWM驱动,在这里做一下记录。飞控硬件是pixhawk1,PX4软件版本为1.7.3。按照官方教程进行接线和配置,链接为 https://docs.px4.io/en/sensor/lidar_lite.html。PWM的接线方式为: 这里接了 AUX_PWM 的 CH6 来供电,接 CH5 进行 PWM 捕获。而实际...原创 2019-01-02 18:07:57 · 1943 阅读 · 0 评论 -
PX4代码中LIDAR-Lite v3激光测距仪I2C驱动
调试LIDAR-Lite v3激光测距仪,通读了PX4代码中驱动相关的部分。在这里做一下记录。飞控硬件是pixhawk1,PX4软件版本为1.7.3。按照官方教程进行接线和配置,链接为 https://docs.px4.io/en/sensor/lidar_lite.html。首先,确保在 cmake/configs/nuttx_px4fmu-v2_default.cmake 文件中 ...原创 2018-12-25 02:09:18 · 1688 阅读 · 0 评论 -
PX4IO的编译过程、代码构架以及与PX4FMU的通讯分析
看到很多教程中讲到PX4飞控的协处理器的作用,包括各类遥控器信号的输入、PWM信号输出、以及与FMU的通讯。但是究竟如何实现的,最近几天自己看代码总算搞懂了,在这里分享一下。一,代码的组成和编译过程。 原始代码的主要代码位于 Firmware/src/modules/px4iofirmware文件夹中。打开CMakeList.txt文件,可以看到包含的文件还有位于其他文件夹中的部分源文件,以...原创 2018-06-02 17:48:12 · 4852 阅读 · 1 评论 -
PX4自动任务飞行AUTO_MISSION的实现流程
第一步,进入方式。 与之前分析的POSCTL模式类似,主要有遥控器开关和指令两种模式,实现过程完全相同。 最终都是调用了main_state_transition()函数将新模式写入到internal_state.main_state中。第二步,导航模式和控制模式的选择。 在commander的主循环中,set_nav_state()来设定导航模式。由于自动任务飞行需要使用各种传...原创 2018-06-22 19:58:20 · 5754 阅读 · 0 评论 -
PX4飞控手动位置控制POSCTL模式的实现流程
第一步,POSCTL模式的进入 1、从遥控器模式开关进入。 首先在PX4IO的主循环中调用了io_publish_raw_rc(),从IO芯片获取遥控器的各通道输入,发布input_rc消息; 然后,在Sensors的主循环中调用rc_poll()函数,获取input_rc消息的内容,按照通道映射和校准信息将遥控器输入值重新计算并写入manual_control_setpoint...原创 2018-06-13 21:48:32 · 2578 阅读 · 1 评论 -
PX4遥控器控制量和模式开关的实现
上一篇文章讲到了PX4FMU通过问答的方式从PX4IO获取所需的所有信息。在px4io.cpp文件中的task_main()的任务循环里,可以看到读取和发布IO芯片的函数有:1、io_get_status()——从IO芯片获取状态信息,并发布safety消息;2、io_publish_raw_rc()——从IO芯片获取遥控器所有输入通道的原始数据,并发布input_rc信息;3、io_pu...原创 2018-06-06 18:21:31 · 3059 阅读 · 0 评论 -
PX4FMU如何从PX4IO芯片读取数据
上一篇文章分析了PX4IO芯片中的数据接收和发送实现方式。得出结论是:PX4IO不会主动向PX4FMU发送任何数据,所有的发送都出于接收到数据之后的回复。那么PX4FMU究竟如何从PX4IO芯片读取数据,实现过程是怎样的,下面就结合代码进行分析。一、文件的位置。 上篇已经讲过,位于Firmware/src/drivers/px4io文件夹,主文件是px4io.cpp,任务入口函数是PX4IO...原创 2018-06-02 22:14:19 · 1511 阅读 · 2 评论