Crazyflie笔记五: CRTP 实时通信协议(一)
来源:互联网 发布:淘宝毛绒玩具店铺介绍 编辑:程序博客网 时间:2024/06/06 14:06
原文地址:http://blog.sina.com.cn/s/blog_402c071e0102v7py.html
这里详细介绍了 Crazyflie 的 CRTP实时通信协议的相关内容,由于内容很长,分几篇博文来讲述。这里是第一节内容。欢迎交流:30175224@qq.com。新浪长沙@WalkAnt,转载本博客文章,请注明出处,谢谢。
7.1 CRTP通信包
1、数据通道
UART link
主要用于早期开发。
USB link
micro USB端口。
radio link
主要使用2.4 GHz NordicSemi的nRF24L01芯片。
2、数据端口
端口号
Port
数据端口
用途
0
Console
Console 采用consoleprintf函数可以将调试信息输出到PC端。
2
Parameters
读写Crazyflie参数,这些参数在源码中用宏来表示。
3
Commander
发送roll\pitch\yaw\thrust控制指令。
5
Log
设置日志变量,这些日志变量将会以指定的周期发送。日志变量在源码中用宏来表示。
14
Client-side debugging
用于调试PC端UI界面程序,只针对Crazyflie Python API。
15
Link layer
用于控制和访问通信链路层
Name
Byte
Size
Type
Comment
Roll
0-3
4
float
Roll值
Pitch
4-7
4
float
Pitch值
Yaw
8-11
4
float
Yaw值
Thrust
12-13
2
uint16_t
Thrust值
宏
用法
LOG_GROUP_START(grp_name)
开始一个log group的定义,其中grp_name为组名
LOG_GROUP_STOP(grp_name)
停止一个log group的定义
LOG_ADD(type, name, address)
添加一个log变量。
type 是变量类型;
name 是发送到地面站的变量名字;
address 是源码中真实变量的地址。
类型定义
对应的C99变量类型
说明
LOG_UINT8
uint8_t
LOG_UINT16
uint16_t
LOG_UINT32
uint32_t
LOG_INT8
int8_t
LOG_INT16
int16_t
LOG_INT32
int32_t
LOG_FLOAT
float
IEEE 754 binary32 (single precision float)
LOG_FP16
N/A?
IEEE 754 binary16, intended for log report only (not in memory)
3、CRTP通信包的结构
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
目标数据端口 Port
例:Log=5; Commander= 3 ; Parameters=2
Res
保留
目标通道 Channel
DATA 0
DATA1
…
…
DATA30
4、物理接口层
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
0xAA
0xAA
目标数据端口 Port
例:Log=5; Commander= 3 ; Parameters=2
Res
保留
目标通道 Channel
Packet length
DATA 0
DATA1
…
…
DATA30
Cksum 校验码
0xAA
0xAA
Header
数据头
Length
数据长度
Data0…………………….Data30
Cksum
- Crazyflie笔记五: CRTP 实时通信协议(一)
- Crazyflie笔记一:概述开发范围、工具、特点介绍
- CRTP应用一
- HDFS通信协议(一)
- 通信协议一(HTTP)
- Crazyflie笔记二:Crazyflie 1.0和2.0产品特点概述
- 学习笔记一:TCP与UDP通信协议
- (学习笔记) SPI通信协议
- sockjs-web实时通信协议
- 全硬件TCP/IP协议栈学习笔记(第六天:SPI通信协议学习一)
- swoole学习笔记(五)网络通信协议设计 -- EOF结束符协议和固定包头+包体协议
- MSN 通信协议学习笔记(转)
- QNX实时操作系统学习笔记之嵌入式系统(一)
- uCOS-II学习笔记:实时操作系统(一)
- 百度地图API学习笔记(一) 实现实时定位
- QNX实时操作系统学习笔记之嵌入式系统(一)
- 《加密与解密》笔记五(一)
- Crazyflie笔记七: PC端 Python API 说明
- JavaScript 字符串操作
- js调用php和php调用js的方法举例
- Eclipse在调试过程中修改变量值
- C/C++中extern关键字详解
- Spring 线程池应用
- Crazyflie笔记五: CRTP 实时通信协议(一)
- C++中关于sizeof的那些事
- How to config Bananapi pro AV output as default video signal ?
- java学习IO流之对象序列化
- 类集框架
- intellij idea 修改背景保护色&&修改字体&&快捷键大全
- KVO的实现原理
- Crazyflie笔记六: PC端 python 开发环境,安卓端开发环境搭建
- Java字符串格式化为时间,时间格式化为字符串