PX4源码开发人员文档一软件架构.doc
- 文档编号:231706
- 上传时间:2022-10-07
- 格式:DOC
- 页数:5
- 大小:723.50KB
PX4源码开发人员文档一软件架构.doc
《PX4源码开发人员文档一软件架构.doc》由会员分享,可在线阅读,更多相关《PX4源码开发人员文档一软件架构.doc(5页珍藏版)》请在冰豆网上搜索。
软件架构
PX4在广播消息网络内,按照一组节点(nodes )的形式进行组织,网络之间使用像如“姿态”和“位置”之类的语义通道来传递系统状态。
软件的堆栈结构主要分为四层:
·应用程序接口:
提供给app开发人员,使开发人员可以使用ROS 或者DroneAPI。
这一接口设计尽可能简洁和扁平,并尽量多的隐藏复杂性。
· 应用框架:
这是一组核心缺省应用程序(节点),运行核心的飞行控制。
· 函数库:
这一层包括针对机器核心操作的所有系统函数库和功能
·操作系统:
最后一层,提供硬件驱动、网络通信、UAVCAN和故障安全(failsafe)系统。
内部进程通信(InterProcessCommunication,IPC)
PX4 平台的封装提供了跨平台的无锁发布 -订阅模式( publish–subscribepattern) 对象请求处理器。
取决于平台/操作系统,完成这个的后端可能是uORB,或者Linux上的ROS/DDS(datadeliveryservice)。
封装可扩展,也可作为消息系统提供支持,比如ØMQ 。
所有这些后端的共同特点是,它们都允许发送数据到一个像如“位置”这样的语义订阅主题(topic),并使多个接收器跨进程的收到这一数据。
IPC性能
发布(Publication)到订阅(subscription)之间的延迟:
·uORB:
23us@168 MHz STM32F4
· ROS:
TBD
·ROS2/DDS:
185us@1.6 GHz IntelPentium4and2 GB RAMrunningWindowsXP(details)
·ZeroMQ:
170us@1.6 GHz IntelPentium4and2 GB RAMrunningWindowsXP(details)
安全和保护模型
飞行核心与主要应用级处理过程隔离,以确保独立于高层级系统状态的机器核心操作,保持稳定。
PX4应用程序框架
PX4应用程序框架在所有平台上代码兼容,(比如 Pixhawk/NuttX,又比如, SnapDragon/Linux),独立并将中间设备作为传输层。
节点句柄(NodeHandle)
节点句柄是每一个连接到中间设备的发布器(publisher)或者订阅器(subscriber)的核心数据结构(一个节点可以同时是发布器和订阅器)。
一个节点是一个逻辑单元,每一个进程都可以有多于一个的节点(虽然这并不是典型的形式)。
1.px4:
:
NodeHandle n();
数据结构
对于所有相关的中间设备实现,PX4根据储存在“msg”中的定义文件自动生成据结构。
发布(publication)
通过使用节点句柄通告(advertise)订阅主题( topic)来创建一个新的发布(publication)。
注意这个模板,是订阅主题的数据结构。
1.px4:
:
Publisher : px4_rc_channels>* rc_channels_pub = n.advertise 从这个指向 rc_channels_pub 的句柄的指针,可以用于发布数据 1.px4_rc_channels rc_channels_msg; 2.rc_channels_msg.data().timestamp_last_valid= px4: : get_time_micros(); 3._rc_channels_pub->publish(rc_channels_msg); 订阅(Subscription) 通过订阅一个订阅主题创建一个新的发布。 注意模板,是订阅主题的数据结构。 使用订阅共有三个选择: 1. 使用订阅主题的句柄,进行手动复制操作。 2. 作为函数的回调(callback),在订阅主题更新时,函数被调用。 3. 作为类方法的回调(相当于函数,但是是C++类型的) 单纯订阅 除非手动调用复制方法,否则数据不会被复制。 1.unsigned min_interval =500; 2._sub_rc_chan = _n.subscribe 函数回调 每次订阅主题更新,则'rc_channels_callback_function'被调用。 [cpp] viewplaincopy 1.unsigned min_interval =500; 2._n.subscribe 类方法回调 相当于前面函数的例子。 1._n.subscribe : rc_channels_callback, this, min_interval); 混合系统 为了解决更高级别的挑战,比如基于视觉的避障或者复杂控制问题,一个运行嵌入式Linux的伴随计算机将非常有用。 集成ROS PX4可以通过两种不同的API与ROS整合到一起: 或者自然地将每一个应用作为ROS节点,或者通过mavros在嵌入式自驾仪上唯一地运行 DroneAPI DroneAPI是一个高级应用程序接口,类似于一个为远程过程调用(RPC)提供语言绑定的函数库。 从本质上讲,它是面向告诉无人机去哪里或做什么,而不是核心的机器人通讯/API的一部分。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PX4 源码 开发人员 文档 软件 架构