概述
一、简介
裁判系统是比赛中必不可少的部件之一,它给机器人回传数据继而来保证了比赛的正常进行,这些数据包括但不限于:机器人血量、底盘功率、受击状况、弹丸发射速度和初速度等。同时,也是机器人与服务器之间的一个接口,所以,了解裁判系统与机器人之间的数据传输格式是十分重要的。
二、物理连接
[摘自文档《RoboMaster 电源模块 PM02 2020使用说明书》]
裁判系统与单片机的数据传输是通过串口通信来实现的,所以必不可少的是需要将两个部分用数据线进行物理连接。裁判系统上的物理连接接口是在电源模块上,当裁判系统连接上电源模块后,使用3pin的线连接电源模块的⑥号口,然后接在单片机上(注意线序,接在单片机上的接口3pin与4pin皆可,4pin的口会多一个3v的接线)。
三、通信协议
通信协议格式如下
[摘自《RoboMaster 2021 裁判系统串口协议附录 V1.2(20210430)》]
整个协议包括了帧头部分、命令码ID部分、数据部分、帧尾部分。
①、帧头部分
[摘自《RoboMaster 2021 裁判系统串口协议附录 V1.2(20210430)》]
SOF为起始字节,在接受裁判系统的数据时首先需要进行判断帧头部分的起始字节是否正确;因为数据的长度是不确定的,也就是不定长的,所以需要data_length来告知即将接收到的数据长度;seq表示这个数据包的序号;CRC8检验位用来确保数据的准确性。
②命令码ID
裁判系统发送的数据是繁多的,同时发送所有信息会导致信息处理延迟较高,通过命令码,可以让机器人处理数据的速度加快,不需要遍历所有数据后分段处理,可以直接对不同命令码的数据包直接进行处理。
[摘自《RoboMaster 2021 裁判系统串口协议附录 V1.2(20210430)》]
三、数据帧
在不同的命令码下,数据包内包含的数据是不一样的,通过查阅手册可以知道不同的字节偏移量所对应的数据是什么,进而放入相关的结构体中。例如:
[摘自《RoboMaster 2021 裁判系统串口协议附录 V1.2(20210430)》]
若红方工程机器人(机器人ID为2)判黄牌,则会发送0x12,单片机接收到后,通过位操作符将数据拆为0000 0001和0000 0002分别放入uint8_t level和uint8_t foul_robot_id变量中,随后执行相关操作。
四、帧尾
帧尾部分主要是进行CRC16的校验,来确保数据的准确性。
*笔者自己整理,如有错误,欢迎指正*
最后
以上就是过时小笼包为你收集整理的robomaster裁判系统个人整理的全部内容,希望文章能够帮你解决robomaster裁判系统个人整理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复