5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 6460|回复: 37
打印 上一主题 下一主题

不知道有没有人感兴趣, Pixhawk的一些中文开发文档

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-27 23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
相关的文档会陆续发布在我的博客
在翻译的同时也会加入一些自己的理解, 当然, 你也可以选择看原版。
下面这篇就是uORB的翻译, uORB是我认为在px4中的一个最基本的架构。由于论坛字数限制,只好发一个大概说明, 详细请到我博客察看: http://blog.arm.so/docs/167-0427.html

进程与应用程序(e.g. 传感器应用程序发送传感器数据到姿态过滤应用程序)之间的通讯是Pixhawk软件架构的重要组成部分。进程(在此文通常称之为节点)通过命名的总线交换的消息称之为“话题”,在Pixhawk 中,一个话题仅包含一种消息类型,例如:vehicle_attitude 话题传输包含姿态结构(滚动,俯仰和偏航估算(yaw estimates))的消息。节点可以在总线、主题上发布一条消息("Send" data) 或者订阅总线、主题("Receive" Data)。通讯双方之间并不知道在与谁通讯,可以存在多个发布者或一条消息有多个订阅者。这种设计模式可以防止锁定的问题,常用于机器人技术。为了保证高效,一条总线上始终只有一条消息,并且不使用队列存放。

Pixhawk的发布/订阅机制是通过“微对象请求代理”(micro object request broker,uORB)来实现,uORB实现了一个简单的发布/订阅模式。

快速入门
在深入细节之前,以下是一对简单、完整的发布/订阅模型。发布者发布一条名为“random_integer”的话题并用随机整数更新该话题。订阅者检查并打印这些更新。



评分

参与人数 1威望 +2 收起 理由
cctsao1008 + 2 赞一个!

查看全部评分

欢迎继续阅读楼主其他信息

沙发
 楼主| 发表于 2014-4-27 23:24 | 只看该作者
求审核。。
3
发表于 2014-4-28 00:07 | 只看该作者
你这翻译也太不容易理解了...还不如看原文呢
4
发表于 2014-4-28 00:08 | 只看该作者
顶一下
5
 楼主| 发表于 2014-4-28 10:28 | 只看该作者
爵爷 发表于 2014-4-28 00:07
你这翻译也太不容易理解了...还不如看原文呢

px4 项目用了很多“专用”术语  , 比如 advertise  。这个我实在不知道该怎么翻译 , 通篇看完后觉得公告最合适一点 还有topic, 这个其实翻译成话题 主题没多大区别吧? 要不给您翻译成帖子如何 ?


如果有问题请指出  ,少说这种没营养的一句话

6
发表于 2014-4-28 10:37 | 只看该作者
支持楼主~
来自安卓客户端
头像被屏蔽
7
发表于 2014-4-28 11:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
8
发表于 2014-4-28 12:15 | 只看该作者
无私的奉献总是难能可贵的,楼主加油!
有难题可以在此提出,大家一起参与讨论
希望本帖长盛不衰!
9
 楼主| 发表于 2014-4-28 12:26 | 只看该作者
hzbunny 发表于 2014-4-28 12:15
无私的奉献总是难能可贵的,楼主加油!
有难题可以在此提出,大家一起参与讨论
希望本帖长盛不衰!

感谢支持 翻译只是第一蛋, 在此之后我会分析下uORB的逻辑并且给出一段linux下的同等代码。

10
发表于 2014-4-28 13:20 | 只看该作者
liio 发表于 2014-4-28 10:28
px4 项目用了很多“专用”术语  , 比如 advertise  。这个我实在不知道该怎么翻译 , 通篇看完后觉得公 ...

有些专用术语可以不去翻译..直接引用原文比较容易理解..如果硬翻的话可能会引起歧义~~
11
 楼主| 发表于 2014-4-28 13:32 | 只看该作者
爵爷 发表于 2014-4-28 13:20
有些专用术语可以不去翻译..直接引用原文比较容易理解..如果硬翻的话可能会引起歧义~~

嗯 后期会把这方面的修改下。现在看来uORB部份可以不用说的这么仔细了。。

其实uORB就是一个类似共享内存的东西,它不需要使用信号同步的原因是 所有“订阅”者 必须只读的来访问其中的数据,并且同一时间内只会有一份有效数据,即便发布者进行多次更新发布 ,这次的数据会覆盖掉上一次的~~~

还以为有多悬 ,, 哎~

12
发表于 2014-4-28 17:53 | 只看该作者
liio 发表于 2014-4-28 13:32
嗯 后期会把这方面的修改下。现在看来uORB部份可以不用说的这么仔细了。。

其实uORB就是一个类似共享 ...

不用队列是因为怕延时...如果不小心队列堆积了会造成不必要的延时..这种内存读取倒是有个好处..是肯定实时的..

13
 楼主| 发表于 2014-4-28 18:44 | 只看该作者
爵爷 发表于 2014-4-28 17:53
不用队列是因为怕延时...如果不小心队列堆积了会造成不必要的延时..这种内存读取倒是有个好处..是肯定实 ...

今天陆陆续续翻译了下 , 目前都翻译完了 ,就是很拗口,晚上或者明天开始分析uORB的实现代码
来验证是否是使用的共享内存, 目前看来 这种架构相对于共享内存来说它把消息接口当成文件i/o一样的处理,这样就可以使用poll模型来等待某个主题上的更新
而且可单向设置某一主题上消息的接收频率。 这个也要看一下~

14
发表于 2014-4-28 19:40 | 只看该作者
可以都志同道合的摩友一起来翻译....5i模型翻译组
15
发表于 2014-4-28 20:03 | 只看该作者
liio 发表于 2014-4-28 18:44
今天陆陆续续翻译了下 , 目前都翻译完了 ,就是很拗口,晚上或者明天开始分析uORB的实现代码
来验证是 ...

但是这样做会不会有其他问题..比如文件锁一样的问题..还有就是频率对不上的话会不会导致读取缺失掉某个数据?
16
 楼主| 发表于 2014-4-28 20:12 | 只看该作者
爵爷 发表于 2014-4-28 20:03
但是这样做会不会有其他问题..比如文件锁一样的问题..还有就是频率对不上的话会不会导致读取缺失掉某个数 ...

目前还没有深入进去看这部分, 不过文件描述符不一定要与文件相关联,其实通俗的说就是一个句柄对象,与文件和io无关, poll调用的开销主要在线程调度 与其它无关

17
 楼主| 发表于 2014-4-28 20:14 | 只看该作者
zmin21 发表于 2014-4-28 19:40
可以都志同道合的摩友一起来翻译....5i模型翻译组

我不打算翻译他们的文档, 我会沿着rcS的启动顺序把一些沿途的模块给梳理一遍.搞清楚他们的系统架构,我的目的是为了移植到linux并且尽量保持原有的Real -time特性和高效.


18
发表于 2014-4-28 20:26 | 只看该作者
liio 发表于 2014-4-28 20:12
目前还没有深入进去看这部分, 不过文件描述符不一定要与文件相关联,其实通俗的说就是一个句柄对象,与文件 ...

那就是一个指针而已...不过估计不可能就一个单一的指针..

19
发表于 2014-4-28 20:39 | 只看该作者
liio 发表于 2014-4-28 20:14
我不打算翻译他们的文档, 我会沿着rcS的启动顺序把一些沿途的模块给梳理一遍.搞清楚他们的系统架构,我的 ...

楼主真棒,支持你!

我也想在改进pixhawk代码方面做一点工作,正在思考怎么开始

它的改写比apm复杂

20
发表于 2014-4-28 20:46 | 只看该作者
楼主是专门搞软件的吗?我看到博客里很多关于软件开发的文章


您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表