- Debugging/Logging - 飞行日志分析
- Debugging/Logging - ULog文件格式
- 教程
- 教程 - 地面站
- 教程 - 编写应用程序
- 教程 - QGC的视频流
- 教程 - 远距离视频流
- 教程 - u-blox M8P RTK
- 新手上路
- 新手上路 - 初始设置
- 新手上路 - 安装工具链
- 安装工具链 - Mac OS
- 安装工具链 - Linux
- Linux - Advanced Linux
- 安装工具链 - Windows
- 新手上路 - Fast RTPS installation
- 新手上路 - 代码编译
- 新手上路 - 高级配置
- 新手上路 - 贡献& 开发者电话会议
- 贡献& 开发者电话会议 - GIT例程
- 贡献& 开发者电话会议 - Documentation
- 新手上路 - Licenses
- 概念解读
- 概念解读 - 飞行模式
- 概念解读 - 结构概述
- 概念解读 - 飞行控制栈
- 概念解读 - 中间件
- 概念解读 - 混控和执行器
- 概念解读 - PWM限制状态机
- Hardware
- Hardware - 自驾仪硬件
- 机型 - 统一的基础代码
- 机型 - 参考机型
- 机型 - 添加一个新的机型
- Data Links - SiK Radio
- Data Links - Wifi数传
- Data Links - 数传
- I2C总线 - SF1XX lidar
- 传感器和执行机构总线 - UAVCAN总线
- UAVCAN总线 - UAVCAN Bootloader
- UAVCAN总线 - UAVCAN固件升级
- UAVCAN总线 - UAVCAN配置
- UAVCAN总线 - UAVCAN 的各种笔记
- 传感器和执行机构总线 - UART
- UART - uLanding Radar
- 传感器和执行机构总线 - 设置云台控制
- 传感器和执行机构总线 - 相机触发器
- Hardware - 协同电脑
- 仿真
- 仿真 - 基本仿真
- 仿真 - Gazebo仿真
- 仿真 - HITL仿真
- 仿真 - 连接到ROS
- 仿真 - AirSim仿真
- 仿真 - 多机仿真
- 中间件及架构
- 中间件及架构 - uORB消息机制
- 中间件及架构 - MAVLink消息机制
- 中间件及架构 - 守护程序
- 中间件及架构 - 驱动框架
- 模块 & 命令
- 模块 & 命令 - 命令
- 模块 & 命令 - 通信
- 模块 & 命令 - 驱动
- 模块 & 命令 - 系统
- Robotics
- Robotics - 用Linux进行外部控制
- Robotics - ROS
- ROS - 在RPi上安装ROS
- ROS - MAVROS (ROS上的MAVLink)
- ROS - MAVROS外部控制例程
- ROS - 外部位置估计
- ROS - Gazebo Octomap
- Robotics - DroneKit
- Debugging/Logging
- Debugging/Logging - FAQ
- Debugging/Logging - 系统控制台
- Debugging/Logging - 自驾仪调试
- Debugging/Logging - Sensor/Topic Debugging
- Debugging/Logging - 仿真调试
- Debugging/Logging - System-wide Replay
- Debugging/Logging - 发送调试的值
- Debugging/Logging - Profiling
- Debugging/Logging - 日志记录
- 教程 - 光流
- 教程 - ecl EKF
- 教程 - 飞行前检查
- 教程 - 着陆检测
- 教程 - Linux系统下使用S.Bus驱动
- Advanced Topics
- Advanced Topics - 系统启动
- Advanced Topics - 参数&配置
- Advanced Topics - 参考参数
- Advanced Topics - 安装Intel RealSense R200的驱动
- Advanced Topics - 切换状态估计器
- Advanced Topics - 外部模块
- Advanced Topics - STM32 Bootloader
- 测试和持续集成
- 测试和持续集成 - 持续集成
- 测试和持续集成 - Jenkins持续集成环境
- 测试和持续集成 - 综合测试
- 测试和持续集成 - Docker容器
- 测试和持续集成 - 维护
模块 & 命令 - 通信
mavlink
源代码: modules/mavlink
说明
该模块实现MAVLink协议,该协议可以在串行链路或UDP网络连接上使用。它通过uORB与系统通信:一些消息直接在模块中处理(例如,任务协议),其他则通过uORB发布(例如,vehicle_command)。
流用于发送指定速率的周期消息,例如姿态信息。启动mavlink实例时,可以指定一个模式,它定义了一组可用的流以及对应的速率。
对于正在运行的实例,流可以通过mavlink stream
命令进行配置。
该模块可以有多个独立的实例,每个实例连接到一个串行设备或网络端口。
实现
该实现使用2个线程,一个发送和一个接收。 发送线程以固定的速率运行,如果混合带宽高于配置的速率(-r
)或者物理链路饱和,还可以动态地降低流的速率。这可以用mavlink status
检查,查看rate mult
是否小于1。
示例
在ttyS1串口上启动mavlink,波特率为921600,最大发送速率为80kB / s:
mavlink start -d /dev/ttyS1 -b 921600 -m onboard -r 80000
在UDP 14556端口上启动mavlink,并以50Hz的速率发送HIGHRES_IMU消息:
mavlink start -u 14556 -r 1000000
mavlink stream -u 14556 -s HIGHRES_IMU -r 50
用法
mavlink <命令> [参数...]
命令:
start 启动一个新的实例
[-d <val>] 选择串行设备
可选: <file:dev>, 缺省: /dev/ttyS1
[-b <val>] 波特率
缺省: 57600
[-r <val>] 最大发送速率,单位:B/s (如果为0,使用波特率/20)
缺省: 0
[-u <val>] 选择UDP网络端口(本地)
缺省: 14556
[-o <val>] 选择UDP网络端口(远端)
缺省: 14550
[-t <val>] 伴随IP(可以通过MAV_BROADCAST参数启用广播)
缺省: 127.0.0.1
[-m <val>] 模式:设置缺省流以及速率
可选: custom|camera|onboard|osd|magic|config|iridium
缺省: normal
[-f] 启用到其他Mavlink实例的消息转发
[-v] 详细输出
[-w] 等待发送,直到收到第一条消息
[-x] 使能FTP
stop-all 停止所有实例
status 打印所有实例的状态
stream 配置正在运行的实例的流的发送速率
[-u <val>] 通过本地网络端口号选择Mavlink实例
缺省: 0
[-d <val>] 通过串行设备选择Mavlink实例
可选: <file:dev>
-s <val> 需要配置的Mavlink流
-r <val> 速率,单位Hz (值为0代表关闭流)
boot_complete 启用消息发送。(必须)在启动脚本的最后一步调用。
uorb
源代码: modules/uORB
说明
uORB是内部发布-订阅消息系统,用于模块之间的通信。
它通常作为前期模块之一启动,大多数模块依赖于它。
实现
不需要线程或工作队列,该模块启动只需要确保初始化共享全局状态。通过共享内存进行通信。该实现是异步和无锁的,即,发布者不需要等待订阅者,反之亦然。这通过在发布者和订阅者之间设置单独的缓冲器来实现。
代码经过优化,使得内存占用空间最小以及消息交换延迟最低。
该接口基于文件描述符:内部使用read
,write
和ioctl
。除了发布者,其使用orb_advert_t
处理,以便它们可以从中断使用(在NuttX上)。
消息在/msg
目录中定义。 它们在构建时被转换成C/C ++代码。
如果使用ORB_USE_PUBLISHER_RULES编译,则可以使用具有uORB发布规则的文件配置哪个模块允许发布哪些主题。这用于系统范围的重播。
示例
监控主题发布速率。除了top
,它同样是一般系统检查的重要命令:
uorb top
用法
uorb <命令> [参数...]
命令:
start
status 打印主题统计数据
top 监视主题发布速率
[-a] 打印全部主题,而不仅仅是当前发布的主题
[<filter1> [<filter2>]] 主题过滤器 (包含 -a)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论