Python 实现 RobStride 电机控制库,提供简单易用的 API 和丰富的功能。
- ✅ MIT 模式位置控制:高性能直接扭矩控制
- ✅ 速度控制:精确的速度闭环控制
- ✅ 实时控制:50-100Hz 控制频率
- ✅ 交互式界面:友好的命令行界面
- ✅ 参数调整:实时调整控制参数
- ✅ 状态监控:实时显示电机状态
- Python 3.8+
- Linux 系统 (SocketCAN 支持)
- CAN 接口硬件
# 安装系统依赖
sudo apt-get install python3 python3-pip can-utils
# 克隆项目
git clone https://github.com/tianrking/robstride-control.git
cd robstride-control/python
# 安装 Python 依赖
pip install -r requirements.txt
# 或者使用虚拟环境
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt# 运行 MIT 位置控制
python3 src/position_control.py 11# 运行速度控制
python3 src/speed_control.py 11from src.position_control import PositionControllerMIT
# 创建控制器
controller = PositionControllerMIT(motor_id=11)
# 连接电机
controller.connect()
# 设置位置 (角度)
controller.set_angle(90.0)
# 调整控制参数
controller.set_kp(30.0) # 位置增益
controller.set_kd(0.5) # 阻尼增益
# 交互式控制
controller.run_interactive()from src.speed_control import SpeedController
# 创建控制器
controller = SpeedController(motor_id=11)
# 连接电机
controller.connect()
# 设置速度 (rad/s)
controller.set_velocity(5.0)
# 交互式控制
controller.run_interactive()-
数字输入:设置目标角度(度)
90 # 顺时针 90 度 -45 # 逆时针 45 度 0 # 零点位置 -
参数调整:
kp 30 # 设置位置增益为 30 kd 0.8 # 设置阻尼增益为 0.8 -
特殊命令:
home # 回零位 status # 显示状态 params # 显示参数 quit # 退出
-
数字输入:设置目标速度 (rad/s)
5.0 # 正向 5 rad/s -3.0 # 反向 3 rad/s 0 # 停止 -
特殊命令:
stop # 停止电机 status # 显示状态 quit # 退出
- 直接发送位置、速度、扭矩目标
- 50Hz 控制频率
- 适用于高性能机器人应用
- 基于 VELOCITY_TARGET 参数
- 20Hz 控制频率
- 适用于需要精确速度控制的应用
| 参数 | 范围 | 说明 |
|---|---|---|
| Kp | 0-500 | 位置增益,控制响应速度 |
| Kd | 0-5 | 阻尼增益,抑制震荡 |
| 速度限制 | 0-50 rad/s | 最大速度限制 |
| 扭矩限制 | 0-60 Nm | 最大扭矩限制 |
| 参数 | 范围 | 说明 |
|---|---|---|
| Kp | 0-500 | 速度比例增益 |
| Ki | 0-100 | 速度积分增益 |
| 速度限制 | 0-50 rad/s | 最大速度限制 |
# 基础使用示例
python3 examples/basic_usage.py 11
# 高级控制示例
python3 examples/advanced_control.py 11-
找不到电机
# 检查 CAN 连接 sudo ip link show can0 # 扫描电机 python3 -c "from robstride_dynamics import RobstrideBus; print(RobstrideBus.scan_channel('can0'))"
-
权限错误
# 添加用户到 dialout 组 sudo usermod -a -G dialout $USER # 重启或重新登录
-
CAN 接口未设置
sudo ip link set can0 type can bitrate 1000000 sudo ip link set up can0
# 在控制循环中调整 sleep 时间
time.sleep(0.02) # 50Hz (默认)
time.sleep(0.01) # 100Hz (高性能)
time.sleep(0.05) # 20Hz (低负载)- 从小参数开始:Kp=10, Kd=0.1
- 逐步增加 Kp:直到响应快速但不震荡
- 调整 Kd:消除过冲和震荡
- 检查温度:确保电机不过热
# 安装开发依赖
pip install pytest
# 运行测试
pytest tests/# 安装格式化工具
pip install black flake8
# 格式化代码
black src/
flake8 src/MIT License - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!