Kachaka API异步客户端使用指南
2025-06-10 04:38:57作者:咎竹峻Karen
概述
Kachaka API异步客户端库(kachaka_api.aio.KachakaApiClient)为开发者提供了便捷的方式来控制Kachaka机器人,无需直接处理底层的gRPC通信细节。该库采用异步编程模式,适合需要高效并发处理的场景。
环境准备
在使用异步客户端前,需要确保已安装必要的依赖库:
%pip install -q matplotlib numpy
import matplotlib.pyplot as plt
import numpy as np
from IPython.display import Image, clear_output, display
这些可视化库主要用于后续可能的数据展示和分析。
客户端初始化
创建异步客户端实例非常简单:
import kachaka_api
client = kachaka_api.aio.KachakaApiClient()
如果需要连接远程Kachaka设备,可以指定IP地址和端口:
client = kachaka_api.aio.KachakaApiClient("<机器人IP地址:26400>")
机器人基本信息获取
获取序列号
await client.get_robot_serial_number()
获取软件版本
await client.get_robot_version()
位置与家具管理
位置信息
获取所有已定义的位置信息,包括ID和坐标(单位:米和弧度):
await client.get_locations()
获取默认位置ID:
await client.get_default_location_id()
家具信息
获取所有家具信息:
await client.get_shelves()
获取当前搭载的家具ID:
await client.get_moving_shelf_id()
机器人控制命令
基本移动控制
移动家具到指定位置:
await client.move_shelf("S01", "L01")
使用名称而非ID进行操作(需先更新解析器):
await client.update_resolver()
await client.move_shelf("书架", "餐厅")
返回家具到原位:
await client.return_shelf("S01")
# 或返回当前搭载的家具
await client.return_shelf()
放下当前搭载的家具:
await client.undock_shelf()
移动到指定位置:
await client.move_to_location("L01")
返回充电站:
await client.return_home()
家具操作
搭载前方的家具:
await client.dock_shelf()
移动到指定位置并搭载任意家具(自动注册新家具):
await client.dock_any_shelf_with_registration("L01", False)
语音功能
机器人语音播报:
await client.speak("你好,我是Kachaka")
精确控制
移动到地图上的指定坐标:
await client.move_to_pose(0.5, 0.0, 0)
前后移动(负值表示后退):
await client.move_forward(0.5) # 前进0.5米
await client.move_forward(-0.4, speed=0.3) # 以0.3m/s速度后退0.4米
原地旋转(弧度制):
import math
await client.rotate_in_place(math.pi) # 旋转180度
位置校准:
await client.localize()
命令管理
命令控制
取消当前命令:
await client.cancel_command()
检查命令状态:
await client.is_command_running() # 是否正在执行
await client.get_running_command() # 获取当前执行命令
await client.get_last_command_result() # 获取最后命令结果
await client.get_history_list() # 获取命令历史
等待控制
设置等待状态(30秒):
await client.lock(30.0)
await client.speak("等待状态已解除", cancel_all=False)
提前结束等待:
await client.proceed()
高级功能
快捷命令
获取快捷命令列表:
await client.get_shortcuts()
执行快捷命令:
shortcut_id = min((await client.get_shortcuts()).keys())
await client.start_shortcut_command(shortcut_id, True)
家具位置重置
当家具被手动移动后,重置其位置信息:
await client.reset_shelf_pose("S01")
自动充电设置
启用/禁用自动充电功能:
await client.set_auto_homing_enabled(True)
音量控制
获取当前音量(0-10):
await client.get_speaker_volume()
设置音量:
await client.set_speaker_volume(10)
手动控制模式
进入手动控制模式(60秒后自动退出):
await client.set_manual_control_enabled(True)
检查手动模式状态:
await client.get_manual_control_enabled()
发送速度指令(线速度m/s,角速度rad/s):
for i in range(100):
await client.set_robot_velocity(0.0, 0.3) # 原地旋转
传感器数据
获取电池状态(电量百分比,充电状态):
await client.get_robot_power_status()
充电状态可能返回:
- 充电中:
PowerSupplyStatus.POWER_SUPPLY_STATUS_CHARGING(=1) - 放电中:
PowerSupplyStatus.POWER_SUPPLY_STATUS_DISCHARGING(=2)
最佳实践
- 错误处理:所有API调用都应添加适当的异常处理
- 状态检查:在执行命令前检查机器人当前状态
- 资源释放:使用完毕后关闭客户端连接
- 异步优化:合理使用asyncio.gather等并发执行方法提高效率
通过这套异步API,开发者可以轻松实现复杂的机器人控制逻辑,充分发挥Kachaka机器人的各项功能。
登录后查看全文
热门项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
FreeSql功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+、Xamarin 以及 AOT。C#00
热门内容推荐
最新内容推荐
项目优选
收起
deepin linux kernel
C
27
14
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
659
4.26 K
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.54 K
894
Ascend Extension for PyTorch
Python
503
609
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
391
286
暂无简介
Dart
905
218
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
69
21
昇腾LLM分布式训练框架
Python
142
168
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
939
862
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
1.33 K
108