hwt 4731677375 创建mqtt 模拟程序,控制程序增加mqtt event 回掉 4 ngày trước cách đây
..
config c36aac1fd7 增加阿里云 qwen TTS, 修复在多任务合集时候的 多频次推理 1 tuần trước cách đây
largemodel 4731677375 创建mqtt 模拟程序,控制程序增加mqtt event 回掉 4 ngày trước cách đây
launch 5ddf92e5b7 初始化提交 RDK 机器人项目代码 2 tuần trước cách đây
resource 5ddf92e5b7 初始化提交 RDK 机器人项目代码 2 tuần trước cách đây
resources_file 5ddf92e5b7 初始化提交 RDK 机器人项目代码 2 tuần trước cách đây
test 5ddf92e5b7 初始化提交 RDK 机器人项目代码 2 tuần trước cách đây
utils 4731677375 创建mqtt 模拟程序,控制程序增加mqtt event 回掉 4 ngày trước cách đây
README.md 5ddf92e5b7 初始化提交 RDK 机器人项目代码 2 tuần trước cách đây
package.xml cdb0fd916f 增加门岗初级部分 5 ngày trước cách đây
setup.cfg 5ddf92e5b7 初始化提交 RDK 机器人项目代码 2 tuần trước cách đây
setup.py 5ddf92e5b7 初始化提交 RDK 机器人项目代码 2 tuần trước cách đây

README.md

Largemodel ROS2 Package

概述

largemodel 是一个基于 ROS2 Humble 的机器人 AI 服务节点包,集成了语音识别(ASR)、大模型任务规划、双层 AI 决策、动作执行和语音合成(TTS)等功能。该包使机器人能够理解用户的自然语言指令,通过大模型进行任务规划,并自主执行导航、机械臂控制、物体抓取等多种动作。

系统架构

┌─────────────────────────────────────────────────────────────────┐
│                     largemodel_control.launch.py                  │
├─────────────┬─────────────────┬─────────────────┬───────────────┤
│ camera_arm  │   model_service │  action_service │      asr      │
│   _kin      │       节点       │       节点       │      节点     │
├─────────────┴─────────────────┴─────────────────┴───────────────┤
│                    large_model_interface (共用工具)               │
└─────────────────────────────────────────────────────────────────┘

核心节点

1. ASR 节点 (asr)

功能:语音唤醒 → 录音 → 语音识别

  • 支持 KWS 语音唤醒(串口通信)
  • WebRTC VAD 语音活动检测
  • 多 ASR 引擎:SenseVoiceSmall(本地)/ 讯飞 / 阿里云(在线)

发布话题: | 话题 | 类型 | 说明 | |------|------|------| | /asr | String | ASR 识别结果 | | /wakeup | Bool | 唤醒信号 | | /beep | UInt16 | 蜂鸣器控制 | | /record_status | Bool | 录音状态 |

2. Model Service 节点 (model_service)

功能:AI 大脑,调用大模型进行任务规划和执行

双层 AI 架构

  • 决策层:解析用户意图,生成任务步骤
  • 执行层:生成具体动作列表和回复

订阅话题: | 话题 | 说明 | |------|------| | /asr | ASR 识别结果 | | /actionstatus | 动作执行反馈 | | /seewhat_handle | 视觉触发信号 |

3. Action Service 节点 (action_service)

功能:解析并执行机器人动作

支持的动作函数(18种)

类别 动作 函数签名
基础移动 左转/右转 move_left(x, speed), move_right(x, speed)
基础移动 漂移/跳舞 drift(), dance()
基础移动 速度控制 set_cmdvel(x, y, z, duration)
导航 导航到点 navigation(point_name)
导航 获取位置 get_current_pose()
机械臂 上下/摇头点头鼓掌 arm_up(), arm_down(), arm_shake(), arm_nod(), arm_applaud()
机械臂 抓取/放置 grasp_obj(x1,y1,x2,y2), putdown()
机械臂 Apriltag 分拣 apriltag_sort(id), apriltag_remove_higher(h)
机械臂 颜色追踪移除 color_remove_higher(color, h)
视觉 追踪/巡线 track(x1,y1,x2,y2), follw_line_clear()
系统 等待/结束 wait(seconds), finish_dialogue(), finishtask()

目录结构

largemodel/
├── config/
│   ├── yahboom.yaml              # 主配置文件
│   ├── large_model_interface.yaml # 大模型 API 配置
│   └── map_mapping.yaml          # 地图导航点配置
├── launch/
│   └── largemodel_control.launch.py  # 启动文件
├── largemodel/
│   ├── __init__.py
│   ├── asr.py                   # 语音识别节点
│   ├── model_service.py         # 模型服务节点
│   └── action_service.py        # 动作执行节点
├── utils/
│   ├── large_model_interface.py # 大模型接口封装
│   ├── mic_serial.py            # 串口通信工具
│   ├── promot.py                # Prompt 模板
│   └── dify_client2.py          # Dify API 客户端
├── resources_file/
│   └── system_vioce/            # 系统提示音
│       ├── zh/                   # 中文提示音
│       └── en/                   # 英文提示音
├── test/                         # 测试文件
├── package.xml
└── setup.py

配置说明

主配置 (yahboom.yaml)

支持国内版和国际版两种模式:

# 国内版本参数
asr:
  ros__parameters:
    VAD_MODE: 2
    sample_rate: 16000
    use_oline_asr: True
    language: 'zh'
    regional_setting: "China"

action_service:
  ros__parameters:
    text_chat_mode: True      # True: 文字模式, False: 语音模式
    useolinetts: True         # True: 在线 TTS, False: 本地 TTS

model_service:
  ros__parameters:
    language: 'zh'
    regional_setting: "China"

大模型配置 (large_model_interface.yaml)

# 阿里百炼配置
tongyi_api_key: "your-api-key"
tongyi_base_url: "https://dashscope.aliyuncs.com"
tongyi_app_id: "your-app-id"
multimodel: "qwen-vl-max"

# TTS 配置
tts_supplier: "aliyun"  # 或 "baidu"
oline_tts_model: "cosyvoice-v1"
voice_tone: "zh_CN-female-shaohan"

# ASR 配置
oline_asr_model: "paraformer-realtime-v2"
oline_asr_sample_rate: 16000
local_asr_model: "iic/SenseVoiceSmall"

地图配置 (map_mapping.yaml)

A:
  name: '水果店'
  position:
    x: 1.633
    y: 3.490
    z: 0.0
  orientation:
    x: 0.0
    y: 0.0
    z: 0.618
    w: 0.786

编译命令

1. 进入工作空间

cd ~/M3Pro_ws

2. 编译 largemodel 包

colcon build --packages-select largemodel

或编译整个工作空间:

colcon build

3. Source 环境

source install/setup.bash

启动命令

1. 启动完整功能(国内版 + 文字交互模式)

ros2 launch largemodel largemodel_control.launch.py text_chat_mode:=True

2. 启动完整功能(国内版 + 语音交互模式)

ros2 launch largemodel largemodel_control.launch.py text_chat_mode:=False

3. 仅启动特定节点

# 启动 ASR 节点
ros2 run largemodel asr

# 启动模型服务节点
ros2 run largemodel model_service

# 启动动作服务节点
ros2 run largemodel action_service

4. 带参数启动

ros2 launch largemodel largemodel_control.launch.py \
    text_chat_mode:=True \
    language:=zh \
    regional_setting:=China

依赖项

系统依赖

  • ROS2 Humble
  • Python 3.8+
  • pip

Python 依赖

pip install rclpy std_msgs geometry_msgs sensor_msgs nav2_msgs
pip install pyaudio webrtcvad playsound pygame
pip install dashscope openai piper funasr
pip install pyserial cv-bridge pyyaml

ROS2 依赖

  • interfaces (自定义 action 包)
  • arm_msgs (机械臂消息)
  • arm_interface (机械臂接口)
  • M3Pro_demo (相机和运动学节点)

工作流程

用户语音 ──▶ ASR 节点 ──▶ Model Service ──▶ Action Service ──▶ 机器人执行
              │              │                 │
              │              │                 ▼
              │              │            动作反馈
              │              │                 │
              ▼              ▼                 ▼
           唤醒成功      双层AI规划      执行完成
           提示音        任务分解        语音播报

注意事项

  1. 串口权限:确保 /dev/mic 串口设备有正确的读写权限
  2. API 密钥:在 large_model_interface.yaml 中配置正确的大模型 API 密钥
  3. 地图配置:根据实际场景修改 map_mapping.yaml 中的导航点坐标
  4. 资源文件:确保 resources_file 目录下的音频文件存在
  5. 多线程执行:Action Service 使用 6 线程执行器,确保节点稳定运行

故障排除

ASR 节点无法启动

# 检查串口设备
ls -l /dev/mic

# 添加串口权限
sudo usermod -a -G dialout $USER

大模型调用失败

# 检查 API 密钥配置
cat config/large_model_interface.yaml

# 检查网络连接
ping dashscope.aliyuncs.com

动作执行异常

# 检查导航点配置
cat config/map_mapping.yaml

# 检查 action 服务是否正常
ros2 node list | grep action_service