绝影四足机器人通信协议学习解析
本学习文档介绍了云深处 绝影X20 四足机器人的通信协议,并对相关的通信机制和命令格式进行了简单的解析。该协议在机器人系统和上位机(例如外部板卡或系统)之间进行TCP通信时使用。
1. 协议端口号
在此协议中,机器人本体作为TCP服务端,上位机作为TCP客户端。协议的TCP服务端端口号为30000
2. 基于Service:Request/Response机制通讯
通信协议基于请求/响应模式进行交互,具体的通信帧结构如下:
- 通信帧协议帧头:
- 通信帧数据部分:
数据部分采用XML格式进行交互。
<?xml version="1.0" encoding="UTF-8" ?>
<PatrolDevice>
<Type>1002</Type> # 消息类型
<Command>1</Command> # 命令码
<Time>2023-01-01 00:00:00</Time> # 时间戳
<Items/> # 参数项
</PatrolDevice>
消息类型对应表如下:
3. 常见的通信
下面列出了一些常见的通信示例,其他的可以查看上述消息类型对应表进行理解。
3.1 获取状态(Get State)
请求(Request):
<?xml version="1.0" encoding="UTF-8"?>
<PatrolDevice>
<Type>1002</Type> # Get state
<Command>1</Command> # default
<Time>2023-01-01 00:00:00</Time>
<Items/> # None
</PatrolDevice>
响应(Response):
<?xml version="1.0" encoding="UTF-8"?>
<PatrolDevice>
<Type>1002</Type>
<Command>1</Command>
<Time>2023-01-01 00:00:01</Time>
<Items>
<MotionState>0</MotionState> # 运动状态
<PosX>0.0</PosX> # 地图坐标系下的坐标x
<PosY>0.0</PosY> # 地图坐标系下的坐标y
<PosZ>0.0</PosZ> # 地图坐标系下的坐标z
<Yaw>0.0</Yaw> # 地图坐标系下的偏航角
<Res>0.0</Res> # 地图像素到真实地图长度比例
<X0>0.0</X0> # 地图坐标系基准点
<Y0>0.0</Y0> # 地图坐标系基准点
状态解释如下图:
运动状态对应表如下:
疑惑
为何此处不反馈机器人自身姿态的pitch和roll?
3.2 导航请求(Navigation)
导航请求是一个异步请求,适用于ROS Action模型。
请求(Request):
<?xml version="1.0" encoding="UTF-8"?>
<PatrolDevice>
<Type>1003</Type> # 下发导航消息类型
<Command>1</Command>
<Time>2023-01-01 00:00:00</Time>
<Items>
<Value>100</Value> # 该地图中的目标点编号
<MapID>1</MapID> # 地图编号
<PosX>0.0</PosX> # 目标点在地图坐标系的坐标x
<PosY>0.0</PosY> # 目标点在地图坐标系的坐标y
<PosZ>0.0</PosZ> # 目标点在地图坐标系的坐标z
<AngleYaw>0.0</AngleYaw> # 目标点与地图基准点偏航角度值
<PointInfo>0</PointInfo> # 目标点类型过渡/任务/充电(0,1,3)
<Gait>0</Gait> # 步态(行走/楼梯/斜坡)
<Speed>0</Speed> # 速度(0~2,low~high)
<Manner>0</Manner> # 前进或后退(0/1)
<ObsMode>0</ObsMode> # 障碍物检测开关(0/1)
<NavMode>0</NavMode> # 导航方式直线或规划(0/1)
</Items>
</PatrolDevice>
目标点及障碍物检测
过渡点仅用于克服地形和约束路径;任务点可执行巡检任务,如识别表计;充电点是在充电桩前用于识别定位充电桩二维码的目标点。
障碍物检测分为避障和停障两种方式:当导航方式选用自主导航时,机器人在遇到障碍物时会自动规划路径绕开障碍物;当导航方式选用直线导航时,机器人在遇到障碍物时将减速至原地踏步,直到障碍物消失。
疑惑
0 # 目标点类型过渡/任务/充电(0,1,3)
2呢? 预留位,间隔位或什么原因删除了?
3.3 导航任务执行状态查询
对应的导航任务执行状态查询如下:
疑惑
似乎没有做过程反馈?只有执行状态,可能需要改进,ROS2中的Action机制可提供导航过程中的实时反馈
3.3 运动控制(Motion Control)
常见的运动类型对应码表如下:
Command | Description |
---|---|
1 | W |
2 | S |
3 | Turn Left |
4 | Turn Right |
5 | |
6 | walking in place |
7 | |
8 | |
9 | |
10 | |
11 | A |
12 | D |
13 | Soft Stop |
14 | Stop Walking |
15 | Get down on the ground |
给定参数如下:
疑惑
5呢?预留位,间隔位或历史遗留问题?
参考资料
绝影 X20-巡检机器人本体监控协议V1.1.1 2023.6. 27