Skip to main content

通道兼容说明(PCAN + slcan + CAN-FD + Damiao 串口桥)

  • Linux SocketCAN 直接使用网卡名:can0can1slcan0
  • 串口类 USB-CAN 需先创建并拉起 slcan0sudo slcand -o -c -s8 /dev/ttyUSB0 slcan0 && sudo ip link set slcan0 up
  • CAN-FD 链路可通过 CLI(--transport socketcanfd)和 C++ SDK(Controller::from_socketcanfd(...))使用,Hexfellow 必须走该链路。
  • 仅 Damiao 可选串口桥链路:--transport dm-serial --serial-port /dev/ttyACM0 --serial-baud 921600
  • Damiao 串口桥完整接口与命令模板见 motor_cli/README.zh-CN.md3.6 节(英文见 motor_cli/README.md)。
  • Linux SocketCAN 下 --channel 不要带 @bitrate(例如 can0@1000000 无效)。
  • Windows(PCAN 后端)中,can0/can1 映射 PCAN_USBBUS1/2,可选 @bitrate 后缀。
这是基于 motor_abi 的 RAII 风格 C++ 包装层。
English version: README.md

ABI 元数据 helper

  • motorbridge::abi_version() 返回当前加载的 ABI 库版本。
  • motorbridge::abi_capabilities_json() 返回当前加载 ABI 的能力 JSON。
  • bindings/api_surface.json 用于跟踪 C ABI、Python、C++ 和文档接口对齐。

Damiao 置零规则(dm-serial)

  • Damiao 场景下,set_zero_position() 前先调用 disable()
  • 核心层已加入防护:非失能状态调用 set_zero_position() 会被拒绝。
  • 核心层在 set_zero_position() 后内置固定稳定等待(约 20ms)。
  • C++/ABI 函数签名未变,本次属于核心行为防护升级。

Controller 入口

  • Controller(channel)(SocketCAN/PCAN 路径)
  • Controller::from_socketcanfd(channel)(CAN-FD 路径,Hexfellow 必须使用)
  • Controller::from_dm_serial(serial_port, baud)(仅 Damiao 串口桥)
  • add_damiao_motor(motor_id, feedback_id, model)
  • add_hexfellow_motor(motor_id, feedback_id, model)
  • add_myactuator_motor(motor_id, feedback_id, model)
  • add_robstride_motor(motor_id, feedback_id, model)
  • add_hightorque_motor(motor_id, feedback_id, model)

快速开始

Damiao:
Damiao 串口桥示例:
RobStride:
RobStride 支持 rs-00rs-06。C++ wrapper 的 add_robstride_motor(...) 调用形态一致,但 ABI 背后的参数读写会使用第 4 章通用运行参数表。 C++ RobStride wrapper 已对齐 Python binding 的公开 helper:
  • robstride_ping(...)
  • robstride_set_run_mode(...)
  • robstride_write_param(...) / robstride_write_param_i32(...)
  • robstride_read_param(...) / robstride_read_param_i32(...)
  • robstride_save_params(...)
  • robstride_reset_can_id(...)
  • robstride_set_position(...) / robstride_set_velocity(...) / robstride_set_current(...)
  • robstride_set_limits(...)
MyActuator:
Hexfellow(仅 CAN-FD):

示例程序

  • examples/cpp_wrapper_demo.cpp
  • examples/hexfellow_canfd_demo.cpp(Hexfellow,CAN-FD,仅 MIT / POS_VEL)
  • examples/robstride_wrapper_demo.cpp
  • examples/full_modes_demo.cpp
  • examples/pid_register_tune_demo.cpp
  • examples/scan_ids_demo.cpp(Damiao 历史辅助)
  • examples/pos_ctrl_demo.cpp
  • examples/pos_repl_demo.cpp
通过 Rust CLI 统一扫描:
通过 Rust CLI 使用 HighTorque:
通过 C++ 绑定使用 HighTorque:

Windows 实验支持(PCAN-USB)

项目主线仍以 Linux 为主。Windows 支持为实验性能力,当前通过 PEAK PCAN 后端实现。
  • 安装 PEAK 驱动与 PCAN-Basic 运行时(PCANBasic.dll)。
  • Windows 下验证命令建议使用 can0@1000000
验证命令:

构建

端到端示例命令