1.PX4软件架构和飞控系统概述
2.关于上位机如何控制pixhawk
3.测试和使用Pogo-DroneCAN RM3100 磁力计
PX4软件架构和飞控系统概述
PX4飞控系统概述
在无人机的迅猛发展中,飞控系统是上位核心的关键。作为入门学习的机源理想起点,PX4飞控系统,码飞源自瑞士ETH计算机视觉与几何实验室的控上开源项目Pixhawk,为全球爱好者提供高效且成本效益高的位机zepelin源码调试自动驾驶平台。它经过全球开发团队多年优化,源码构建了成熟的飞控软件架构,适用于多种飞行器类型,上位包括单旋翼、机源多旋翼和飞艇等。码飞
PX4软件架构由飞行控制栈和中间层构成。控上飞行控制栈负责无人飞行器的位机导航与控制,包括传感器输入、源码位置姿态估计、飞控控制器决策、导航指令生成和执行器管理。capanalysis 源码中间层则负责硬件通信和集成,通过异步通信机制实现模块间的高效交互,确保系统的可扩展性和灵活性。
具体来说,中间层还包括存储功能、传感器驱动、外部通信接口以及微对象请求代理器(uORB),这种订阅-发布机制使得系统支持实时数据交换和模块替换。此外,PX4可在多种操作系统(如Linux、macOS、Nuttx)上运行,执行模块通过任务或工作队列进行区分,以优化资源利用。
飞控系统架构更为广泛,包括飞行控制器、源码10011110传感器、负载、遥控和地面站等组件。基础架构支持自主起飞着陆和航点飞行,而复杂任务则需要更高性能的上位机,如任务计算机,通过MAVLink协议与其他设备进行通信,实现更高级的功能,如障碍物避障和精确着陆。
总结来说,通过理解PX4的软件架构和飞控系统架构,我们可以更好地掌握无人机的控制原理和实际操作。后续将深入探讨PX4的运行细节和应用开发,以满足日益复杂的无人机需求。对于对无人机技术感兴趣的读者,这是iot源码一份不可多得的入门指南。
关于上位机如何控制pixhawk
商业转载请联系作者获得授权,非商业转载请注明出处。
链接:
来源:知乎
以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。
既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,pagamo源码经常分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,
如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,
如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;
另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程;
px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIOLED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
px4io –px4io驱动
uavcan –uavcan驱动
飞行控制的程序
飞行安全和导航
commander –主要飞行安全状态机
navigator –任务,失效保护和RTL导航仪
估计姿态和位置
attitude_estimator_ekf –基于EKF的姿态估计
ekf_att_pos_estimator –基于EKF的姿态和位置估计
position_estimator_inav–惯性导航的位置估计
multirotor姿态和位置控制器
mc_att_control–multirotor姿态控制器
mc_pos_control –multirotor位置控制器
fixedwing姿态和位置控制器
fw_att_control –固定翼飞机的姿态控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿态控制器
vtol_att_control –垂直起降姿态控制器
最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁
希望可以帮助你,欢迎采纳
测试和使用Pogo-DroneCAN RM 磁力计
使用Pogo-DroneCAN RM磁力计进行测试与调试,主要通过DroneCAN调试器和DroneCAN_GUI_Tool上位机,或是Ardupilot/Pixhawk与MissionPlanner实现。此磁力计采用RM磁传感器,并支持DroneCAN/UAVCAN协议与飞控通信。
若你初次接触DroneCAN_GUI_Tool上位机和Pogo-DroneCAN调试器,推荐查阅相关教程。接线时,将DroneCAN调试器与RM磁力计按照指定方式连接,并使用TypeC线接入电脑。在上位机中,选择对应端口并完成连接。
DroneCAN_GUI_Tool上位机能够识别出磁力计,双击节点打开属性页面,可查看与修改参数,或更新固件。无需对参数进行调整,直接关闭页面。在CAN bus monitor界面,上位机接收磁力计数据,点击摄像头icon查看数据详情。
连接Ardupilot/Pixhawk飞控与MissionPlanner,确保飞控支持CAN总线与DroneCAN协议。使用TypeC线将磁力计连接至飞控的CAN1口。在MissionPlanner中加载DroneCAN节点,点击菜单按钮可查看节点信息,或加载参数。
在初始设置中,选择DroneCAN/UAVCAN或Slcan Direct加载节点。确保磁力计和飞控朝向一致,固定连接并校准。完成校准后,切换至飞行数据与状态栏,比较内置与外置磁力计数据,确保一致性。如有差异,联系Pogo智能科技客服,提供反馈以获得技术支持。