轮臂机器人基础使用
说明
为方便使用,轮臂机器人上肢半身的控制接口与全身上肢接口完全一致,可以适配所有上肢相关案例,配置方式具体可参考上肢控制模式中实物运行-轮臂机器人篇章,上肢控制接口详见接口使用文档,下面主要说明底盘的控制使用以及二次开发接口
软件使用
Leju Design
- 功能:用于修改编辑使用 Leju Mobile 扫描建立的地图,包含创建地图功能点、预定义任务等功能
- 使用手册:Design使用手册
Leju Mobile
- 功能:主要用于遥控机器人实现扫描建图,执行预定义任务、实时监控等
- 使用手册:Mobile使用手册
开发接口
1. 订阅 (Subscribe)
概述 订阅机制允许客户端接收底盘系统推送的消息,如状态更新、事件通知等。客户端通过建立WebSocket连接并发送订阅请求,底盘系统将根据请求的内容推送相应的消息。
WebSocket连接
连接建立:客户端使用WebSocket协议连接到底盘服务器的特定端点。
心跳机制:为保持连接活性,客户端与服务器之间定期交换心跳消息。
订阅请求格式
{
"type": "subscribe",
"body": {
"topics": ["topic1", "topic2"]
}
}
type:标识请求类型,订阅请求为
subscribe
。body:
- topics:一个字符串数组,表示客户端想要订阅的主题列表。
订阅响应格式
{
"type": "notification",
"body": {
"topic": "topic1",
"message": {
// 根据topic不同,消息内容会有所差异
}
}
}
type:标识响应类型,通知为
notification
。body:
- topic:与订阅请求中的主题对应,标识消息所属的主题。
- message:具体的消息内容,格式依据主题而定。
支持的订阅主题 以下是目前支持的订阅主题及其简要说明:
- 状态更新 (
status_update
):订阅底盘的状态更新,如电池电量、位置信息等。 - 错误日志 (
error_log
):接收底盘系统产生的错误日志。 - 事件通知 (
event_notification
):底盘系统发生特定事件时的通知,如充电完成、进入故障状态等。
- 示例:订阅状态更新
{
"type": "subscribe",
"body": {
"topics": ["status_update"]
}
}
响应示例:
{
"type": "notification",
"body": {
"topic": "status_update",
"message": {
"battery_level": 75,
"position": {
"x": 10.5,
"y": -3.2
}
}
}
}
2. 请求 (Request)
概述 请求机制允许客户端向底盘系统发送指令或请求,以控制机器人的行为或查询状态。客户端通过建立WebSocket连接并发送请求消息,底盘系统处理这些请求并返回相应的响应。
请求消息格式
{
"type": "request",
"body": {
"action": "get_status",
"params": {}
}
}
type:标识请求类型,普通请求为
request
。body:
- action:字符串,表示请求的动作或意图,如
get_status
、start_move
等。 - params:一个对象,包含执行动作所需的参数。
- action:字符串,表示请求的动作或意图,如
响应消息格式
{
"type": "response",
"body": {
"status": "success",
"data": {
// 根据请求的动作,数据内容会有所不同
},
"error": null
}
}
type:标识响应类型,响应为
response
。body:
- status:表示处理结果的状态,如
success
或error
。 - data:请求成功时返回的数据。
- error:请求失败时的错误信息。
- status:表示处理结果的状态,如
支持的请求动作 以下是目前支持的请求动作及其简要说明:
- 获取状态 (
get_status
):请求底盘的当前状态,如电池电量、位置等。 - 启动移动 (
start_move
):指令底盘开始移动到指定位置。 - 停止移动 (
stop_move
):指令底盘停止当前的移动。 - 充电 (
start_charge
):指令底盘前往充电站进行充电。
- 示例:请求获取状态
{
"type": "request",
"body": {
"action": "get_status",
"params": {}
}
}
响应示例:
{
"type": "response",
"body": {
"status": "success",
"data": {
"battery_level": 85,
"position": {
"x": 5.0,
"y": 2.3
}
},
"error": null
}
}