Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 41 additions & 26 deletions zh/k3/03-参考方案/3.1-桌面机器人Reachy mini.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Reachy Mini 是由 Hugging Face 与 Pollen Robotics 联合推出的开源桌面
Reachy Mini 是一个小型机器人运动控制交互应用,支持以下功能:

- **视觉跟随**:通过摄像头实时检测人脸/手势,经 PD 控制算法驱动 Stewart 并联平台电机
- **语音对话控制**:集成 VAD + ASR + LLM + TTS 全链路语音交互,支持语音指令控制机器人动作
- **语音对话控制**:集成 VAD + ASR + LLM + TTS 全链路语音交互,支持语音指令控制机器人动作,**支持纯本地模型,也可接入国内外云端模型**
- **舞蹈表演**:预编排的舞蹈动作序列,支持音频同步播放
- **仿真控制**:通过 gRPC 远程控制 PC 端 MuJoCo 仿真,支持键盘实时操控和预设动作

Expand Down Expand Up @@ -52,9 +52,9 @@ Reachy Mini 是一个小型机器人运动控制交互应用,支持以下功

### 3.2 代码下载
```
repo init -u https://github.com/spacemit-robotics/manifest.git -b main -m default.xml \
--repo-url=https://gitee.com/spacemit-robotics/git-repo \
-g core,peripherals,agent_tools,model_zoo,multimedia,reachy_mini
repo init -u https://github.com/spacemit-robotics/manifest.git -b main -m default.xml \
--repo-url=https://gitee.com/spacemit-robotics/git-repo \
-g core,peripherals,agent_tools,model_zoo,multimedia,reachy_mini
repo sync -j4
repo start robot-dev --all
```
Expand Down Expand Up @@ -171,8 +171,8 @@ reachy_voice_bot status # 查看运行状态和当前模式
|--------|------|
| `初始化中` | 程序正在启动,正在初始化 LLM、VAD、TTS、音频设备等 |
| `对话模式` | 所有引擎与音频初始化完成,等待语音输入(正常就绪) |
| `人脸跟随` | 当前处于人脸跟随模式(NPU 占用,限制其他动作) |
| `手势跟踪` | 当前处于手势跟踪模式(NPU 占用) |
| `人脸跟随` | 当前处于人脸跟随模式(TCM 占用,限制 TTS) |
| `手势跟踪` | 当前处于手势跟踪模式(TCM 占用) |
| `未知` / 无文件 | 未运行或状态不可用 |


Expand Down Expand Up @@ -271,7 +271,7 @@ reachy_voice_bot --llm-url https://api.deepseek.com/v1 --model deepseek-chat

1. **关键词优先**:语音识别结果首先匹配预定义关键词表,命中后直接执行对应动作(绕过 LLM),响应更快
2. **LLM 兜底**:未命中关键词的自然语言输入交由 LLM 处理,支持自由对话和 MCP 工具调用
3. **NPU 互斥保护**:人脸/手势跟随运行期间 NPU 被占用,系统自动拦截除"停止跟随"外的所有指令,避免资源冲突
3. **TCM 互斥保护**:人脸/手势跟随运行期间 TCM 被占用,系统自动拦截除"停止跟随"外的所有指令,避免资源冲突
4. **语音关机**:说"睡觉吧"或"关机",机器人回复"好的,再见,下次再聊"后自动终止进程

### 4.4 典型使用流程
Expand All @@ -281,10 +281,10 @@ reachy_voice_bot --llm-url https://api.deepseek.com/v1 --model deepseek-chat
机器人: "好的,即将启动跟随" → 启动人脸跟随

用户: "左转"
机器人: (无响应,NPU 围栏拦截) → 跟随期间不响应其他动作
机器人: (无响应,TCM 围栏拦截) → 跟随期间不响应其他动作

用户: "别跟了"
机器人: "好的,停止跟随" → 停止跟随,释放 NPU
机器人: "好的,停止跟随" → 停止跟随,释放 TCM

用户: "甩头舞"
机器人: "好的,甩头舞" → 播放舞蹈音乐 + 执行编排动作
Expand Down Expand Up @@ -451,12 +451,18 @@ ping 192.168.88.1
### 7.5 启动与运行

**1. 启动 PC 端仿真服务**

`sim_server` 的第一个参数为监听地址,支持两种写法。不带参数时默认监听 `0.0.0.0:50051`(即监听所有网卡),端口默认 `50051`,须与客户端保持一致。

```bash
# 默认监听 0.0.0.0:50051
sim_server <IP>:50051 # <IP> 为 PC 的 IP 地址
# 形式 1:仅传 IP,自动追加默认端口 50051
sim_server 192.168.88.1 # 等价于 192.168.88.1:50051

# 指定服务端的实际 IP 地址(如网线直连 IP)
# 形式 2:显式指定 host:port,自定义端口时使用这种
sim_server 192.168.88.1:50051

# 不带参数:默认监听 0.0.0.0:50051
sim_server
```
服务端效果图:
![仿真端效果](assets/reachy-mini_simulation_effect.jpg)
Expand Down Expand Up @@ -530,29 +536,38 @@ service ReachySimService {

```
reachy_mini
├── assets
├── CMakeLists.txt
├── config
│   ├── config_paras.yaml
│   ├── download_face_gesture_models.sh
│   ├── yolov5-face.yaml
│   └── yolov5_gesture.yaml
├── LICENSE
├── NOTICE
├── package.xml
├── README.md
├── simulation
│   ├── CMakeLists.txt
│   ├── control_client.cc
│   └── reachy_sim.proto
└── src
├── face_tracker.c
├── gesture_tracker.c
├── kinematics
├── media
├── motor_ctl
├── talent_show
├── tracker_generic
├── vision
├── voice
└── voice_bot.cpp
│   ├── client
│   ├── reachy_sim.proto
│   └── server
├── src
│   ├── face_tracker.c
│   ├── gesture_tracker.c
│   ├── kinematics
│   ├── media
│   ├── motor_ctl
│   ├── talent_show
│   ├── tracker_generic
│   ├── vision
│   ├── voice
│   └── voice_bot.cpp
├── tests
│   ├── test_functional.sh
│   └── test_manual.sh
└── test.yaml


```

## 9. 许可证
Expand Down
30 changes: 28 additions & 2 deletions zh/k3/06-系统与平台/6.2-外设与驱动/6.2.1-电机.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ slug: /k3/system-platform/peripherals-drivers/6-2-1-电机
---




# 外设与驱动 · motor

## 1. 模块概述
Expand All @@ -25,6 +23,7 @@ slug: /k3/system-platform/peripherals-drivers/6-2-1-电机
| `include/motor.h` | 统一的对外 API 头文件 |
| `src/motor_core.c` | 电机管理核心逻辑与工厂函数 |
| `src/drivers/drv_can_dm/` | 达妙 CAN 电机驱动实现 |
| `src/drivers/drv_canopen_jmc/` | JMC CANOpen 电机驱动实现 |
| `src/drivers/drv_ethercat_jmc/` | JMC EtherCAT 电机驱动实现 |
| `src/drivers/drv_uart_feetech/` | Feetech UART 舵机驱动实现 |
| `src/drivers/drv_uart_xl330/` | Reachy Mini xl330 电机驱动实现 |
Expand Down Expand Up @@ -230,6 +229,32 @@ test_motor_ecat #默认测试两台电机
**步骤 3**:预期现象。
- 电机使能,进入位置/速度循环模式。

---

### 3.5 【CANOpen 伺服电机测试】

**前置**:
1. 硬件:完成 JMC 伺服电机的 CAN 连接,确认总线速率。

![canopen电机接线图](assets/canopen_motor.png)

2. 软件:开启 CAN 接口(如 `sudo ip link set can0 up type can bitrate 1000000`,请根据驱动器拨码配置修改)。

**步骤 1**:运行运动测试。
```bash
# 默认测试 ID 为 1 的 CANOpen 电机,控制周期 10ms
test_motor_canopen_jmc --motors 1 --cycle 10 -v
```

**步骤 2**:关键特性与逻辑(详见 `src/drivers/drv_canopen_jmc/README.md`)。
- **状态机自动托管**:底层的独立后台线程会自动通过 NMT 和 TPDO/RPDO 报文让电机流转到 `Operation Enabled` 状态。
- **SDO/PDO 交互**:程序会自动进行同步参数修改测试(向 `0x6083` 写入加速度)并读取校验。**注意:对于 JMC 伺服,`0x6083` 加速度是非标的 2 字节 长度。**
- **自动测试流程**:程序将串行演示 PP (Profile Position) 往复运动、PV (Profile Velocity) 速度巡航,以及 HM (Homing) 自动回零。

**步骤 3**:预期现象。
- 终端打印“参数修改验证成功”。
- 电机完成一圈正转、回零、一圈反转、回零。接着按恒定速度正反转,最后触发寻零。


## 4. 应用开发

Expand Down Expand Up @@ -341,6 +366,7 @@ struct motor_state {
| 类型 | 电机型号 | 对应驱动名称 | 备注 |
| --- | --- | --- | --- |
| **CAN** | 达妙 DM-J4310-2EC / DM4310 | `drv_can_dm` | 推荐使用 MIT 模式 |
| **CAN** | JMC CANOpen 伺服系列 | `drv_canopen_jmc` | 状态机自动托管,支持 PP/PV/HM |
| **EtherCAT** | JMC IHSS42-EC | `drv_ethercat_jmc` | 集成式步进伺服 |
| **UART** | Feetech STS3215 系列 | `drv_uart_feetech` | 智能舵机 |
| **UART** | Dynamixel XL330 / XC330 | `drv_uart_xl330` | Reachy Mini 专用,含 python 绑定 |
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.