> ## 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.

# HighTorque 协议说明（2026-03 更新）

## 通道兼容说明（PCAN + slcan + Damiao 串口桥）

* Linux SocketCAN 直接使用网卡名：`can0`、`can1`、`slcan0`。
* 串口类 USB-CAN 需先创建并拉起 `slcan0`：`sudo slcand -o -c -s8 /dev/ttyUSB0 slcan0 && sudo ip link set slcan0 up`。
* 仅 Damiao 可选串口桥链路：`--transport dm-serial --serial-port /dev/ttyACM0 --serial-baud 921600`。
* Linux SocketCAN 下 `--channel` 不要带 `@bitrate`（例如 `can0@1000000` 无效）。
* Windows（PCAN 后端）中，`can0/can1` 映射 `PCAN_USBBUS1/2`，可选 `@bitrate` 后缀。

本文用于统一说明 `rust_dm` 当前 HighTorque 支持状态，避免与旧版本“兼容层”描述混淆。

## 1. 当前实现状态

`rust_dm` 现在已经实现 HighTorque 的原生 `ht_can v1.5.5` 直连 CAN 路径，包含：

* Rust CLI：`motor_cli --vendor hightorque`
* C ABI：`motor_controller_add_hightorque_motor(...)`
* Python 绑定：`Controller.add_hightorque_motor(...)`
* C++ 绑定：`Controller::add_hightorque_motor(...)`

控制量纲统一为：

* 位置：`rad`
* 速度：`rad/s`
* 力矩：`Nm`

并在 HighTorque 后端按协议做缩放映射：

* `pos_raw = rad / (2π) * 10000`
* `vel_raw = rad/s / (2π) / 0.00025`
* `tqe_raw = Nm * 100`

## 2. 已验证的直连 CAN 指令族

当前实现按 `ht_can v1.5.5` 处理：

* 扫描/读取状态：`0x17 0x01`（8 字节）
* 反馈判定：`0x27 0x01`
* 位置/速度/力矩联合控制：`0x07 0x35`
* 速度控制：`0x07 0x07`
* 停机：`0x01 0x00 0x00`

说明：

* 扫描命中 ID 以回复帧 CAN ID 的高字节提取（例如 `0x100 -> id=1`）。
* 默认 `motor_id` 有效范围建议 `1..127`。

## 3. 与旧“兼容层”说明的关系

旧文档曾描述 `hightorque` 通过复用 RobStride 协议的兼容方案。该描述已过时。

现在仓库主线已切换为 HighTorque 原生协议实现，不再依赖 RobStride 协议兼容层来完成 HighTorque 控制。

## 4. 串口 CANboard 路径（独立链路）

HighTorque 官方生态中仍存在一条常见链路：

* 上位机 -> USB 虚拟串口 -> CANboard -> 电机 CAN/CAN-FD

该链路通常使用 `0xF7` 头的私有串口封包（CRC8/CRC16）。
它与 `rust_dm` 当前的 SocketCAN 直连实现是两条不同传输层。

换言之：

* 现在你可以直接用 `can0` 跑原生 HighTorque 控制。
* 若未来需要“等价官方串口 SDK”能力，可再新增串口传输后端，而不影响现有 CAN 直连接口。

## 5. 推荐验证命令

```bash theme={null}
# 1) 扫描
cargo run -p motor_cli -- --vendor hightorque --channel can0 --mode scan --start-id 1 --end-id 32

# 2) 读状态
cargo run -p motor_cli -- --vendor hightorque --channel can0 --motor-id 1 --mode read

# 3) 位置控制（180° = π rad）
cargo run -p motor_cli -- --vendor hightorque --channel can0 --motor-id 1 \
  --mode mit --pos 3.1415926 --vel 0.8 --tau 0.8 --loop 1
```
