type
status
date
slug
summary
tags
category
icon
password
通信协议规定
C板 → NX
字段省略前三位(帧头,长度,ID)及帧尾 共4Byte
gimbal_data_t
ID | 长度 | 字段 | 大小(Byte) | 描述 |
0x14 | 17 | mode | 1 | 自瞄模式 |
ㅤ | ㅤ | roll | 4 | 云台欧拉角 |
ㅤ | ㅤ | pitch | 4 | ㅤ |
ㅤ | ㅤ | yaw | 4 | ㅤ |
imu_data_t
ID | 长度 | 字段 | 大小(Byte) | 描述 |
0x11 | 28 | x_accel | 4 | 加速度 - X |
ㅤ | ㅤ | y_accel | 4 | 加速度 - Y |
ㅤ | ㅤ | z_accel | 4 | 加速度 - Z |
ㅤ | ㅤ | x_gyro | 4 | 陀螺仪 - X |
ㅤ | ㅤ | y_gyro | 4 | 陀螺仪 - Y |
ㅤ | ㅤ | z_gyro | 4 | 陀螺仪 - Z |
enemy_state_data_t
ID | 长度 | 字段 | 大小(Byte) | 描述 |
0x15 | 39 | enemy_id | 1 | 敌方 ID |
ㅤ | ㅤ | enemy_x | 2 | 敌方 X 坐标 |
ㅤ | ㅤ | enemy_y | 2 | 敌方 Y 坐标 |
ㅤ | ㅤ | enemy_hp | 1 | 敌方血量,默认发满血 |
ㅤ | ㅤ | attack_enhance | 1 | 溢伤标志:默认为1,0为防御增益 |
ㅤ | ㅤ | ㅤ | ㅤ | ×6 |
self_state_data_t
ID | 长度 | 字段 | 大小(Byte) | 描述 |
0x16 | 16 | self_x | 4 | 自身 X 坐标 |
ㅤ | ㅤ | self_y | 4 | 自身 Y 坐标 |
ㅤ | ㅤ | self_angle | 4 | 自身朝向角度 |
mouse_data_t
ID | 长度 | 字段 | 大小(Byte) | 描述 |
0x17 | 9 | mouse_x | 2 | 鼠标 X |
ㅤ | ㅤ | mouse_y | 2 | 鼠标 Y |
ㅤ | ㅤ | mouse_right_press | 1 | 鼠标右键是否按下 |
NX → C板
aim_data_received_t
ID | 长度 | 字段 | 大小(Byte) | 描述 |
0x81 | 18 | is_fire | 1 | 是否开火 |
ㅤ | ㅤ | pitch_set | 4 | 设定俯仰角 |
ㅤ | ㅤ | yaw_set | 4 | 设定偏航角 |
ㅤ | ㅤ | distance | 4 | 目标距离 |
ㅤ | ㅤ | target_number | 1 | 目标编号 |
(分区赛没有)autoaim_rect_robot_t /
autoaim_circle_robot_t
ID | 长度 | 描述 |
0x22 | 65 | 自动瞄准:矩形 / 圆形机器人 |
调试问题速查
串口打不开
lsusb
确认串口存活sudo chmod 777 /dev/设备名
设置权限固定设备名
设备被分配成
/dev/ttyACM0
或者/dev/ttyACM1
的情况经常发生,导致自瞄代码启动受阻,这种情况在串口掉线重连后特别容易发生,这是因为linux动态分配设备名造成的。如果想固定设备名成 ACM0,或甚者,命名成
/dev/RM_Robot
,这是可行的首先获取设备信息:
udevadm info -a -n /dev/ttyACM0
这个会给出很多信息,其中:
looking at device '/devices/
pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/tty/ttyACM0’
这个输出的意思是,linux 使用设备树的方式来识别设备的,存在有多个节点的设备链路,在里面挑选一些稀有的属性
如
SUBSYSTEM=="tty”
ATTRS{idProduct}=="0514"
ATTRS{idVendor}=="0114"
ATTRS{manufacturer}=="RM"
ATTRS{serial}=="305935613034”
获取了这些属性后,在
/etc/udev/rules.d/
里,存放用户指定的 udev 规则文件:sudo vim /etc/udev/rules.d/99-usb-serial.rules
编辑以下内容:
SUBSYSTEM=="tty", ATTRS{manufacturer}=="RM", SYMLINK+="RM_Robot"
这样,只要是制造商为 RM的设备,就会被挂载成
/dev/RM_Robot
这个设备名,当然,保险起见,也要添加诸如 id 等的属性这句话是假的,最好改成原来的一致的名字,如ttyACM0
sudo udevadm control --reload-rules && sudo udevadm trigger
重新加载设备,已经起效