串口通信注意事项

串口

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
重新加载设备,已经起效
 
Loading...