px4

PX4

[亡魂溺海] 提交于 2020-03-07 04:14:37
1.概述 Pixhawk是飞控硬件平台,PX4和ArduPilot都是开源的可以烧写到Pixhawk飞控中的自驾仪软件,PX4称为原生固件,专为Pixhawk打造。APM(Ardupilot Mega)早期也是一款自驾仪硬件,到APM3.0版本,这款基于Arduino Mega的自驾仪已经走到了它的终点。ArduPilot早期是APM自驾仪的固件,Pixhawk作为APM的升级版,也兼容ArduPilot固件,APM自驾仪卒了之后,ArduPilot现在全面支持Pixhawk,现在大家亲切的称ArduPilot固件为APM。 参考链接: https://www.2cto.com/kf/201701/553291.html 2. 传感器 Pixhawk的传感器数据(陀螺、加计等)流程 参考链接: https://www.jianshu.com/p/5f50a90c6922 OSR:Over Sampling Ratio,过采样率 3. 函数应用 3.1 消息打印 PX4_WARN PX4_INFO PX4_ERR 来源: CSDN 作者: 敬天 链接: https://blog.csdn.net/u012688838/article/details/104695732

px4中的mavlink协议

廉价感情. 提交于 2020-02-10 23:59:14
原文地址:http://blog.csdn.net/oqqENvY12/article/details/61615609 PX4 对Mavlink 协议提供了良好的原生支持。该协议既可以用于地面站(Ground ControlStation, GCS) 对无人机(UAV) 的控制,也可用于对地面站的信息反馈。其飞控场景一般是这样的: 也就是说,如果你想要实现地面站控制飞行,那么由你的地面站使用Mavlink 协议,通过射频信道(或wifi 等)给无人机发送控制指令就可以了。如果你想实现无人机自主飞行,那么就由你自己写的应用(运行在无人机系统上)使用Mavlink 协议给无人机发送本地的控制指令就可以了。 在PX4 中,并不鼓励开发者在自定义飞控程序中直接使用Mavlink ,而是鼓励开发者使用uORB微对象请求代理器消息机制。 在uORB 机制中,交换的消息被称之为主题(topic) ,一个主题仅包含一种消息类型(即数据结构)。每个进程(或驱动模块)均可“订阅”或“发布”多个主题,一个主题可以存在多个发布者,而且一个订阅者可也订阅多个主题。 Mavlink传输时的基本单位是消息帧。 协议设计的目标是传输速度和安全性。它允许消息内容检查、消息丢失检测,每个数据包需要6 字节报头。 每次发完一个消息,SEQ的内容会加1,加到255后会从0重新开始

PX4 FMU启动流程 1.nsh

可紊 提交于 2020-01-27 04:07:58
PX4 FMU启动流程 1.nsh PX4 FMU启动流程 1.nsh -------- 转载请注明出处 -------- 2014-11-27.冷月追风 -------- email: merafour@163.com 现在我们来分析 FMU的启动。 我们应该先去看 “config_px4fmu-v2_default.mk”文件,但是该文件内容太多,不可能直接贴进来,于是我们只好取其中一些比较特殊的数据出来看下。 # # Use the configuration's ROMFS, copy the px4iov2 firmware into # the ROMFS if it's available # ROMFS_ROOT = $(PX4_BASE)/ROMFS/px4fmu_common ROMFS_OPTIONAL_FILES = $(PX4_BASE)/Images/px4io-v2_default.bin define _B $(strip $1).$(or $(strip $2),SCHED_PRIORITY_DEFAULT).$(or $(strip $3),CONFIG_PTHREAD_STACK_DEFAULT).$(strip $4) endef # command priority stack entrypoint BUILTIN_COMMANDS :=

PX4固件源码编译中的坑

余生长醉 提交于 2020-01-23 22:54:20
我这里是使用的我自己的电脑,安装的是ubuntu16.04系统,装有ROS Kinetic,包括gazebo之类的软件已经有了,这些安装方法网上也有很多,这里不多说。 1、创建仿真环境,第一步是源码编译PX4固件: 我的飞控是pixhawk4 (1)建立工作空间,克隆固件源码 mkdir -p ~/src cd ~/src git clone https://github.com/PX4/Firmware.git cd Firmware git submodule update --init --recursive (2)在编译时候要用到交叉编译器arm-none-eabi-gcc,可以用下面命令查看其版本: arm-none-eabi-gcc --version 一般用apt-get install安装的应该都是4.3版本,但这个版本大概率是编译不成的,包括后面的很多问题,都可能是这个编译器版本的问题,现在我们通过源码安装一个新版本的: 先上官网下个新版本的 网址在此 我大概试了试,新的几个版本7-2018-q2、8-2019-q3、8-2019-q4都可,我这里用的是8-2019-q3-update这个版本,下载下来以后解压: # 解压 cd ~/Downloads tar -jxf gcc-arm-none-eabi-8-2019-q3-update-linux.tar

px4自定义曲调

亡梦爱人 提交于 2020-01-13 22:12:52
https://dev.px4.io/master/en/advanced/system_tunes.html Firmware/src/lib/tunes/tune_definition.desc PX4_DEFINE_TUNE(0, CUSTOM, “”, true /* empty to align with the index /) PX4_DEFINE_TUNE(1, STARTUP, “MFT240L8 O4aO5dc O4aO5dc O4aO5dc L16dcdcdcdc”, true / startup tune /) PX4_DEFINE_TUNE(2, ERROR_TUNE, “MBT200a8a8a8PaaaP”, true / ERROR tone /) PX4_DEFINE_TUNE(3, NOTIFY_POSITIVE, “MFT200e8a8a”, true / Notify Positive tone /) PX4_DEFINE_TUNE(4, NOTIFY_NEUTRAL, “MFT200e8e”, true / Notify Neutral tone /) PX4_DEFINE_TUNE(5, NOTIFY_NEGATIVE, “MFT200e8c8e8c8e8c8”, true / Notify Negative tone /) PX4

[MAC] 飞行日志(log)可视化

匿名 (未验证) 提交于 2019-12-03 00:34:01
1)网页版: 网址 ,Upload日志文件即可! 2)FlightPlot。 在MAC上配置好PX4开发环境( 配置方法 ) 打开 terminal ,执行以下语句: >>cd ~ >>git clone --recursive https://github.com/PX4/FlightPlot.git >>cd FlightPlot >>ant >>open out/production/flightplot.jar #即可运行FlightPlot,以后直接执行本语句即可 open log,选择所需进行分析的log文件 Fields List,选择变量名称 单击Add,选择预处理方法,可默认为“Simple” 原文:https://www.cnblogs.com/liaoxinwaiting/p/9219016.html

PX4遥控器控制量和模式开关的实现

匿名 (未验证) 提交于 2019-12-03 00:22:01
上一篇文章讲到了PX4FMU通过问答的方式从PX4IO获取所需的所有信息。在px4io.cpp文件中的task_main()的任务循环里,可以看到读取和发布IO芯片的函数有: 1、io_get_status()――从IO芯片获取状态信息,并发布safety消息; 2、io_publish_raw_rc()――从IO芯片获取遥控器所有输入通道的原始数据,并发布input_rc信息; 3、io_publish_pwm_outputs()――从IO芯片获取并发布各通道实际输出的PWM值。 本篇将追寻input_rc消息的路线,确定遥控控制量是如何进入飞控的,并确定模式开关的实现原理。 在代码中,直接获取input_rc消息的主要有两个任务。 一个是mavlink_messages,暂且猜测其目的应该是将遥控器原始输入值发送到地面站来实现遥控器校准、通道映射的功能,经过地面站校准之后的信息有从mavlink协议发回给飞控,保存为遥控器相关的参数。 另一个就是sensors,在sensors.cpp文件的主任务循环中调用了Sensors::rc_poll()来获取input_rc消息并处理。 首先判断是否有遥控信号丢失,将判断结果保存在signal_lost中; 然后利用参数中的遥控器校准信息对各通道数值进行修剪,在转化为-1~+1之间的数值传递给_rc.channels[]数组中的对应位置