通用案例
⚠️ 注意: 本章节收录的案例旨在提供机器人使用的参考和启发,在实际场景进行应用需要用户根据实际情况调整优化
- 通用案例
- 拓展案例
1. H12遥控器使用开发案例
H12遥控器使用开发案例概述
该案例介绍了如何使用H12遥控器来控制机器人,涵盖了从部署到操作的各个方面。主要内容包括:
- 部署流程:概述了如何初始化和管理遥控器控制程序。
- 状态机概述:描述了机器人在不同控制状态下的转换和操作逻辑。
- 遥控器配置:提供了按键和摇杆的使用指南,以及紧急停止的操作说明。
跳转案例
2. 单步控制案例(落足点规划)
单步控制案例概述
该案例介绍了如何通过ROS实现机器人的单步控制,重点在于落足点规划以控制机器人的步态。主要内容包括:
- 示例代码:提供了用于生成和发布步态信息的代码示例。
- 函数说明:详细描述了代码中的关键函数及其作用,包括步态消息生成、脚位置计算等。
- 主程序逻辑:概述了如何设置和发布步态信息的整体流程。
- 执行效果:通过视频展示了单步控制的实际效果。
跳转案例
3. 二维码检测使用案例
二维码检测使用案例概述
该案例介绍了如何使用AprilTag二维码进行检测和信息获取,主要内容包括:
二维码
- 二维码类型:使用AprilTag类型,具体为36h11。
- 二维码下载:提供了二维码下载网站的链接。
使用流程
- 配置文件调整:需要在配置文件中设置要识别的二维码ID和尺寸。
- 启动程序:通过ROS启动上位机主程序,并使用rqt工具观察识别效果。
获取检测结果
- 结果获取:通过ROS话题获取二维码在相机坐标系和机器人基坐标系中的位姿信息。
- 示例程序:提供了用于获取二维码信息的示例程序。
跳转案例
4. 灵巧手手势使用案例
灵巧手手势使用案例概述
该案例介绍了如何使用灵巧手进行预设手势的检测和执行,主要内容包括:
预设手势
- 手势列表:提供了灵巧手支持的各种预设手势,包括其名称、别名和描述。例如,单指点、两指夹、握拳等手势,适用于不同的操作场景,如触动按钮、夹持物体、表示数字等。
执行与查询
- 执行预设手势:通过特定的接口执行灵巧手的预设手势。
- 查询手势状态:检查当前是否有预设手势正在执行。
示例代码
- 提供了示例代码,展示如何调用接口来执行和查询手势。
跳转案例
5. 路径轨迹规划案例
路径轨迹规划案例概述
该案例介绍了如何使用MPC控制器来跟踪预设的路径轨迹,主要内容包括:
功能包
- 名称:
trace_path
- 位置:下位机代码仓库
描述
- 轨迹类型:
- 直线:从机器人当前位置生成指定长度的直线路径。
- 正方形:从机器人当前位置逆时针生成指定边长的正方形路径。
- 圆形:从机器人当前位置逆时针生成指定半径的圆形路径。
- "S"曲线:从机器人当前位置生成正弦曲线路径。
目录结构
- 包含文档、头文件、启动文件、路径生成器、控制器和测试入口等。
参数设置
- 公共参数:速度和时间间隔。
- 路径特定参数:
- 直线:长度
- 正方形:边长
- 圆形:半径
- "S"曲线:总长度的一半和振幅
控制器
- MPC:可设置最大线性速度和最大角速度。
编译与启动
- 编译:修改路径参数和控制器参数后进行编译。
- 启动:
- 在仿真或实物环境中启动机器人程序。
- 生成并跟踪轨迹,支持正方形、圆形和"S"曲线轨迹。
跳转案例
6. 数据采集案例
数据采集案例概述
该案例介绍了如何使用ROS的rosbag工具进行数据采集,主要内容包括:
数据采集方式
- 工具:使用rosbag包录制机器人相关信息的话题。
- 目标:采集相机图像、手臂位置轨迹等数据。
ROSBAG 工具使用
- 脚本路径:
4功能案例/通用案例/scripts/rosbag_tool.py
- 录制话题:通过脚本配置录制的ROS话题,涵盖了手臂轨迹、手部位置、头部运动数据,以及多种相机数据(如深度图像、RGB图像、相机内参等)。
配置文件
- 话题配置:录制的话题列表存储在
scripts/record_topics.json
文件中,可以根据需求进行修改。
跳转案例
7. YOLOv8目标检测案例
YOLOv8目标检测案例概述
该案例介绍了如何使用YOLOv8模型进行箱子识别,主要内容包括:
功能包
- 名称:
yolo_box_object_detection
- 位置:上位机代码仓库
- 用途:用于箱子识别的YOLO ROS功能包
模型路径及说明
- 模型格式:
.pt
- 模型路径:存放在指定的模型目录中
- 测试程序:包括实时检测和图片检测的示例程序
ROS话题订阅
- 提供多个话题用于获取识别结果和绘制结果,支持基于相机和机器人基坐标系的3D位置。
启动
- 通过ROS命令启动箱子识别功能,支持在工作目录下执行。
跳转案例
8. 手臂逆运动学案例
手臂逆运动学案例概述
该案例介绍了如何在ROS中实现手臂的逆运动学(IK)和正运动学(FK)求解,主要内容包括:
编译与启动
- 编译:使用
catkin build
命令编译motion_capture_ik
节点。 - 启动参数:支持可视化、机器人版本、控制手臂选择等多种参数配置。
- 启动示例:提供不同配置下的启动命令示例。
ROS 接口
- 订阅话题:
/ik/two_arm_hand_pose_cmd
用于接收手臂IK求解请求。 - 发布话题:
/ik/result
发布IK求解结果,/ik/debug/time_cost
输出求解耗时。 - 服务:
/ik/two_arm_hand_pose_cmd_srv
提供IK逆解服务,/ik/fk_srv
提供FK正解服务。
使用示例
- IK求解服务:展示如何调用IK服务并打印结果。
- IK求解话题:展示如何通过话题使用IK功能。
- FK求解服务:展示如何调用FK服务并打印结果。
跳转案例
9. 机器人手臂示教案例
机器人手臂示教案例概述
该案例介绍如何通过0-torque模式下手动拖动机器人手臂进行示教,支持rosbag和关键帧两种录制方式,并可重放录制动作。
描述
- 支持0-torque拖动示教,录制关节数据
- 支持rosbag与关键帧两种录制方式
- 可重放录制动作,便于动作复现与调试
程序逻辑
- 启动机器人与零点标定
- 选择录制模式(rosbag/关键帧)
- 录制与保存动作数据
- 播放前需关闭其他程序并让机器人站立
- 播放录制动作
使用说明
- rosbag录制适合完整动作采集,关键帧适合离散动作采集
- 播放前请确保机器人处于安全站立状态
跳转案例
10. 手臂轨迹规划案例
手臂轨迹规划案例概述
该案例介绍了如何规划人形机器人的手臂关节状态轨迹,主要内容包括:
功能包
- 名称:
humanoid_plan_arm_trajectory
- 位置:
<kuavo-ros-opensource>/src/demo/examples_code/hand_plan_arm_trajectory
描述
提供两种插值方法用于实现手臂关节状态轨迹规划:
- 三次样条插值器
- 贝塞尔曲线插值器
编译与启动
- 编译:使用
catkin build
命令编译hand_plan_arm_trajectory
功能包。 - 参数设置:支持关节状态话题名称、角度单位和启动方式等配置
- 启动示例:提供了两种插值方法的启动命令和示例代码
跳转案例
11. 键盘控制案例
键盘控制案例概述
该案例介绍了如何用键盘控制手臂移动或机器人运动,主要内容包括:
描述
- 代码路径:
<kuavo-ros-control>/src/kuavo_sdk/scripts/keyboard_control/robot_keyboard_control.py
程序逻辑
程序初始化
键盘输入处理
信号发布
程序退出
参数说明
joystick_sensitivity
:灵敏度,无单位.修改路径:
<kuavo-ros-control>/src/humanoid-control/humanoid_controllers/launch/joy/joy_control_sim.launch
执行
- 启动:在仿真或实物环境中启动机器人程序.
- 操作说明:如何使用键盘控制手臂移动或机器人运动.
跳转案例
12. 强化学习案例
强化学习案例概述
该本案例简单介绍如何使用乐聚开源的强化学习运动控制仓库kuavo-rl-opensource实现对乐聚夸父机器人的训练和部署,主要内容包括:
部署
H12遥控器启动及控制说明
电机控制说明
1.控制指令输出方式:
- 信息结构各字段
- 发布逻辑
2.控制模式选择:可选力矩控制、位置控制等
3.混合控制实现:可根据策略输出选择力矩或位置指令
4.底层硬件交互:使用驱动器控制电机
PD控制实现分析
1.参数配置模块
2.RL控制器关节力矩计算
程序参阅
- 路径:
<kuavo-rl-opensource>/src/humanoid-control/humanoid_controllers/src/humanoidController.cpp
- 路径:
训练
安装
Training and Playing
跳转案例
13.接入deepseek大模型语音交互案例
接入deepseek大模型语音交互案例概述
该案例接入deepseek大模型,实现了一个语音交互系统,主要功能如下:
描述
该案例实现了一个语音交互系统,包括录音、语音转写、对话生成和语音播放功能。
代码路径:
<kuavo_ros_application>/src/kuavo_large_model/kuavo_deepseek_model/rtasr_python3_demo.py
程序逻辑
导入模块及定义全局变量
定义 chat 函数, deepseek_chat 函数, Client 类。
主函数
调用 chat 录音
使用 Client 类将录音发送到RTASR服务。
调用 deepseek_chat 进行对话并播放回复。
说明
该案例所使用的语音,文字转换模型为: https://www.xfyun.cn/
该案例所使用的对话大模型为深度求索(deepseek)推出的deepseek-chat: https://www.deepseek.com/
- 获取DeepSeek API Key:
- https://platform.deepseek.com/usage
- 充值,获取API Key
- 将程序第101行的api-key替换成获取到的即可
- 获取DeepSeek API Key:
跳转案例
14.大模型联网搜索与视觉推理案例
大模型联网搜索与视觉推理案例概述
该案例接入moonshot大模型,实现了一个语音交互系统,主要功能如下:
描述
该案例实现了一个语音交互系统,包括录音、语音转写、视觉推理、联网搜索、对话生成和语音播放功能。
代码路径:
<kuavo_ros_application>/src/kuavo_large_model/kuavo_kimi_model/kimi_python3_demo.py
程序逻辑
导入模块及定义全局变量
定义 recorder 函数, kimi_vision_chat 函数, kimi_network_chat 函数,Client 类。
主函数
初始化视频捕获对象。
调用 recorder 录音。
使用 Client 类将录音发送到RTASR服务。
调用 kimi_network_chat 和 kimi_vision_chat 进行对话并播放回复。
说明
该案例所使用的语音,文字转换模型为: https://www.xfyun.cn/
该案例所使用的大模型为北京月之暗面(moonshot)推出的 moonshot-v1-8k-vision-preview 视觉模型和 moonshot-v1-128k 语言模型: https://platform.moonshot.cn/
- 获取Kimi API Key:
- 进入 https://platform.moonshot.cn/ ,点击用户中心
- 充值,创建获取API Key
- 将程序第113,159行的api-key替换成获取到的即可
- 获取Kimi API Key:
跳转案例
15.二维码抓取水瓶案例
二维码抓取水瓶案例概述
机器人通过头部摄像头识别二维码,解算二维码的坐标信息,并通过ik逆解计算手臂关节角度进行抓取。
描述
- 代码路径:
<kuavo-ros-opensource>/src/demo/arm_capture_apriltag
程序逻辑
通过识别AprilTag标签,得到抓取目标在坐标系中的位置
自主判断左右手,并计算手臂末端期望位置与姿态
通过ik逆解服务,得到手臂各关节的目标角度
实现抓水、递水流程,过程流畅
跳转案例
16. VR使用开发案例
VR使用开发案例概述
VR使用开发案例概述
该案例介绍了如何使用Quest3 VR设备进行机器人控制,重点在于通过VR手柄实现对机器人手臂、灵巧手的远程操作,以及机器人的基本运动控制。主要内容包括:
- 设备与手柄:使用Quest3作为VR设备,通过手柄实现对机器人的控制,适用于具身智能的数据采集。
- Quest3相关使用:涵盖了设备管理、系统更新、程序启动、视频导出和空间限制的处理。
- VR控制准备与使用:确保设备和网络准备就绪,通过VR手柄实现对机器人的多种控制模式,包括手势识别。
跳转案例
17.基于人脸识别的简易语音交互案例
基于人脸识别的简易语音交互案例概述
该案例实现了一个基于人脸识别的语音交互系统,主要功能如下:
描述
- 实现了一个基于人脸识别的语音交互系统,包括语音识别、人脸检测和语音播报功能。
- 当用户说出的话中包含"是谁"时,系统会进行人脸识别并播报识别结果。
- 代码路径:
<kuavo_ros_application>/src/kuavo_large_model/kuavo_re_face_model/asr_re_tts.py
程序逻辑
导入模块及定义全局变量
- 作用:导入所需的Python标准库和第三方库并定义录音和音频处理的全局参数。
Ws_Param 类
- 作用:处理讯飞语音合成服务的参数配置。
- 关键逻辑:
- 初始化APPID、APIKey、APISecret等参数
- 生成WebSocket连接所需的URL和认证信息
tts_xunfei 函数
- 作用:调用讯飞语音合成服务将文本转换为语音。
- 关键逻辑:
- 创建WebSocket连接
- 发送文本数据
- 接收并保存合成的语音文件
ASRClient 类
- 作用:实现语音识别和人脸识别的核心功能。
- 关键逻辑:
- 初始化语音识别和人脸检测器
- 实现录音功能
- 处理语音识别结果
- 进行人脸识别和语音播报
主程序
- 作用:主程序逻辑,循环执行语音识别和人脸识别。
- 关键逻辑:
- 初始化ASRClient
- 循环执行录音和识别
- 根据识别结果进行相应处理
说明
⚠️ 注意: 该案例使用了科大讯飞的RTASR和TTS模型,这两个模型均为收费模型,需要自行创建账号充值获取API Key并将获取到的API Key复制到程序对应地方
该案例所使用的语音模型为讯飞的模型: https://www.xfyun.cn/
讯飞实时语音转写(RTASR)模型
- https://console.xfyun.cn/app/myapp创建RTASR应用,获取app_id和api_key
- 将程序中的app_id和api_key替换成获取到的即可
讯飞语音合成(TTS)模型
- https://console.xfyun.cn/app/myapp创建TTS应用,获取APPID,APISecret,APIKey
- 将程序中的APPID,APISecret,APIKey替换成获取到的即可
跳转案例
18.全身打太极动作案例
全身打太极动作案例概述
该案例介绍了如何规划人形机器人全身运动轨迹,实现全身打太极动作,主要内容包括:
描述
- 代码路径:
<kuavo-ros-opensource>/src/demo/taiji/action_player.py
程序逻辑
加载JSON动作文件。
初始化ROS节点,创建发布者和订阅者。
设置手臂为外部控制模式(通过服务调用)。
生成足部轨迹并发布到
/humanoid_mpc_foot_pose_target_trajectories
。等待接收到步态开始时间。
生成手臂轨迹并发布到
/kuavo_arm_target_poses
(时间基于步态开始时间)。等待动作执行完成。
参数说明
动作文件为JSON格式,包含两个主要部分:
step_control
(步态控制)和arm_motion
(手臂动作)。修改路径:
<kuavo-ros-opensource>/src/demo/taiji/taiji.json
执行
- 启动:在仿真或实物环境中启动机器人程序.
- 运行动作播放器节点.
跳转案例
拓展案例
1. 模仿学习使用案例
案例概述
描述
KUAVO人形机器人训练场(科研版) 是一款专为科研机构与高校实验室设计的综合解决方案,集成了具身智能本体 (KUAVO-4PRO & KUAVO-LB)、数据采集工具链以及模型训练与部署套件。通过本方案,用户可轻松实现从数据采集到模型训练到模型部署的全链条闭环,助力人形机器人具身智能科研与应用开发。
跳转案例
数据采集
描述
数据采集是采集基于ROS
录制某一时间段机器人行为生成的RosBag
包,可将其视为原始数据。但提供给模型训练的数据是经过转化的数据,因此,本数据采集系统除提供最基础的数据采集功能外,还提供了数据处理功能。同时,鉴于机器人末端不同、资源存储路径存在差异等原因,本数据采集系统提供了灵活的参数配置。
功能
参数配置
数据采集
数据处理
跳转案例
数据存储
描述
通过本地数据采集平台采集的数据可以上传到云数据管理平台管理,云数据管理平台也提供数据的实时可视化。
功能
本地采集的数据存储管理
机器人数据可视化
跳转案例
模型训练
描述
通过数据采集、数据转化获得待训练的数据。使用lerobot框架进行模型的训练
跳转案例
模型部署
描述
将训练好的模型在实机上 进行部署
跳转案例
常见问题
描述
数据采集、数据存储、模型训练、模型部署过程中遇到的常见问题的解决
跳转案例
2. 机器人开源导航案例
机器人开源导航案例概述
基于KUAVO导航解决方案,支持自动建图、定位、自主导航、地图编辑等功能,适合开箱即用和二次开发。
系统概述
- 系统架构
- 功能模块
环境准备
- 硬件要求
- 软件要求
- 网络要求
硬件连接
- 机器人连接
- 传感器连接
建图操作
- 启动建图程序
- 创建地图
- 保存地图
地图编辑
- 打开地图编辑器
- 编辑地图
- 保存编辑后的地图
定位导航
- 启动导航程序
- 设置目标点
- 自主导航
常见问题
- 问题1:解决方案
- 问题2:解决方案
跳转案例
3. 手腕相机抓取放置案例
手腕相机抓取放置案例概述
- 机器人通过手眼标定,获得末端执行器(手)和视觉传感器(眼)之间的变换关系
- 机器人获取手眼标定的结果,分别使用手腕相机和头部相机进行物品的抓取和放置
程序逻辑
hand_eye_calibration功能包
进行手眼标定,获取标定结果
对标定结果进行评估
pick_and_place功能包
- 实现基于视觉引导的物体抓取和放置
跳转案例
4. 百度EdgeBoard接入机器人案例
百度EdgeBoard接入机器人案例概述
- 百度EdgeBoard(DK-1A)部署yolov3模型用于目标检测任务
- 百度EdgeBoard启动ros服务器,监听请求
- 机器上位机向百度EdgeBoard发送检测请求,并对返回结果进行语音播报
程序逻辑
edgeboard_service/scripts/upper_client.py
- 初始化机器人上位机客户端,通过语音触发, 发送请求
- 收到处理结果,分析结果,调用科大讯飞模型进行语音播报
edgeboard_service/yolov3-python/tools/edgeboard_server.py
- 初始化百度EdgeBoard服务端,监听请求
- 收到请求后,订阅图像话题,进行处理,将处理结果通过服务通信返回
- 上位机可以在
rqt_image_view
中订阅/image_view/image_raw
话题,查看图像处理结果 - 取消订阅图像话题,恢复监听状态,等待下一次请求
- 特点:仅在收到请求后进行一次图像处理,可以减少百度板的功耗,节省网络占用等