浏览代码

增加数据log读取和 里程计odometry 数据说明

Liu Yang 3 月之前
父节点
当前提交
08c51b9890
共有 1 个文件被更改,包括 70 次插入3 次删除
  1. 70 3
      readme.md

+ 70 - 3
readme.md

@@ -988,6 +988,30 @@ comp_id 为 0 时, 飞控将回复多个消息逐个返回所有可获取设备
 | accuracy              | baseline 精度 mm                 |
 | iar_num_hypotheses    | 暂未用                           |
 
+### 2.32 里程计导航数据 ODOMETRY
+
+飞控外接 VINS LIVO 等导航里程计系统, 里程计系统向飞控发送 ODOMETRY数据.
+ODOMETRY 需要至少10hz的更新率, 水平位置 xy 和水平速度 vx xy 应具有较好的质量, 才可用于飞行控制.
+xyz的坐标系需按定义对齐. 坐标定义支持两种, 由 frame_id 指定.
+
+* MAV_FRAME_LOCAL_NED
+  原点为里程计解算初始化原点, x为北向, y为东向, z为地向.
+* MAV_FRAME_LOCAL_FRD
+  原点为里程计解算初始化原点, x为飞机平台前向, y为飞机平台右向, z为地向. 注意z与重力平行.
+  (飞控会记录里程计初始化时的飞机机头航向, 用于将xyz转到ned)
+
+| 字段          | 说明                                                  |
+| ------------- | ----------------------------------------------------- |
+| x             | x向位移 m                                             |
+| y             | y向位移 m                                             |
+| z             | z向位移 m                                             |
+| vx            | x向速度 m/s                                           |
+| vy            | y向速度 m/s                                           |
+| vz            | z向速度 m/s                                           |
+| quality       | 0表示里程计位置速度可用, 其它表示里程计位置速度不可用 |
+| reset_counter | 里程计初始化计数, 每次里程计重启算法时加1             |
+| frame_id      | MAV_FRAME_LOCAL_NED 或 MAV_FRAME_LOCAL_FRD            |
+
 ## 3 参数设置
 
 飞控的参数修改、读取方法参考 [mavlink services parameter](https://mavlink.io/en/services/parameter.html). 使用16字节的 paramid 作为每各参数的唯一表示码.
@@ -1604,14 +1628,57 @@ param1~param5中,
 * param1
 0停止跟随, 1跟随吊舱目标
 
-## 6 飞控 LOG 读取
+## 6 飞控数据 LOG 读取
+
+### 6.1 获取日志列表
+地面站向飞控发送 LOG_REQUEST_LIST 消息获取所有日志列表, 飞控回复 LOG_ENTRY 信息. 每个日志文件一条 LOG_ENTRY 信息.
+飞控默认以解锁-上锁存一个数据文件, 最多50个.
 
 * LOG_REQUEST_LIST
+  | 字段             | 说明              |
+  | ---------------- | ----------------- |
+  | start            | 0~49              |
+  | end              | 0~49              |
+  | target_system    | 目标飞控的 sysid  |
+  | target_component | 目标飞控的 compid |
+
 * LOG_ENTRY
+  | 字段         | 说明                  |
+  | ------------ | --------------------- |
+  | time_utc     | LOG utc时间           |
+  | id           | 0~49                  |
+  | size         | LOG 字节数            |
+  | num_logs     | LOG 文件总数          |
+  | last_log_num | 最后一次记录的 LOG id |
+
+### 6.2 读取数据日志
+
+地面站向飞控发送 LOG_REQUEST_DATA 读取给定 id 的日志数据, 飞控回复 LOG_DATA.
+LOG_REQUEST_DATA 一次读取的 count 如果超过一条 LOG_DATA 能发送的数据量, 飞控将拆分多条 LOG_DATA 进行发送.
+
+地面站若一次读取较多包数据, 应注意检查中间是否错包丢包, 并具有对应错丢包的重读机制以避免丢失数据.
+
 * LOG_REQUEST_DATA
+
+  | 字段             | 说明                       |
+  | ---------------- | -------------------------- |
+  | ofs              | 本次要读取开始位置字节偏移 |
+  | count            | 本次要读取的字节数         |
+  | id               | 本次要读取的LOG ID         |
+  | target_system    | 目标飞控的 sysid           |
+  | target_component | 目标飞控的 compid          |
+
 * LOG_DATA
-* LOG_ERASE
-* LOG_REQUEST_END
+  
+  | 字段  | 说明                 |
+  | ----- | -------------------- |
+  | ofs   | 本包数据字偏移       |
+  | id    | 本包数据的 LOG ID    |
+  | count | 本包数据的有效字节数 |
+  | data  | LOG数据内容          |
+
+读取过程中可发送 LOG_REQUEST_END 立刻停止读取, 飞控收到后会停止当前正在进行的LOG数据传输流程.
+可向飞控发送 LOG_ERASE 消息, 擦除飞控内所有的 LOG 数据. 擦除后需要重新上电.
 
 ## 7 固件下载