Kuavo 5-W 轮臂机器人基础使用
说明
为方便使用,轮臂机器人上肢半身的控制接口与全身上肢接口完全一致,可以适配所有上肢相关案例,配置方式具体可参考上肢控制模式中实物运行-轮臂机器人篇章,上肢控制接口详见接口使用文档,下面主要说明底盘的控制使用以及二次开发接口
软件使用
Xmanger
- 功能:本工具适用于 xManager 地图编辑工具的操作。本手册指导用户完成地图管理、地图编辑、离线建图、在线建图等操作。
使用手册位置:kuavo-ros-opensource/docs/5功能案例/五代案例/轮臂案例/xManager用户手册 _ 玖物智能知识库TEST.pdf
开发接口
- 目前与底盘的通信主要采用WebSocket的通讯方式,包括请求(Request)与订阅(Subscribe)两种方式。
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
}
}
XManger建图使用方法
连接底盘
通过 ssh 连接到底盘终端
ssh -o KexAlgorithms=+diffie-hellman-group14-sha1 -o HostKeyAlgorithms=+ssh-rsa -o Ciphers=+aes128-cbc,3des-cbc ucore@XXX.XXX.XXX.XXX
有线连接
通过网线连接电脑与底盘
将电脑自身的IP地址修改到 10.8.8.XXX 网段下底盘的调试网口IP固定为 10.8.8.8
无线连接
先通过有线的方式或机器人下位机 ssh 的方式连接到底盘终端
通过
sudo nmcli device wifi connect "your_wifi_name" password "your_password"
给底盘连接无线网络
连接成功后需修改 /etc/netplan/01-network-manager-all.yaml 解除无线网卡的IP锁定
# Let NetworkManager manage all devices on this system
network:
ethernets:
wlan0:
dhcp4: true
dhcp6: true
#addresses: [172.10.24.200/22]
#gateway4: 172.10.24.254
#nameservers:
# addresses: [192.168.0.1,61.177.7.1,8.8.8.8]
ethernets:
eth0:
dhcp4: no
dhcp6: no
addresses: [10.8.8.8/24]
addresses: [192.168.26.22/24]
version: 2
创建地图
创建地图需启动 roscore 因此如果仅使用底盘创建地图需修改 ROS_MASTER 的地址,使用上半身需要在下位机开启 roscore
仅通过底盘
修改 /usr/sbin/urobot-start 和 ~/.bashrc 将 ROS_MASTER_URI 和 ROS_HOSTNAME 都先修改为 127.0.0.1 的本地回环
建图结束后需改回原本的地址!!!
启动 roscore 后打开 XManager 建图软件,点击 离线建图 输入 IP 地址后点击 连接 按钮
待右侧状态栏显示 connected 后点击下方的 开始建图
随后输入地图名称,自定义名称后点击下方的 开始采集 即可控制底盘进行扫图
扫图结束后,先点击 停止采集,随后点击 开始建图 ,右侧的状态栏此时会显示 start build map
待状态栏显示 build map success 后即可点击 结束建图 按钮,此时创建好的地图会显示在软件中,可通过左侧的工具栏对地图进行修改