本体监控协议(TCP)
- V3.0.26或更高版本的robot_server;
- V4.0.0或更高版本的整机软件包。
如需查看robot_server版本,可进入导航主机(默认地址为192.168.1.106)运行命令:
dpkg -l robot_server本协议适用于机器人本体与上位机(外部板卡或系统)通信使用。
| 本协议 | 应用层(第7层) |
|---|---|
| TCP/IP协议或UDP/IP协议 | 传输层(第4层) |
| 网络层(第3层) | |
| 以太网 | 链路层(第2层) |
| 物理层(第1层) |
本协议使用时,机器人本体为TCP服务端,上位机(外部板卡或系统)为TCP客户端。协议的TCP服务端端口号为 192.168.1.106:30000。
本协议主要使用请求/响应机制。上位机可主动向机器人本体发起数据查询、控制命令等请求,机器人本体通过响应回复请求。
应用协议数据单元
Section titled “应用协议数据单元”本协议APDU(应用协议数据单元)采用”协议头部+ASDU(应用服务数据单元)“结构,每个APDU可以携带1个ASDU。
协议头部结构
Section titled “协议头部结构”协议头部长度固定16字节,内容如下表所示。
| 序号 | 内容 | 长度 | 值 | 备注 |
|---|---|---|---|---|
| 1 | 同步字符 | 1 | 0xeb | 固定 |
| 2 | 同步字符 | 1 | 0x91 | 固定 |
| 3 | 同步字符 | 1 | 0xeb | 固定 |
| 4 | 同步字符 | 1 | 0x90 | 固定 |
| 5 | 长度 | 2 | APDU中ASDU字节段的长度,采用小端字节序,低字节在前,ASDU最大长度限制为65535字节 | |
| 6 | 报文ID | 2 | 每帧报文的唯一标识,从0开始递增,达到65535后重新从0开始;采用小端字节序,低字节在前 | |
| 7 | 预留 | 8 | 0x00 | 预留8字节,暂填0 |
ASDU结构
Section titled “ASDU结构”本协议ASDU数据内容采用XML格式组织,包含以下通用字段:
| 字段 | 含义 |
|---|---|
| Type | 消息类型 |
| Command | 消息命令码 |
| Time | 报文发送时间,本地时区,格式:YYYY-MM-DD HH:MM:SS |
| Items | 消息所携带的参数项 |
一个ASDU案例如下:
<?xml version="1.0" encoding="UTF-8"?><PatrolDevice> <Type>1002</Type> <Command>1</Command> <Time>2023-01-01 00:00:00</Time> <Items/></PatrolDevice>文档包含的ASDU消息类型包含以下几种:
| Type字段值 | 消息类型 |
|---|---|
| 1002 | 获取实时基础状态 |
| 1003 | 下发导航任务 |
| 1004 | 取消导航任务 |
| 1007 | 查询导航任务执行状态 |
| 1101 | 智能控制器指示灯控制 |
| 2001 | 电池信息 |
| 2101 | 初始化定位 |
| 1008 | 获取电机温度 |
| 0 | 请求消息错误反馈 |
请求消息错误反馈
Section titled “请求消息错误反馈”当客户端发送的请求消息错误时,机器人将返回Type字段值为0的响应消息:
<?xml version="1.0" encoding="UTF-8"?><PatrolDevice> <Type>0</Type> <Command>0</Command> <Time>0000-00-00 00:00:00</Time> <Items> <ErrorCode>0</ErrorCode> </Items></PatrolDevice>| 参数项 | 含义 | 参数值说明 |
|---|---|---|
| ErrorCode | 请求格式错误类型 | 协议头缺失 = 1,协议头错误 = 2,数据长度异常 = 3,数据格式解析失败 = 4 |