CrazePony飞行器--通信部分介绍【转】

简介:

转自:http://www.crazepony.com/wiki/comm-protocol.html

作者:nieyong

通信协议指的是遥控端和主控之间交互数据的封装,是一种自行约定的数据封装格式。我们采用的是Crazyflie项目中定义的CRTP协议

遥控端和主控之间数据的交互,物理层可以有下面几种方式:

  • 单片2.4G无线射频收发芯片,通过SPI接口和MCU连接
  • 蓝牙2.1透传模块,通过串口UART和MCU连接
  • 蓝牙4.0低功耗BLE透传模块,通过串口UART和MCU连接

这几种不同的物理层通信方式在同一时刻只能够选择其中的一种。并且蓝牙2.1和蓝牙BLE根据安装的透传模块不一样进行选择。

crazyflie task

ESky Protocol

在上面示意图的的通信方式选择上,最左边为EskyLink,对应使用宏USE_ESKYLINK来开启是否选择该种链接方式。

# Make copter firmware to be used with the bootloader, CF controlled with eSky ET6i transmitter

$ make clean && make USE_ESKYLINK=1 CLOAD=1 all 

所谓的Esky Protocol,其实就是ESky公司遥控器使用的通信协议。所以如果选用这种通信方式,那么可以使用ESky航模公司的遥控器进行控制。Crazyflie官网支持ESKY ET6I Remote Control遥控器。

关于ESky公司的2.4G遥控器设备的通信协议,参考ArduinoRCLib项目中的描述:

The Esky 2.4 GHz equipment uses the Nordic NRF2401AG in both the transmitter and receiver. A compatible alternative to this chip is the NRF24L01+ (which is widely available).

ESky相关协议内容暂时不研究。

串口

使用串口作为物理层指的是蓝牙透传模块(包括蓝牙2.1或者蓝牙4.0 BLE模块)。串口配置为115200 8N1,收发异步。

一个可供主控解析的数据包格式,约定如下:

  7   6   5   4   3   2   1   0
  +---+---+---+---+---+---+---+---+
  |     Port      |  Res. | Chan. | 
  +---+---+---+---+---+---+---+---+
  |            DATA 0             |
  +---+---+---+---+---+---+---+---+
  :   :   :   :   :   :   :   :   :
  +---+---+---+---+---+---+---+---+
  |            DATA 31            |
  +---+---+---+---+---+---+---+---+

开始为一个字节的头,该字节中包括port字段,reserve字段,channel字段。紧跟着该自己,就是0-31个字节的数据,数据的长度是任意的。

头字节中的port字段用来区分该数据包的功能,常见的包括下面几个

  • 0x0 : console
  • 0x2 : parameter,表示后面的数据是系统的参数
  • 0x3 : commander,操作命令,控制飞机的飞行,包括pitch/yaw/roll等
  • ……

对于串口传输,在上面数据包的最前面需要加上两个字节0xaaaa的起始数据,在最后加上一个字节的checksum数据。格式如下:

  7   6   5   4   3   2   1   0
  +---+---+---+---+---+---+---+---+
  |             0xAA              |
  +---+---+---+---+---+---+---+---+
  |             0xAA              |
  +---+---+---+---+---+---+---+---+
  |      Port     |  Res  | Chan. |
  +---+---+---+---+---+---+---+---+
  |         Packet length         |
  +---+---+---+---+---+---+---+---+
  |            DATA 0             |
  +---+---+---+---+---+---+---+---+
  :   :   :   :   :   :   :   :   :
  +---+---+---+---+---+---+---+---+
  |            DATA 30            |
  +---+---+---+---+---+---+---+---+
  |            Cksum              |
  +---+---+---+---+---+---+---+---+

  +--------+--------+--------+--------+--------+--....--+--------+
  |  0xAA  |  0xAA  | Header | Length | Data0  | Packet | Cksum  |
  +--------+--------+--------+--------+--------+--....--+--------+

注意,紧跟在头后面的第一个data字节,表示后面数据的长度。

操作命令

操作命令是指用于控制飞行器起飞,前后左右运动的命令,英文commander。操控命令是遥控器最基本,也是最常用的命令。数据包头中port字段为0x3表示操作命令。Crazyflie操作数据格式约定如下。

+-------+-------+-------+-------+
| ROLL  | PITCH |  YAW  |THRUST |
+-------+-------+-------+-------+
0       4       8       12      14 bytes

操作数据一共14个字节,前12个字节分别表示Roll,Pitch,Yaw的值,每个值使用4个字节。后2个字节表示Thrust的值,使用2个字节。

所以,使用串口发送的一个操作命令示例如下:

0xaa 0xaa 0x30 0x0e 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x3e












本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/5256387.html,如需转载请自行联系原作者

相关文章
|
Linux 数据安全/隐私保护 Windows
更换(Pypi)pip源到国内镜像
pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.
247122 2
|
数据可视化 搜索推荐 数据挖掘
Plotly:交互式数据
【7月更文挑战第13天】Plotly是Python的交互式可视化库,用于创建多种图表,如散点图、箱线图等。通过安装`pip install plotly`开始使用。基本的交互式图表演示了如何用学生成绩创建散点图,而自定义图表展示了如何增强视觉效果。Plotly还支持高级交互功能,如数据筛选、动态更新,以及实时数据追踪。未来,Plotly将扩展图表类型、增强交互性和性能,更好地集成云服务,并提供更多的教育资源和定制选项,以适应数据科学的快速发展。
|
12月前
|
Web App开发 Android开发
利用firefox调试安卓手机端web
该教程详细介绍如何通过Firefox浏览器实现手机与电脑的远程调试。手机端需安装最新版Firefox,并按指定步骤设置完成;电脑端则需安装15版及以上Firefox。设置完成后,通过工具栏中的“远程调试”选项,输入手机IP地址即可连接。连接确认后,即可使用电脑端Firefox调试器调试手机上的Web信息。注意,调试前手机需提前打开目标网页。
628 2
|
12月前
|
存储 数据管理 调度
HarmonyOS架构理解:揭开鸿蒙系统的神秘面纱
【10月更文挑战第21天】华为的鸿蒙系统(HarmonyOS)以其独特的分布式架构备受关注。该架构包括分布式软总线、分布式数据管理和分布式任务调度。分布式软总线实现设备间的无缝连接;分布式数据管理支持跨设备数据共享;分布式任务调度则实现跨设备任务协同。这些特性为开发者提供了强大的工具,助力智能设备的未来发展。
533 1
|
JSON 中间件 Go
Go Gin 框架系列 - 入门篇
本文将会对 Go Gin 框架进行简单介绍,括它的一些优势和特点,然后通过一个入门示例,演示了如何安装和使用 Gin 启动一个 WEB 服务器并注册路由。
454 1
Go Gin 框架系列 - 入门篇
|
消息中间件 分布式计算 Cloud Native
[实战系列]SelectDB Cloud Datax 数据写入最佳实践
企业正在经历其数据资产的爆炸式增长,这些数据包括批式或流式传输的结构化、半结构化以及非结构化数据,随着海量数据批量导入的场景的增多,企业对于 Data Pipeline 的需求也愈加复杂。新一代云原生实时数仓 SelectDB Cloud 作为一款运行于多云之上的云原生实时数据仓库,致力于通过开箱即用的能力为客户带来简单快速的数仓体验。在生态方面,SelectDB Cloud 提供了丰富的数据连接器插件(Connector)来连接各种来自周边大数据工具的数据源,内置 Kafka、Flink、Spark、DataX 等常见的 Connector。基于此,企业开发者能够更加便捷的将数据移动到 Se
433 0
|
SQL Shell 网络安全
CISP-PTE综合靶机-WinServer2003学习
CISP-PTE综合靶机-WinServer2003学习
4443 0
|
关系型数据库 PostgreSQL
postgresql 的WAL日志解析工具 pg_waldump
postgresql 的WAL日志解析工具 pg_waldump
1787 0
postgresql 的WAL日志解析工具 pg_waldump
|
传感器 网络协议 算法
一文看懂Modbus协议
一文看懂Modbus协议
7675 0
一文看懂Modbus协议
|
文字识别 算法 API
阿里云视觉智能开放平台产品上新
阿里云视觉智能开放平台(Vision Intelligent Application Programming Interface Platform)简称视觉智能平台,目前已经上线14大类目,包含190+个算法API。
757 0
阿里云视觉智能开放平台产品上新