系统管理模块开发文档
V201807
爱啃萝卜机器人技术(深圳)有限责任公司
AICRobo Robotics (Shenzhen) Co., Ltd.
爱啃萝卜机器人技术(深圳)有限责任公司
目录
1 主要功能 ......................................................................................................................................................1
2 模块框架 ......................................................................................................................................................1
2.1 监听机器人线程..............................................................................................................................1
机器人上线请求................................................................................................... 1
2.1.1
2.1.2
2.1.3
接收心跳包........................................................................................................... 2
接收文件确认....................................................................................................... 2
2.2 监听机器人 UI 线程 ....................................................................................................................... 2
机器人 UI 上线请求..............................................................................................2
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
2.2.7
2.2.8
2.2.9
接收心跳包........................................................................................................... 2
机器人切换模式请求........................................................................................... 2
发送机器人去下一个点请求............................................................................... 3
发送所有任务完成请求....................................................................................... 3
初始化任务信息请求........................................................................................... 3
暂停/继续执行任务请求......................................................................................3
进入/退出跟随状态请求......................................................................................3
机器人坐标已修复............................................................................................... 3
2.3 监测心跳超时线程 ..........................................................................................................................3
2.4 监听交互模块线程 ..........................................................................................................................4
AICRobo Robotics (Shenzhen) Co., Ltd.
爱啃萝卜机器人技术(深圳)有限责任公司
1 主要功能
系统管理模块的主要作用是与交互模块、机器人、机器人 UI、系统监测模块及任务执行模块通信并
处理相应的请求,检测共享内存数据并根据数据的变化进行相应的处理,协调机器人及调度系统其他模
块的运行,保证机器人能够高效有序的完成搬运货物等相关的任务。
2 模块框架
因本模块需同时统筹处理其他模块的各种信息,故模块采用多线程的方式,实现与其他模块的通信
并处理相应的请求,实现检测共享内存的信息并进行处理。因此,模块框架可以线程划分,主要线程如
下图:
2.1 监听机器人线程
该线程开启监听机器人连接的服务器,等待接收机器人的连接。当某一个机器人与服务器连接成功,
该线程会创建一个新的线程专门与机器人通信,接收机器人的请求并进行相应的处理。新线程接收机器
人的具体请求及处理如下:
2.1.1 机器人上线请求
当线程接收到机器人的上线请求,首先,创建 AICRobot 机器人对象,通过 websocket 与机器人 SDK
进行连接,并对机器人进行初始化,绑定几个机器人的回调函数(详见下表)。然后将机器人机器人(包
括机器人 id,机器人通信 ip,机器人系统版本等信息),并添加到共享内存中。
绑定机器人的回调函数
1
AICRobo Robotics (Shenzhen) Co., Ltd.
爱啃萝卜机器人技术(深圳)有限责任公司
回调函数
OnExceptionCallback
GetRobotStatusInfoCallback
GetBatteryStatusInfoCallback
coordinateUpdateCallback
heartbeatCallback
difmd5Callback
arriveCallback
recvMapFileDataCallback
recvBeaconDataCallback
recvAutoChargeCallback
recvRequestPathCallback
onConnectToRobotCallback
2.1.2 接收心跳包
说明
异常回调函数
机器人状态的回调函数
电量状态的回调函数
坐标更新回调函数
心跳回调函数
md5 不一致文件回调函数
导航到达回调函数
收到机器人上传地图回调函数
收到 beacons 数据回调
收到自主回充结果回调
收到请求路径回调
和机器人建立连接回调
当线程接收到机器人的心跳包,则更新机器人的心跳时间为当前时间,该值将被心跳超时线程监测,
若超过心跳阈值,则会被视为掉线。同时,发送心跳包返回给机器人。
2.1.3 接收文件确认
当线程接收到该包,线程创建一个新的线程,并创建 socket 连接机器人(端口为 10012),通过网络
发送文件给机器人。文件主要为机器人系统或机器人 UI 的升级文件。
2.2 监听机器人 UI 线程
该线程开启监听机器人 UI 连接的服务器,等待接收机器人 UI 的连接。当某一个机器人 UI 与服务
器连接成功,该线程会创建一个新的线程专门与机器人 UI 通信,接收机器人 UI 的请求并进行相应的处
理。新线程接收机器人 UI 的具体请求及处理如下:
2.2.1 机器人 UI 上线请求
当线程接收到上线请求,将机器人 UI 的信息(包括机器人 id,机器人 UI 版本和 socket 指针等)保
存,添加到全局容器 robot_ui_vector,后序处理可通过遍历该容器获取机器人 UI 的信息。
2.2.2 接收心跳包
当线程接收到机器人 UI 的心跳包,则更新机器人 UI 的心跳时间为当前时间,该值将被心跳超时线
程监测,若超过心跳阈值,则会被视为掉线。同时,发送心跳包返回给机器人 UI。
2.2.3 机器人切换模式请求
调度模式切换单机模式:将机器人的状态置为不可调度。
2
AICRobo Robotics (Shenzhen) Co., Ltd.
爱啃萝卜机器人技术(深圳)有限责任公司
单机模式切换调度模式:分两种情况,第一种,机器人无对应的任务,直接将机器人的状态有
不可调度改为可调度状态;第二种,机器人有对应的任务,根据任务的状态将机器人的状态设
置为任务中或者子任务执行中。
2.2.4 发送机器人去下一个点请求
直接将请求转发给任务执行模块,具体处理在任务执行模块实现,让机器人前往下一个储位。任务
执行模块会将执行结果返回给系统管理模块,系统管理将转发给机器人 UI。
2.2.5 发送所有任务完成请求
直接将请求转发给任务执行模块,具体处理在任务执行模块实现,执行任务订单完成的操作。任务
执行模块会将执行结果返回给系统管理模块,系统管理将转发给机器人 UI。
2.2.6 初始化任务信息请求
直接将请求转发给任务执行模块,具体处理在任务执行模块实现,清除机器人对应的任务订单信息
和共享内存的任务信息,并将机器人的状态置为可调度。任务执行模块会将执行结果返回给系统管理模
块,系统管理将转发给机器人 UI。
2.2.7 暂停/继续执行任务请求
暂停:执行机器人暂停导航函数 pauseNavigation(),并将共享内存机器人的 interface_pause 字段
置为 true。即让机器人暂停移动。
继续:执行机器人继续导航函数 continueNavigation(),并将共享内存机器人的 interface_pause
字段置为 false。即让机器人继续暂停前的移动。
2.2.8 进入/退出跟随状态请求
暂无处理。
2.2.9 机器人坐标已修复
当线程接收到该包,表明机器人当前的坐标已经修复成功,将共享内存机器人的 flags 字段右起第二
位置为 1。
2.3 监测心跳超时线程
该线程主要作用是监测机器人、机器人 UI 以及系统交互模块的心跳是否超时,如果超时进行相应
的超时处理,具体处理如下:
机器人超时:删除 robot_vector 的机器人信息,删除 AICRobot 机器人对象,并删除共享内存的
机器人信息。
机器人 UI 超时:删除 robot_ui_vector 的机器人信息,当机器人 UI 断开时如果机器人状态为可
调度模式,则将机器人状态置为不可调度。
系统交互模块超时: 在 interactive_socket_vector 中删除该模块的信息。
3
AICRobo Robotics (Shenzhen) Co., Ltd.
爱啃萝卜机器人技术(深圳)有限责任公司
2.4 监听交互模块线程
4