> ## Documentation Index
> Fetch the complete documentation index at: https://motorbridge.seeedstudio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Robstride parameter tables

# RobStride 运行参数表

<mintly-toc>
  MotorBridge v0.4.1 使用一张 RobStride 通用运行参数表，对齐协议第 4 章。
</mintly-toc>

MotorBridge 保持 RS 系列上层接口统一。当前 active 运行参数表是协议第 4 章“可读写单个参数列表”中的 `0x7005..0x702E`。v0.4.1 不把 `0x2000` / `0x3000` 手册功能码作为高层 active 运行参数。

## 运行规则

* 参数读写使用通信类型 17/18，加下面的参数 index。
* 参数 index 小端放在 `byte[0..2]`；参数值小端放在 `byte[4..8]`。
* 需要掉电保存的参数，写入后必须再发送 type 22 保存。v0.4.1 起，`robstride-write-param --store 1` 会执行写入、可选验证，然后保存。
* RobStride `set_zero_position()` 上层接口不变，但内部会写 `zero_sta(0x7029)=1`，所以置零后使用 `-pi..pi` 区间。要掉电后仍保持，需要 `store_parameters` / `--store 1`。
* type 22 保存 payload 为 `01 02 03 04 05 06 07 08`，并等待 RobStride 状态 ACK。

## 使用到的通信类型

| 类型 | 名称                  | 用途             |
| -: | ------------------- | -------------- |
|  6 | `SET_ZERO_POSITION` | 设置当前机械位置为零点    |
| 17 | `READ_PARAMETER`    | 按 index 读取单个参数 |
| 18 | `WRITE_PARAMETER`   | 按 index 写入单个参数 |
| 22 | `SAVE_PARAMETERS`   | 持久化保存参数        |

## 第 4 章参数表

|    Index | 名称                |    类型 | 字节 | 单位      | 范围/默认值                                  | 权限  | 说明                                                                                     |
| -------: | ----------------- | ----: | -: | ------- | --------------------------------------- | --- | -------------------------------------------------------------------------------------- |
| `0x7005` | `run_mode`        |  `u8` |  1 | 枚举      | `0` 运控, `1` PP, `2` 速度, `3` 电流, `5` CSP | W/R | 选择 RobStride 当前控制模式，再使用对应模式下的命令参数。                                                     |
| `0x7006` | `iq_ref`          | `f32` |  4 | A       | `-43..43`，电流模式 Iq 指令                    | W/R | `run_mode=3` 电流模式下生效。正负方向按电机固件定义。                                                      |
| `0x700A` | `spd_ref`         | `f32` |  4 | rad/s   | `-20..20`，速度模式目标                        | W/R | `run_mode=2` 速度模式下生效。                                                                  |
| `0x700B` | `limit_torque`    | `f32` |  4 | Nm      | `0..60`                                 | W/R | 固件侧转矩限制，请保持在电机/手册允许范围内。                                                                |
| `0x7010` | `cur_kp`          | `f32` |  4 | 增益      | 默认 `0.17`                               | W/R | 电流环 Kp。谨慎调参，错误值可能导致电流环不稳定。                                                             |
| `0x7011` | `cur_ki`          | `f32` |  4 | 增益      | 默认 `0.012`                              | W/R | 电流环 Ki。谨慎调参。                                                                           |
| `0x7014` | `cur_filter_gain` | `f32` |  4 | 比例      | `0..1`，默认 `0.1`                         | W/R | 电流滤波系数。                                                                                |
| `0x7016` | `loc_ref`         | `f32` |  4 | rad     | 位置目标                                    | W/R | PP/CSP 位置模式的位置指令。                                                                      |
| `0x7017` | `limit_spd`       | `f32` |  4 | rad/s   | `0..20`                                 | W/R | 位置/CSP 速度限制。MotorBridge POS\_VEL 路径会先写该值，再写 `loc_ref`。                                 |
| `0x7018` | `limit_cur`       | `f32` |  4 | A       | `0..43`                                 | W/R | 速度/位置模式电流限制。                                                                           |
| `0x7019` | `mechPos`         | `f32` |  4 | rad     | 只读                                      | R   | 负载端计圈机械角度。MotorBridge RobStride 置零并保存后，启动区间按 `zero_sta=1` 预期为 `-pi..pi`。               |
| `0x701A` | `iqf`             | `f32` |  4 | A       | 只读                                      | R   | q 轴滤波电流反馈。                                                                             |
| `0x701B` | `mechVel`         | `f32` |  4 | rad/s   | 只读                                      | R   | 负载端速度反馈。                                                                               |
| `0x701C` | `VBUS`            | `f32` |  4 | V       | 只读                                      | R   | 直流母线电压。                                                                                |
| `0x701E` | `loc_kp`          | `f32` |  4 | 增益      | 默认 `60`                                 | W/R | 位置环 Kp。                                                                                |
| `0x701F` | `spd_kp`          | `f32` |  4 | 增益      | 默认 `6`                                  | W/R | 速度环 Kp。                                                                                |
| `0x7020` | `spd_ki`          | `f32` |  4 | 增益      | 默认 `0.02`                               | W/R | 速度环 Ki。                                                                                |
| `0x7021` | `spd_filter_gain` | `f32` |  4 | 比例      | 默认 `0.1`                                | W/R | 速度滤波系数。                                                                                |
| `0x7022` | `acc_rad`         | `f32` |  4 | rad/s^2 | 默认 `20`                                 | W/R | 速度模式加速度限制。                                                                             |
| `0x7024` | `vel_max`         | `f32` |  4 | rad/s   | 默认 `10`                                 | W/R | PP 模式最大速度。                                                                             |
| `0x7025` | `acc_set`         | `f32` |  4 | rad/s^2 | 默认 `10`                                 | W/R | PP 模式加速度。如果固件启用加减速度分离，`dcc_set(0x702E)` 可单独控制减速度。                                      |
| `0x7026` | `EPScan_time`     | `u16` |  2 | ms 步进   | 默认 `1`；`1=10 ms`，每 +1 增加 `5 ms`         | W   | 主动上报周期设置。只有通过通信类型 24 开启主动上报后才有意义。                                                      |
| `0x7028` | `canTimeout`      | `u32` |  4 | 固件计数    | 默认 `0`；`20000=1 s`                      | W   | CAN 超时阈值。`0` 通常表示关闭或固件默认行为，具体取决于固件。需要掉电保持时要保存。                                         |
| `0x7029` | `zero_sta`        |  `u8` |  1 | 枚举      | 默认 `0`；`0=0..2pi`，`1=-pi..pi`           | W   | MotorBridge RobStride `set_zero_position()` 会自动写 `1`。要掉电保持，需 type 22 保存 / `--store 1`。 |
| `0x702A` | `damper`          |  `u8` |  1 | 开关      | 默认 `0`；`1` 取消关机反驱阻尼                     | W/R | 控制手册描述的关机/未上电反驱阻尼保护。需要掉电保持时要保存。                                                        |
| `0x702B` | `add_offset`      | `f32` |  4 | rad     | 默认 `0`                                  | W/R | 零位偏置。例：在物理 `1 rad` 位置标零后写 `add_offset=1`，重启后该物理位置仍显示 `1 rad`，零位相对偏移 `1 rad`。           |
| `0x702C` | `alveolous_open`  |  `u8` |  1 | 开关      | 默认 `0`；`1` 开启齿槽补偿                       | W/R | 齿槽标定成功后再开启。手册建议空载标定，通常先设置 `iq_test=1`。                                                 |
| `0x702D` | `iq_test`         |  `u8` |  1 | 开关      | 默认 `0`；`1` 开启初始化/标定相关行为                 | W/R | 用于电机初始化标定，也可作为齿槽标定准备步骤。是否需要保存/重启取决于固件流程。                                               |
| `0x702E` | `dcc_set`         | `f32` |  4 | rad/s^2 | 默认 `10`                                 | W/R | PP 模式减速度。手册说明当固件配置为加减速度分离时，该参数用于减速度。                                                   |

### 保存与置零注意事项

* `W/R` 或 `W` 只表示 CAN 上可写，不代表自动掉电保存。参数值需要掉电保持时，使用 `motorbridge-cli robstride-write-param ... --store 1`。`motorbridge-cli run --vendor robstride ... --mode save` 仍可作为直接保存动作使用。
* RobStride 置零时，MotorBridge 保持和其他电机一致的上层命令；内部会发送 type 6，然后写 `zero_sta(0x7029)=1`。配合 `--store 1`，即可保存 `-pi..pi` 上电区间。
* 位置统一用 rad，速度用 rad/s，加速度/减速度用 rad/s^2。

## 示例

读取 `mechPos`：

```bash theme={null}
motorbridge-cli robstride-read-param \
  --channel can0 --model rs-06 --motor-id 2 --feedback-id 0xFD \
  --param-id 0x7019 --type f32
```

写 `damper=1` 并保存：

```bash theme={null}
motorbridge-cli robstride-write-param \
  --channel can0 --model rs-06 --motor-id 2 --feedback-id 0xFD \
  --param-id 0x702A --type u8 --value 1 --verify 1 --store 1
```

## RobStride 零点校准

使用统一 Python 包 CLI。当前 CLI 是子命令结构，所以 RobStride 控制命令必须以
`motorbridge-cli run` 开头。

写零点前：

* 使用已验证的适配器路径，优先 PCAN，或已验证可用的 CANable/candleLight
  SocketCAN 接口。
* 先扫描确认目标 `motor-id` 和 `feedback-id`。
* 手动把关节摆到真实机械零位。
* 确认机构不会碰撞、坠落或误伤人。

扫描并确认电机在线：

```bash theme={null}
motorbridge-cli scan \
  --vendor robstride --channel can0 \
  --start-id 1 --end-id 127 \
  --feedback-ids 0xFD,0xFF,0xFE,0x00,0xAA
```

读取一次状态：

```bash theme={null}
motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 1 --feedback-id 0xFD \
  --mode enable --loop 1 --dt-ms 100
```

把当前机械位置写为零点。RobStride 必须带 `--zero-exp 1`；不带这个参数时，
MotorBridge 只会打印警告，不会真正发送置零 CAN 帧。`--store 1` 表示在固件接受时保存结果。

```bash theme={null}
motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 1 --feedback-id 0xFD \
  --mode set-zero --zero-exp 1 --store 1 \
  --loop 1 --dt-ms 100
```

再次读取状态验证：

```bash theme={null}
motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 1 --feedback-id 0xFD \
  --mode enable --loop 3 --dt-ms 100
```

再做小幅移动并回零测试：

```bash theme={null}
motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 1 --feedback-id 0xFD \
  --mode pos-vel --pos 1.5 --vlim 1.0 --loc-kp 5.0 \
  --loop 1 --dt-ms 20

motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 1 --feedback-id 0xFD \
  --mode pos-vel --pos -1.5 --vlim 1.0 --loc-kp 5.0 \
  --loop 1 --dt-ms 20
```

RobStride 路径中 MotorBridge 还会内部写 `zero_sta=1`，用于让启动后的范围按
`-pi..pi` 处理。实际使用时请把示例里的 `rs-00` 换成真实电机型号，以便限值和日志正确。
