机构脚本接口字典
一、SimModule 模块接口
1.1 SimModule 模块接口速览表
接口 | 描述 | 参数 | 返回数据类型 | |
---|---|---|---|---|
控 制 类 接 口 | setDO | 控制DO开关 | id:int, status:bool | bool |
setMotorSpeed | 控制电机以某个速度运转 | name:str, vel:float, stopDI:int | bool | |
setMotorPosition | 控制电机运转到指定位置 | motor_name:str, pos:float, maxVel:float, stopDI:int | bool | |
publishSpeed | 将电机控制方案,进行速度规划后下发 | 无 | bool | |
resetMotor | 将电机重置为不启用状态 | motor_name:str | bool | |
setPathOnWorld | 控制agv在世界坐标系下以特定线路行走 | x:list, y:list, angle:float | 无 | |
setPathOnRobot | 控制agv在AGV坐标系下以特定线路行走 | x:list, y:list, angle:float | 无 | |
setPathReachDist | 设置路径导航的到点精度 | a:float | 无 | |
setPathReachAngle | 设置路径导航的到点角度精度 | a:float | 无 | |
setPathBackMode | 设置路径导航是否倒走 | a:bool | 无 | |
setPathUseOdo | 设置路径导航是否启用里程定位 | a:bool | 无 | |
setPathMaxSpeed | 设置路径导航的最大速度 | a:float | 无 | |
setPathMaxRot | 设置路径导航的最大角速度 | a:float | 无 | |
setSound | 播放音频文件 | name:str, flag:bool | 无 | |
stopSound | 停止播放音频文件 | flag:bool | 无 | |
switchMap | 切换地图 | map:str, switchPoint:str | int | |
goPath | 控制AGV移动 | 无 | 无 | |
resetPath | 控制agv沿着规划的线路行驶 | 无 | 无 | |
stopRobot | 控制agv停下来 | flag:bool | 无 | |
setNextSpeed | 设置准备下发的速度 | nav:str | bool | |
speedDecomposition | 将导航速度分解,目前只有单舵轮和双舵轮有效 | nav:str | str | |
addMoveTask | 增加任务,对应3051 | msg:str | 无 | |
addMoveTaskList | 增加任务队列,对应3066 | msg:str | 无 | |
resetTriggleScript | 重置Triggle信息 | 无 | 无 | |
resetRecAndGoPathDi | 重置识别行走的动作 | 无 | 无 | |
recAndGoPathDi | 识别并且会行走 | task:str | int | |
openSpeed | 控制小车行走速度 | vx:float, vy: float, vw:float | 无 | |
resetGoMapPath | 行走的动作 | 无 | 无 | |
goMapPath | 按地图路线行走 | task:str | int | |
armBinTask | 调用机械臂动作 | task_id: int, cmd: str | 无 | |
armStop | 停止机械臂动作 | 无 | 无 | |
armPause | 暂停机械臂动作 | 无 | 无 | |
armResume | 恢复机械臂动作 | 无 | 无 | |
scannerCode | 机械臂识别二维码 | task_id: int | 无 | |
stopMotor | 停止所有非行走电机 | 无 | 无 | |
识 别 和 状 态 类 接 口 | doRec | 进行识别 | filename:str | 无 |
resetRec | 重置识别模块 | 无 | 无 | |
getRecResult | 获取识别结果 | 无 | dict | |
doRecWithAngle | 进行识别,包含识别机构在agv坐标系下的角度 | filename:str, a:float | 无 | |
getRecStatus | 获取识别状态: 0 初始化,1 识别中,2 获得结果, 3 识别出错, -1 未知错误 | 无 | int | |
setLocalShelfArea | 加载顶升上的货物模型 | object_model_path:str | bool | |
resetLocalShelfArea | 取消顶升上的货架模型 | 无 | bool | |
setGoodsShape | 设置货物形状,并且告诉rbk车上装载有货物了 | head:float, tail:float, width:float | 无 | |
hasGoods | 获取身上是否有货物的状态 | 无 | bool | |
clearGoodsShape | 去除agv身上的状态 | 无 | bool | |
getForkPressure | 货叉测得重量 | 无 | float | |
getForkPressureADC | 货叉压力传感器adc值 | 无 | float | |
getRecFileFromTask | 通过任务获取识别文件 | 无 | str | |
setContainer | 设置车子上库位或者背篓货物 | container_name:str, goods_id:str, desc:str | bool | |
getContainers | 获取当前车子上库位或者背篓货物的状态 | 无 | list | |
clearContainer | 清除车上特定库位或者背篓的状态 | container_name:str | bool | |
clearContainerByGoodsId | 根据goodsId清除车上特定库位或者背篓的状态 | goods_id:str | bool | |
laserCollision | 检测激光点是否和自身碰撞 | ids: list | bool | |
RecognizeBarCode 3.3.5.78 | 获取一维码信息 | name (str): 其中输入为识别文件的目录,如: tag/t0001.tag | str: 为识别到的条形码的编码符号。 如未识别到,返回值为空 | |
forkGoods | 货叉上加载或卸载货物模型及货物检测DI | load: bool, recfile: str | int | |
数 据 查 询 类 接 口 | isMotorReached | 查询电机是否运转到位 | motor_name:str | bool |
isAllMotorsReached | 查询所有电机是否运转到位 | 无 | bool | |
isMotorPositionReached | 查询电机是否到达特定位置 | motor_name:str, pos:float, stopDI:int | bool | |
isMotorStop | 查询电机是否处于停止状态 | motor_name:str | bool | |
isPathReached | 查询agv是否完成线路 | 无 | bool | |
getMsg | 获取消息名称 | type_name:str | dict | |
getCount | 获取当前任务循环的次数 | 无 | int | |
odo | 获得里程数据 | 无 | dict | |
loc | 获取AGV定位数据 | 无 | dict | |
navSpeed | 获取当前速度数据 | 无 | dict | |
getNextSpeed | 获取当前NavSpeed的速度 | 无 | dict | |
battery | 获取电池数据 | 无 | dict | |
rfid | 获得rfid数据 | 无 | dict | |
magnetic | 获得磁条数据 | 无 | dict | |
Di | 获取机器人DI数据 | 无 | dict | |
Do | 获取机器人DO数据 | 无 | dict | |
pgv | 获得pgv数据 | 无 | dict | |
sound | 获得音频数据 | 无 | dict | |
controller | 获取AGV控制器数据 | 无 | dict | |
fork | 获取AGV货叉数据 | 无 | dict | |
jack | 获取AGV顶升数据 | 无 | dict | |
moveTask | 获取AGV任务数据 | 无 | dict | |
getArmInfo | 获取机械臂信息 | 无 | dict | |
getDistanceSensor | 获取距离节点信息 | 无 | list | |
sensorPointCloud | 获得后视激光点云信息 | 无 | dict | |
getTriggleScriptName | 获取TriggleScript的名称 | 无 | str | |
getTriggleScriptArgs | 获取TriggleScript的参数 | 无 | str | |
hasTriggleScript | 监测是否有TriggleScript触发 | 无 | bool | |
robokitVersion | 获取 robokit 版本号, from: 3.3.5.11 | 无 | str | |
initForkCollisionCheck | 初始化货叉移动时的碰撞检测,读取模型文件fork设备BackLaser相应的参数 | 无 | 无 | |
forkCollisionCheck | 货叉移动时后视激光碰撞检测 | ss:str | bool | |
getLM3.3.5.78 | 获取点位坐标 | name (str): 站点或者库位名称 flag (bool): True 返回的坐标是地图坐标系, False返回的坐标是机器人坐标系 | tuple: 0-> x (m); 1->y (m); 2->theta (rad); 3-> id (-1 表示不存在) | |
getMinDynamicObs | 获取离小车最近的动态障碍物坐标 | 无 | list | |
脚 本 调 试 类 接 口 | logInfo | 输出数据到log文件中,等级为Info | ss:str | 无 |
logWarn | 输出数据到log文件中,等级为Warning | ss:str | 无 | |
logError | 输出数据到log文件中,等级为Error | ss:str | 无 | |
logDebug | 输出数据到log文件中,等级为Debug | ss:str | 无 | |
setInfo | 输出脚本调试信息 | ss:str | 无 | |
setNotice | 输出报警码为57300的Notice | ss:str | 无 | |
setWarning | 输出报警码为55300的Warning | ss:str | 无 | |
setUserWarning | 输出自定义报警码(55900~55999)的Warning | ss:str | 无 | |
setError | 输出报警码为53000的Error | ss:str | 无 | |
setUserError | 输出自定义报警码(53900~53999)的Error | code:int, ss:str | 无 | |
setPickRobotError | 多料箱车专用报错码(53800~53899) | code:int, ss:str | 无 | |
clearError | 清除特定编号的Error | code:int | 无 | |
clearWarning | 清除特定编号的Warning | code:int | 无 | |
clearNotice3.3.5.78 | 清除特定编号的Notice | code:int | 无 | |
warningExits | 查询特定编号的Warning是否存在 | code:int | bool | |
errorExits | 查询特定编号的Error是否存在 | code:int | bool | |
errorExists3.3.5.78 | 查询特定编号的Error是否存在 | code:int | bool | |
warningExists3.3.5.78 | 查询特定编号的Error是否存在 | code:int | bool | |
noticeExists3.3.5.78 | 查询特定编号的Error是否存在 | code:int | bool | |
setBlockError | 设置阻挡52200错误 | 无 | 无 | |
clearBlockError | 清除阻挡52200错误 | 无 | 无 | |
setBlockReason | 设置阻挡原因,collision_type (int): 阻挡原因见rbk.py脚本中的CollisionType类,x (float): 障碍物位置,y (float): 障碍物位置,id (float): 障碍物id | collision_type: int, x: float, y: float, id: int | 无 | |
getRobotFile | 获取模型文件的原始数据 | 无 | dict | |
getRecFile | 获取识别文件的原始数据 | name:str | dict |
二、数据查询字段解析
2.1 获取当前任务循环的次数
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
getCount | 获取当前任务循环的次数 | 无 | int |
方法调用示例:
python
msg = r.getCount()
print(msg)
1
2
2
接口返回数据示例:
python
Output: 15
1
2.2 获取电池数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
battery | 获取电池数据 | 无 | dict |
方法调用示例:
python
battery_data = r.battery()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"charge_current": -1,
"charge_voltage": 1,
"cycle": 0,
"is_charging": false
"max_charge_current": 0,
"max_charge_voltage": 0,
"percetage": 1,
"temperature": 0,
"user_data": ""
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
charge_current | int | -1 | 当前充电状态 |
charge_voltage | int | 1 | |
cycle | int | 0 | |
is_charging | bool | false | 是否正在充电中 |
max_charge_current | int | 0 | |
max_charge_voltage | int | 0 | |
percetage | int | 1 | |
temperature | int | 0 | 电池温度 |
user_data | string | "" |
2.3 获取里程数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
odo | 获得里程数据 | 无 | dict |
方法调用示例:
python
msg = r.odo()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"angle": -4.5602541,
"cycle": 4651341,
"detect_skid": false,
"follow_err": false,
"header": {
"data_nsec": "415223169185955",
"frame_id": "/odo",
"pub_nsec": "415223169186125",
"seq": "0"
},
"is_stop": true,
"motor_info": [
{
"calib": false,
"can_id": 2,
"can_router": 1,
"current": 1,
"emc": false,
"encoder": 0,
"err": false,
"error_code": 0,
"follow_err": false,
"motor_name": "motor_Right",
"passive": false,
"position": 0,
"raw_position": 0,
"speed": 0,
"stop": false,
"temperature": 1,
"type": 0,
"voltage": 0
},
{
"calib": false,
"can_id": 1,
"can_router": 1,
"current": 1,
"emc": false,
"encoder": 0,
"err": false,
"error_code": 0,
"follow_err": false,
"motor_name": "motor_Left",
"passive": false,
"position": 0,
"raw_position": 0,
"speed": 0,
"stop": false,
"temperature": 1,
"type": 0,
"voltage": 0
}
],
"vel_rotate": 0,
"vel_x": 0,
"vel_y": 0,
"x": 26.302389137252263,
"y": -16.080223023014746
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
angle | int | -4.5602541 | 小车当前角度 |
cycle | int | 4651341 | |
detect_skid | bool | false | 小车是否打滑 |
follow_err | bool | false | |
is_stop | bool | true | 小车是否静止 |
vel_rotate | int | 0 | |
vel_x | int | 0 | |
vel_y | int | 0 | |
x | int | 26.302389137252263 | 世界坐标系下 x 轴坐标 |
y | int | -16.080223023014746 | 世界坐标系下 y 轴坐标 |
header 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
data_nsec | string | "415223169185955" | |
frame_id | string | /odo | 执行的函数名称 |
pub_nsec | string | "415223169186125" | |
seq | string | "0" |
motor_info 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
calib | bool | false | |
can_id | int | 1 | can 的 id |
can_router | int | 1 | can 的 路由 |
current | int | 1 | |
emc | bool | false | 是否急停 |
encoder | int | 0 | |
err | bool | false | |
error_code | int | 0 | |
follow_err | bool | false | |
motor_name | string | "motor_Left" | 电机名称 |
passive | bool | false | |
position | int | 0 | |
raw_position | int | 0 | |
speed | int | 0 | |
stop | bool | false | |
temperature | int | 1 | 电机温度 |
type | int | 0 | |
voltage | int | 0 |
2.4 获取定位数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
loc | 获取AGV定位数据 | 无 | dict |
方法调用示例:
python
msg = r.loc()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"angle": -3.01641845703125,
"confidence": 0.2693849443659164,
"correction_errs": [0.004627956391526823, -0.012603017829776946, 0.035735549737506714],
"header": {
"data_nsec": "417519229609708",
"frame_id": "",
"pub_nsec": "0",
"seq": "0"
},
"in_forbidden_area": false,
"loc_method": 0,
"loc_state": 0,
"reliabilities": [0, 0, 0, 0],
"similarity": 0,
"update_reason": 0,
"x": 14.005484914171664,
"y": -5.584118684568884
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
angle | int | -3.01641845703125 | 小车当前角度 |
confidence | int | 0.2693849443659164 | 小车当前的置信度 |
correction_errs | list | 0.004627956391526823,0.035735549737506714 | |
in_forbidden_area | bool | false | |
loc_method | int | 0 | |
loc_state | int | 0 | |
reliabilities | list | 0, 0, 0, 0 | |
similarity | int | 0 | |
update_reason | int | 0 | |
x | int | 14.005484914171664 | 世界坐标系下 x 轴坐标 |
y | int | -5.584118684568884 | 世界坐标系下 y 轴坐标 |
2.5 获取当前速度数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
navSpeed | 获取当前速度数据 | 无 | dict |
方法调用示例:
python
msg = r.navSpeed()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"header": {
"data_nsec": "418162132735146",
"frame_id": "",
"pub_nsec": "418162132735146",
"seq": "0"
},
"is2move": true,
"motor_cmd": [
{
"can_id": 0,
"can_router": 0,
"io_cmd": 3,
"motor_name": "motor_Left",
"type": 0, "value": 0
},
{
"can_id": 0,
"can_router": 0,
"io_cmd": 3,
"motor_name": "motor_Right",
"type": 0,
"value": 0
}
],
"rotate": 0,
"x": 0,
"y": 0
}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
is2move | bool | true | |
rotate | int | 0 | |
x | int | 0 | |
y | int | 0 |
motor_cmd 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
can_id | int | 0 | can 的 id |
can_router | int | 0 | can 的路由 |
io_cmd | int | 3 | |
motor_name | string | "motor_Right" | 电机名称 |
type | int | 0 | |
value | int | 0 |
2.6 获取当前 NavSpeed 的速度
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
getNextSpeed | 获取当前NavSpeed的速度 | 无 | dict |
方法调用示例:
python
msg = r.getNextSpeed()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"header": {
"data_nsec": "419669544810406",
"frame_id": "",
"pub_nsec": "419669544810406",
"seq": "0"
},
"is2move": false,
"motor_cmd": [
{
"can_id": 0,
"can_router": 0,
"io_cmd": 3,
"motor_name": "motor_Left",
"type": 0, "value": 0
},
{
"can_id": 0,
"can_router": 0,
"io_cmd": 3,
"motor_name": "motor_Right",
"type": 0,
"value": 0
}
],
"rotate": 0,
"x": 0,
"y": 0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
is2move | bool | false | |
rotate | int | 0 | |
x | int | 0 | |
y | int | 0 |
motor_cmd 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
can_id | int | 0 | can 的 id |
can_router | int | 0 | can 的路由 |
io_cmd | int | 3 | |
motor_name | string | "motor_Right" | 电机名称 |
type | int | 0 | |
value | int | 0 |
2.7 获取 rfid 数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
rfid | 获得rfid数据 | 无 | dict |
方法调用示例:
python
msg = r.rfid()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"rfid_nodes": []
}
1
2
3
4
2
3
4
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
rfid_nodes | list | [] |
2.8 获取磁条数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
magnetic | 获得磁条数据 | 无 | dict |
方法调用示例:
python
msg = r.magnetic()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"magnetic_nodes": []
}
1
2
3
4
2
3
4
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
magnetic_nodes | list | [] |
2.9 获取机器人 DI 数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
Di | 获取机器人DI数据 | 无 | dict |
方法调用示例:
python
msg = r.Di()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"max_node": 0,
"node": [
{
"forbidden": false,
"func": "",
"id": 8,
"maxdist": 0,
"mindist": 0,
"posx": [],
"posy": [],
"range": 0,
"shape": "",
"source": "virtual",
"status": false,
"type": "",
"x": 0,
"y": 0,
"yaw": 0,
"z": 0
},
{
"forbidden": false,
"func": "",
"id": 7,
"maxdist": 0,
"mindist": 0,
"posx": [],
"posy": [],
"range": 0,
"shape": "",
"source": "virtual",
"status": false,
"type": "",
"x": 0,
"y": 0,
"yaw": 0,
"z": 0
},
{
"forbidden": false,
"func": "",
"id": 6,
"maxdist": 0,
"mindist": 0,
"posx": [],
"posy": [],
"range": 0,
"shape": "",
"source": "virtual",
"status": false,
"type": "",
"x": 0,
"y": 0,
"yaw": 0,
"z": 0
},
{
"forbidden": false,
"func": "",
"id": 5,
"maxdist": 0,
"mindist": 0,
"posx": [],
"posy": [],
"range": 0,
"shape": "",
"source": "virtual",
"status": false,
"type": "",
"x": 0,
"y": 0,
"yaw": 0,
"z": 0
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
max_node | int | 0 |
node 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
forbidden | bool | false | |
func | string | "" | |
id | int | 5 | |
maxdist | int | 0 | |
mindist | int | 0 | |
posx | list | [] | |
posy | list | [] | |
range | int | 0 | |
shape | string | "" | |
source | string | "virtual" | 虚拟 DI |
status | bool | false | |
type | string | "" | |
x | int | 0 | |
y | int | 0 | |
yaw | int | 0 | |
z | int | 0 |
2.10 获取机器人 DO 数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
Do | 获取机器人DO数据 | 无 | dict |
方法调用示例:
python
msg = r.Do()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"max_node": 0,
"node": [
{
"func": "",
"id": 6,
"source": "",
"status": false
},
{
"func": "",
"id": 5,
"source": "",
"status": false
},
{
"func": "",
"id": 4,
"source": "",
"status": true
},
{
"func": "",
"id": 3,
"source": "",
"status": false
},
{
"func": "",
"id": 2,
"source": "",
"status": false
},
{
"func": "",
"id": 1,
"source": "",
"status": true
},
{
"func": "",
"id": 0,
"source": "",
"status": true
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
max_node | int | 0 |
node 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
func | string | "" | |
id | int | 0 | |
source | string | "" | |
status | bool | true |
2.11 获取 pgv 数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
pgv | 获得pgv数据 | 无 | dict |
方法调用示例:
python
msg = r.pgv()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"pgvs": []
}
1
2
3
4
2
3
4
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
pgvs | list | [] |
2.12 获取音频数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
sound | 获得音频数据 | 无 | dict |
方法调用示例:
python
msg = r.sound()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"loop": true,
"sound_name": "navigation.wav",
"status": 2
}
1
2
3
4
5
6
2
3
4
5
6
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
loop | bool | true | 是否循环播放,true:循环播放,false:不循环播放 |
sound_name | string | "navigation.wav" | 播放的音频名称 |
status | int | 2 | 0:未播放音频,1:音频暂停播放中,2:音频播放中 |
2.13 获取控制器数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
controller | 获取AGV控制器数据 | 无 | dict |
方法调用示例:
python
msg = r.controller()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"autoCharge": false,
"brake": false,
"driverEmc": false,
"electric": false,
"emc": false,
"humi": 0,
"isExternalControl": false,
"isIMUCalibrating": false,
"manualCharge": false,
"softEMC": false,
"temp": 0,
"voltage": 0,
"voltagebyAdc": 0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
autoCharge | bool | false | |
brake | bool | false | |
driverEmc | bool | false | |
electric | bool | false | |
emc | bool | false | |
humi | int | 0 | |
isExternalControl | bool | false | |
isIMUCalibrating | bool | false | |
manualCharge | bool | false | |
softEMC | bool | false | |
temp | int | 0 | |
voltage | int | 0 | |
voltagebyAdc | int | 0 |
2.14 获取货叉数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
fork | 获取AGV货叉数据 | 无 | dict |
方法调用示例:
python
msg = r.fork()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"fork_error": 0,
"fork_val": 0,
"forward_in_place": false,
"forward_val": 0,
"get_goods": false,
"height": 0,
"height_in_place": false,
"incline": 0,
"incline_in_place": false,
"incline_val": 0,
"pressure_actual": 0,
"pressure_adc": 0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
fork_error | int | 0 | |
fork_val | int | 0 | |
forward_in_place | bool | false | |
forward_val | int | 0 | |
get_goods | bool | false | |
height | int | 0 | |
height_in_place | bool | false | |
incline | int | 0 | |
incline_in_place | bool | false | |
incline_val | int | 0 | |
pressure_actual | int | 0 | |
pressure_adc | int | 0 |
2.15 获取顶升数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
jack | 获取AGV顶升数据 | 无 | dict |
方法调用示例:
python
msg = r.jack()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"emc": false,
"enable": false,
"errorCode": 0,
"height": 0,
"isFull": false,
"mode": false,
"speed": 0,
"state": 0
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
emc | bool | false | |
enable | bool | false | |
errorCode | int | 0 | |
height | int | 0 | |
isFull | bool | false | |
mode | bool | false | |
speed | int | 0 | |
state | int | 0 |
2.16 获取任务数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
moveTask | 获取AGV任务数据 | 无 | dict |
方法调用示例:
python
msg = r.moveTask()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"dec_obs_expansion": 0.2,
"max_acc": 1,
"max_dec": 1,
"max_rot": 0.782907095366736,
"max_rot_acc": 2.0943951023931953,
"max_rot_dec": 1.5707963267948966,
"max_speed": 0.7853981633974483,
"obs_dec_dist": 3,
"obs_dec_speed": 0.2,
"obs_expansion": 0.1,
"obs_stop_dist": 1,
"params": [
{
"key": "operation",
"string_value": "Script"
},
{
"key": "script_name",
"string_value": "lin/test.py"
},
{
"bool_value": true,
"key": "allow_free_go"
}
],
"reach_angle": 0.008726646259971648,
"reach_dist": 0.005,
"reach_method": "forward",
"skill_name": "Action",
"target_name": "9"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
dec_obs_expansion | int | 0.2 | |
max_acc | int | 1 | |
max_dec | int | 1 | |
max_rot | int | 0.782907095366736 | |
max_rot_acc | int | 2.0943951023931953 | |
max_rot_dec | int | 1.5707963267948966 | |
max_speed | int | 0.7853981633974483 | |
obs_dec_dist | int | 3 | |
obs_dec_speed | int | 0.2 | |
obs_expansion | int | 0.1 | |
obs_stop_dist | int | 1 | |
reach_angle | int | 0.008726646259971648 | |
reach_dist | int | 0.005 | |
reach_method | string | "forward" | |
skill_name | string | "Action" | |
target_name | string | "9" |
params 字段:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
key | string | "operation" | |
string_value | string | Script | |
key | string | "script_name" | |
string_value | string | "lin/test.py" | |
bool_value | bool | true | |
key | string | "allow_free_go" |
2.17 获取机械臂信息
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
getArmInfo | 获得机械臂信息 | 无 | dict |
方法调用示例:
python
msg = r.getArmInfo()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"DI": [],
"DO": [],
"enabled": false,
"robot_status_bits": [],
"safety_mode": 0,
"safety_status_bits": [],
"taskId": 0,
"task_status": 0
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
DI | list | [] | |
DO | list | [] | |
enabled | bool | false | 是否启用机械臂,true = 启用,false = 不启用 |
robot_status_bits | list | [] | |
safety_mode | int | 0 | |
safety_status_bits | list | [] | |
taskId | int | 0 | |
task_status | int | 0 |
2.18 获取距离节点信息
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
getDistanceSensor | 获得距离节点信息 | 无 | dict |
方法调用示例:
python
msg = r.getDistanceSensor()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"node": []
}
1
2
3
4
2
3
4
返回字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
node | list | [] |
2.19 获取后视激光点云信息
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
sensorPointCloud | 获得后视激光点云信息 | 无 | dict |
方法调用示例:
python
msg = r.sensorPointCloud()
print(msg)
1
2
2
接口返回数据示例:
python
Output:
{
"global_cluster": [
{
"header":
{
"data_nsec": "423939395152396",
"frame_id": "",
"pub_nsec": "0",
"seq": "0"
},
"id": "1",
"point": [
{
"is_obstacle": true,
"rssi": 100,
"x": 24.781345578357573,
"y": -12.40421655491872,
"z": 0
},
{
"is_obstacle": true,
"rssi": 100,
"x": 26.920356728196996,
"y": -13.95355462811719,
"z": 0
},
{
"is_obstacle": true,
"rssi": 100,
"x": 24.96300860843852,
"y": -12.314360624573617,
"z": 0
},
{
"is_obstacle": true,
"rssi": 100, "x": 25.154097313239248,
"y": -12.319513761761758,
"z": 0
},
{
"is_obstacle": true,
"rssi": 100,
"x": 25.18682711936516,
"y": -12.206342445234426,
"z": 0
},
{
"is_obstacle": true,
"rssi": 100,
"x": 25.19041497687728,
"y": -12.073297463125794,
"z": 0
}
],
"type": 5
},
{
"header": {
"data_nsec": "423939437107877",
"frame_id": "",
"pub_nsec": "0",
"seq": "0"
},
"id": "",
"point": [],
"type": 6
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
global_cluster 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
id | string | "1" | |
type | int | 5 |
point 字段解释:
字段 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
is_obstacle | bool | true | 是否阻碍,true:阻碍,false:不阻碍 |
rssi | int | 100 | 信号强度 |
x | int | 25.19041497687728 | 点云在世界坐标系下的 x 坐标轴 |
y | int | -12.073297463125794 | 点云在世界坐标系下的 y 坐标轴 |
z | int | 0 | 点云在世界坐标系下的 z 坐标轴 |
2.20 获取模型文件的原始数据
接口 | 描述 | 参数 | 返回数据类型 |
---|---|---|---|
getRobotFile | 获得模型文件的原始数据 | 无 | dict |
方法调用示例:
python
robotmodel = r.getRobotFile()
1
接口返回数据示例:
python
{"deviceTypes": [{"desc": "REk=", "devices": [{"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 1, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI1"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 2, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI2"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 3, "unit": ""}, {"boolValue": true, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI3"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 4, "unit": ""}, {"boolValue": true, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": false, "name": "DI4"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 5, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI5"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 6, "unit": ""}, {"boolValue": true, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI6"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 7, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI7"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 8, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI8"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 9, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI9"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 10, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI10"}, {"desc": "REk=", "deviceParams": [{"arrayParam": {"params": [{"cloneEnable": false, "desc": "SDEuMi4xMOS7peWJjTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtOCAKVmlydHVhbCBpZOiMg+WbtO+8mjktMTYgCk1vZGJ1cyBpZOiMg+WbtO+8mjE3LTgwIAoKSDEuMi4xMOS7peWJjSjlkKtjdXJ0aXPmianlsZVJTyk6IApOb3JtYWwgaWTojIPlm7TvvJowLTE2IApWaXJ0dWFsIGlk6IyD5Zu077yaMTctMjQgCk1vZGJ1cyBpZOiMg+WbtO+8mjI1LTgwIAoKSDEuMi4xMOWPiuS7peWQjjogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTAgClZpcnR1YWwgaWTojIPlm7TvvJoxMS0xOCAKTW9kYnVzIGlk6IyD5Zu077yaMTktODAgCgpIMS4yLjEw5Y+K5Lul5ZCOKOWQq2N1cnRpc+aJqeWxlUlPKTogCk5vcm1hbCBpZOiMg+WbtO+8mjAtMTggClZpcnR1YWwgaWTojIPlm7TvvJoxOS0yNiAKTW9kYnVzIGlk6IyD5Zu077yaMjctODA=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 0, "unit": ""}, {"boolValue": false, "cloneEnable": false, "desc": "5Y+N5ZCR55S15bmz6Kem5Y+RKOiZmuaLn0RJ5ZKMY3VydGlza+aJqeWxlURJ6Zmk5aSWKQ==", "key": "inverse", "type": "bool", "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}], "isDisplay": false, "isEnabled": true, "name": "DI0"}], "maxCount": 81, "name": "DI", "ord": 0}, {"desc": "RElTZW5zb3I=", "devices": [{"desc": "RElTZW5zb3I=", "deviceParams": [{"cloneEnable": false, "comboParam": {"childKey": "collision", "childParams": [{"desc": "Z29vZHMgZGV0ZWN0aW9u", "key": "goodsDetect", "params": []}, {"desc": "aWdub3JlIHRhc2sgaW5zdHJ1Y3Rpb24=", "key": "ignoreTask", "params": []}, {"desc": "56m6", "key": "none", "params": []}, {"desc": "56Kw5pKe5p2h", "key": "collision", "params": []}, {"desc": "57qi5aSW", "key": "infrared", "params": []}, {"desc": "6LaF5aOw", "key": "ultrasonic", "params": []}, {"desc": "6Ziy6LeM6JC9", "key": "fallingDown", "params": []}]}, "desc": "57G75Z6L", "key": "type", "type": "comboParam"}, {"arrayParam": {"params": [{"cloneEnable": false, "desc": "6YCJ5oup55u45bqU55qEREnluo/lj7c=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 5, "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}, {"cloneEnable": false, "comboParam": {"childKey": "vertex", "childParams": [{"desc": "5omH5b2i", "key": "arc", "params": [{"cloneEnable": false, "desc": "eA==", "doubleMaxvalue": 1000, "doubleMinvalue": -1000, "doubleValue": 0, "key": "x", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "eQ==", "doubleMaxvalue": 1000, "doubleMinvalue": -1000, "doubleValue": 0, "key": "y", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "eg==", "doubleMaxvalue": 1000, "doubleMinvalue": -1000, "doubleValue": 0, "key": "z", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "eWF3", "doubleMaxvalue": 180, "doubleMinvalue": -180, "doubleValue": 0, "key": "yaw", "type": "double", "unit": "deg"}, {"cloneEnable": false, "desc": "5pyA6L+R6Led56a7", "doubleMaxvalue": 999.99, "doubleMinvalue": 0, "doubleValue": 0, "key": "minDist", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "5pyA6L+c6Led56a7", "doubleMaxvalue": 999.99, "doubleMinvalue": 0, "doubleValue": 0.1, "key": "maxDist", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "6KeS5bqm6IyD5Zu0", "doubleMaxvalue": 360, "doubleMinvalue": 0, "doubleValue": 0, "key": "range", "type": "double", "unit": "deg"}]}, {"desc": "5aSa6L655b2i", "key": "vertex", "params": [{"cloneEnable": false, "desc": "", "doubleValue": 0.5133333333333333, "key": "posX0", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "", "doubleValue": 0.34666666666666673, "key": "posY0", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "", "doubleValue": 0.5166666666666666, "key": "posX1", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "", "doubleValue": -0.37999999999999995, "key": "posY1", "type": "double", "unit": "m"}]}]}, "desc": "5b2i54q2", "key": "shape", "type": "comboParam"}, {"cloneEnable": false, "comboParam": {"childKey": "stop", "childParams": [{"desc": "56m6", "key": "none", "params": []}, {"desc": "5YGc5q2i", "key": "stop", "params": []}, {"desc": "5YeP6YCf", "key": "slowdown", "params": []}]}, "desc": "5Yqf6IO9", "key": "func", "type": "comboParam"}], "isDisplay": true, "isEnabled": true, "name": "Bumper"}, {"desc": "RElTZW5zb3I=", "deviceParams": [{"cloneEnable": false, "comboParam": {"childKey": "collision", "childParams": [{"desc": "Z29vZHMgZGV0ZWN0aW9u", "key": "goodsDetect", "params": []}, {"desc": "aWdub3JlIHRhc2sgaW5zdHJ1Y3Rpb24=", "key": "ignoreTask", "params": []}, {"desc": "56m6", "key": "none", "params": []}, {"desc": "56Kw5pKe5p2h", "key": "collision", "params": []}, {"desc": "57qi5aSW", "key": "infrared", "params": []}, {"desc": "6LaF5aOw", "key": "ultrasonic", "params": []}, {"desc": "6Ziy6LeM6JC9", "key": "fallingDown", "params": []}]}, "desc": "57G75Z6L", "key": "type", "type": "comboParam"}, {"arrayParam": {"params": [{"cloneEnable": false, "desc": "6YCJ5oup55u45bqU55qEREnluo/lj7c=", "key": "id", "type": "uint32", "uint32Maxvalue": 80, "uint32Minvalue": 0, "uint32Value": 8, "unit": ""}]}, "cloneEnable": false, "desc": "5Z+656GA5Y+C5pWw", "key": "basic", "type": "arrayParam"}, {"cloneEnable": false, "comboParam": {"childKey": "vertex", "childParams": [{"desc": "5omH5b2i", "key": "arc", "params": [{"cloneEnable": false, "desc": "eA==", "doubleMaxvalue": 1000, "doubleMinvalue": -1000, "doubleValue": 0, "key": "x", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "eQ==", "doubleMaxvalue": 1000, "doubleMinvalue": -1000, "doubleValue": 0, "key": "y", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "eg==", "doubleMaxvalue": 1000, "doubleMinvalue": -1000, "doubleValue": 0, "key": "z", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "eWF3", "doubleMaxvalue": 180, "doubleMinvalue": -180, "doubleValue": 0, "key": "yaw", "type": "double", "unit": "deg"}, {"cloneEnable": false, "desc": "5pyA6L+R6Led56a7", "doubleMaxvalue": 999.99, "doubleMinvalue": 0, "doubleValue": 0, "key": "minDist", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "5pyA6L+c6Led56a7", "doubleMaxvalue": 999.99, "doubleMinvalue": 0, "doubleValue": 0.1, "key": "maxDist", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "6KeS5bqm6IyD5Zu0", "doubleMaxvalue": 360, "doubleMinvalue": 0, "doubleValue": 0, "key": "range", "type": "double", "unit": "deg"}]}, {"desc": "5aSa6L655b2i", "key": "vertex", "params": [{"cloneEnable": false, "desc": "", "doubleValue": -0.5166666666666667, "key": "posX0", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "", "doubleValue": -0.3899999999999999, "key": "posY0", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "", "doubleValue": -0.5133333333333335, "key": "posX1", "type": "double", "unit": "m"}, {"cloneEnable": false, "desc": "", "doubleValue": 0.3533333333333332, "key": "posY1", "type": "double", "unit": "m"}]}]}, "desc": "5b2i54q2", "key": "shape", "type": "comboParam"}, {"cloneEnable": false, "comboParam": {"childKey": "stop", "childParams": [{"desc": "56m6", "key": "none", "params": []}, {"desc": "5YGc5q2i", "key": "stop", "params": []}, {"desc": "5YeP6YCf", "key": "slowdown", "params": []}]}, "desc": "5Yqf6IO9", "key": "func", "type": "comboParam"}], "isDisplay": true, "isEnabled": true, "name": "Bumper1"}, {"desc": "RElTZW5zb3I=", "deviceParams": [{"cloneEnable": false, "comboParam": {"childKey": "infrared", "childParams": [{"desc": "Z29vZHMgZGV0ZWN0aW9u", "key": "goodsDetect", "params": []}, {"desc": "aWdub3JlIHRhc2sgaW5zdHJ1Y3Rpb24=", "key": "ignoreTask", "params": []}, {"desc": "56m6", "key": "none", "params": []}, {"desc": "56Kw5pKe5p2h", "key": "collision", "params": []}, {"desc": "57qi5aSW", "key": "infrared", "params": []}, {"desc": "6LaF5aOw", "key": "ultrasonic", "params": []}, {"desc": "6Ziy6LeM6JC9", "key": "fallingDown", "params": []}]}, "desc": "57G75Z6L", "key": "type", "type": "comboParam"}, {"arrayParam": {"params": [