该协议为易行机器人底层通信协议。是用地址作为标识分段方式,不同地址表示不同数 据的协议。方式为主机往从机发送主动询问。协议由HTTP嵌套JSON的格式
注意:json格式中的address为字符类型,16进制表示
type类型有uint8 uint16 uint32 int8 int16 int32 string float
len为类型的字节长度
- uint8 假如读一个数据,len=1,假如读二个数据,len=2 len为字节长度
- uint16 假如读一个数据,len=2,假如读二个数据,len=4 len为字节长度
- uint32 假如读一个数据,len=4,假如读二个数据,len=8 len为字节长度
- int8 假如读一个数据,len=1,假如读二个数据,len=2 len为字节长度
- int16 假如读一个数据,len=2,假如读二个数据,len=4 len为字节长度
- int32 假如读一个数据,len=4,假如读二个数据,len=8 len为字节长度
- float 假如读一个数据,len=4,假如读二个数据,len=8 len为字节长度
- string 长度可变,一般读20个长度即可
TABLE读取
请求参数
Body 请求参数
[
{
"address": "3d0",
"len": 4,
"type": "int32"
},
{
"address": "250",
"len": 1,
"type": "int8"
}
]
响应示例
{
"status": 200,
"msg": "OK",
"data": [
{
"address": "3d0",
"value": [
22
]
},
{
"address": "250",
"value": [
9
]
}
],
"address": ""
}
TABLE写入
请求参数
Body 请求参数
[
{
"address": "3d0",
"len": 4,
"type": "int32",
"data": [
22
]
},
{
"address": "3e0",
"len": 4,
"type": "string",
"data": [
"3333"
]
},
{
"address": "250",
"len": 4,
"type": "int8",
"data": [
9
]
}
]
响应示例
{
"status": 200,
"msg": "OK",
"data": null,
"address": [
"3d0",
"250",
"3e0"
]
}
协议内容
此表格仅部分对接内容,详细更多信息联系深圳易行机器人
| | | |
发送相关 | - | - | - |
地址 | 字节 | 类型 | 描述 |
0×24c | 4 | 整型 | 全局ID |
0×250 | 1 | 整型 | 设置运行 |
0×251 | 1 | 整型 | 节点序号 |
0×253 | 1 | 整型 | 路线类型 |
0×256 | 1 | 整型 | 节点属性 |
0×257 | 1 | 整型 | 动作编号 |
0×260 | 4 | 浮点型 | x坐标 |
0×264 | 4 | 浮点型 | y坐标 |
0×268 | 4 | 浮点型 | Theta坐标 |
0×26c | 4 | 浮点型 | 高度值 |
0×290 | 16 | Ascii码 | 设置事件 |
实时获取 | - | - | - |
0×100 | 4 | 浮点型 | 当前x坐标 |
0×104 | 4 | 浮点型 | 当前y坐标 |
0×108 | 4 | 浮点型 | 当前theta角度 |
0×38 | 4 | 浮点型 | 控制器输入电压 |
0×3f | 1 | 整型 | 电量百分比 |
0×3c | 1 | 整型 | 模式。1是手动模式,2是自动模式 |
0×244 | 4 | 整型 | Agv下一个节点ID |
0×248 | 4 | 整型 | Agv当前全局ID |
0×20 | 4 | 浮点型 | 当前速度 |
0×24 | 4 | 浮点型 | 当前摆角 |
0×28 | 4 | 浮点型 | 当前高度 |
0×2b0 | 16 | Ascii码 | 当前事件 |
0×211 | 1 | 整型 | 运动状态[0空闲 1运动] |
初始定位 | - | - | - |
0xe0 | 1 | 整型 | 是否启动初始定位 |
0xf0 | 4 | 浮点型 | 初始位置X |
0xf4 | 4 | 浮点型 | 初始位置Y |
0xf8 | 4 | 浮点型 | 初始theta |
搜索节点 | - | - | - |
0×3d4 | 4 | 整型 | 设置终点 |
0×3e0 | 16 | Ascii码 | 动作字 |
0×250 | 1 | 整型 | 设置3启动搜索 |
偏移AGV | - | - | - |
0×5e0 | 4 | 浮点型 | 偏移坐标X |
0×5e4 | 4 | 浮点型 | 偏移坐标Y |
0×5e8 | 4 | 浮点型 | 偏移坐标Theta |
0×5f1 | 1 | 整型 | 设置1相对运行.设置2绝对运行 |
释放AGV事件 | - | - | - |
0×230 | 1 | 整型 | 释放标志 |
0×390 | 16 | Ascii码 | 需要释放的事件 |
0×2b0 | 16 | Ascii码 | AGV当前执行的事件 |
样例:
以下单位都为米/秒。高度单位为米
路线发送
0x24c 设置该点ID
0x260 设置单个节点的一个坐标的位置[x,y,theta]。
0x257 设置是否进行动作。[2静止升降,5静止动作,6无动作]
0x256 设置该点是起点还是终点。(已弃用,设置为0则可)
0x253 设置该点是直线还是曲线。 [0直线,1圆弧(弃用),2直线圆弧(仅用叉车),3曲率渐变线(仅用AMR)]
0x290 设置每个点的动作名称,UPFOKR DOWNDORK 分别对应上升和下降。无动作则设置""
0x251 设置该点对应整条路线的第几个点。从0开始
设置好以上属性后
以上发送一次为往路线中压入一个节点。循环压入10不同的节点后
0x250 设置1,则agv开始运行。
AGV自搜索式路线发送
需要把工程上传到agv控制器后,才可以通过控制器自搜索路线
如何上传工程
0x3d0 设置起点[可忽略](该点设置为-1,让AGV自身寻找最近的坐标点作为起点)
0x3d4 设置终点
0x3e0 动作任务字(设置该路线需要执行什么样的动作)
上述设置完成后
0x250 设置3,则AGV开始自身搜索路线运行
设置初始位置
0xf0 设置坐标x,y,theta值后
0xe0 设置为1.则开始初始定位
设置切换地图
0x330 设置切换地图的ascii名称。
设置完毕后
0x340 设置为0。
地图切换成功后内部程序会把0x340设置为1。当监控0x340为1时。证明地图切 换成功
设置AGV往前走1米
0x5e0 设置坐标(1,0,0)
0x5f1 设置为1.则开始往前走一米
释放AGV事件
0x390 设置为跟AGV当前事件[0x2b0]一样
0x230 然后设置1,释放当前事件