- 连接PEAK PCAN-USB适配器到计算机的USB端口
- 确保CAN总线两端的终端电阻正确连接(120Ω)
- 连接电机到CAN总线
# 安装CAN工具
sudo apt-get install can-utils
# 安装ros2_control相关包
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllersdmesg | grep -i peak # 检查PEAK设备是否被识别
ip link show can0 # 检查can0接口是否存在执行项目提供的CAN总线初始化脚本:
cd /home/ffd/ros2_ws/src/motor_control
chmod +x init_pcan.sh # 确保脚本可执行
sudo ./init_pcan.sh # 以root权限运行该脚本会:
- 检查并加载peak_usb模块
- 设置CAN波特率为1Mbps
- 启动can0接口
ip -s link show can0预期输出应显示can0接口状态为UP。
cd /home/ffd/ros2_ws
colcon build --packages-select motor_control_interfacesource install/setup.bash
./install/motor_control_interface/lib/motor_control_interface/test_motor_hardware测试程序会:
- 初始化MotorHardware接口
- 配置CAN通信和关节参数
- 设置电机位置命令
- 读取电机状态
- 输出测试结果
source install/setup.bash
ros2 launch motor_control_interface motor_control_launch.py该启动文件会启动:
- controller_manager节点(ros2_control_node)
- 关节状态发布器(joint_state_broadcaster)
- 位置控制器(position_controller)
当使用启动文件运行时,可以通过ROS 2话题发送位置命令:
# 向关节1发送0.5弧度的位置命令
ros2 topic pub --once /position_controller/commands std_msgs/msg/Float64MultiArray "{
data: [0.5]
}"ros2 topic echo /joint_statesros2 control list_controllerscandump can0 # 实时查看CAN总线消息- 检查CAN接口是否已正确初始化:
ip -s link show can0 - 验证终端电阻是否正确连接
- 检查波特率设置是否与电机匹配
- 检查电机ID是否与配置文件中的设置一致
- 确保电机已供电
- 检查电机控制器是否处于激活状态
- 查看启动日志:
ros2 launch motor_control motor_control_launch.py --log-level debug - 检查控制器配置文件:
/home/ffd/ros2_ws/src/motor_control/config/motor_controller_config.yaml
can_interface: CAN接口名称 (默认: can0)master_id: 主控制器ID (默认: 253)joints: 关节配置列表
position_controller: 位置控制器参数joints: 受控关节列表gains: PID控制器增益参数
ros2 control stop controllers position_controllersudo ip link set can0 down