PX4源码开发人员文档一软件架构.doc

上传人:wj 文档编号:1227397 上传时间:2023-04-30 格式:DOC 页数:5 大小:723.50KB
下载 相关 举报
PX4源码开发人员文档一软件架构.doc_第1页
第1页 / 共5页
PX4源码开发人员文档一软件架构.doc_第2页
第2页 / 共5页
PX4源码开发人员文档一软件架构.doc_第3页
第3页 / 共5页
PX4源码开发人员文档一软件架构.doc_第4页
第4页 / 共5页
PX4源码开发人员文档一软件架构.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PX4源码开发人员文档一软件架构.doc

《PX4源码开发人员文档一软件架构.doc》由会员分享,可在线阅读,更多相关《PX4源码开发人员文档一软件架构.doc(5页珍藏版)》请在冰点文库上搜索。

PX4源码开发人员文档一软件架构.doc

软件架构

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(min_interval);  

函数回调

每次订阅主题更新,则'rc_channels_callback_function'被调用。

[cpp] viewplaincopy

1.unsigned min_interval =500;  

2._n.subscribe(rc_channels_callback_function, min_interval);  

类方法回调

相当于前面函数的例子。

1._n.subscribe(&SubscriberExample:

:

rc_channels_callback, this, min_interval);  

混合系统

为了解决更高级别的挑战,比如基于视觉的避障或者复杂控制问题,一个运行嵌入式Linux的伴随计算机将非常有用。

集成ROS 

PX4可以通过两种不同的API与ROS整合到一起:

或者自然地将每一个应用作为ROS节点,或者通过mavros在嵌入式自驾仪上唯一地运行

DroneAPI

DroneAPI是一个高级应用程序接口,类似于一个为远程过程调用(RPC)提供语言绑定的函数库。

从本质上讲,它是面向告诉无人机去哪里或做什么,而不是核心的机器人通讯/API的一部分。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2