入门 - Factor-Robotics/odrive_ros2_control GitHub Wiki
本指南将为您提供使用ros2_control操作ODrive的最小说明。
建议使用root权限安装odrivetool,这样udev规则会被自动添加,您不会遇到USB权限问题。
对于固件版本0.5.3:
sudo pip3 install odrive==0.5.3.post0
对于固件版本0.5.1:
sudo pip3 install odrive==0.5.1.post0
按照ODrive文档设置您的硬件。请确保您的电机和编码器已正确配置和校准。根据您的应用需求设置ODrive启动流程。我们假定在您启动ROS驱动之前,ODrive已经完成了预设的启动程序。我们不建议提前启用看门狗,这可能会阻碍启动程序。如您要使用看门狗,只需在URDF中设置。ODrive轴可以提前设置为闭环控制状态,也可以不设置,反正ROS驱动也可以完成状态切换。我们还建议配置和启用抗齿槽功能,这将显著提高低速控制性能。
安装依赖项:
sudo apt-get install libusb-1.0-0-dev ros-foxy-ros2-control ros-foxy-ros2-controllers ros-foxy-xacro
克隆并构建odrive_ros2_control,选择与您的ROS版本和ODrive固件相匹配的分支:
git clone -b <branch> https://github.com/Factor-Robotics/odrive_ros2_control.git
cd ..
colcon build
演示launch文件将在axis0上加载并启动速度控制器:
ros2 launch odrive_demo_bringup odrive_multi_interface.launch.py
在另一个终端发送速度指令,电机应以1 rad/s的速度开始旋转:
ros2 topic pub -r 100 /joint0_velocity_controller/commands std_msgs/Float64MultiArray "data: [1]"
您可以监控axis0的状态,包括位置、速度、力矩、温度、错误代码:
ros2 topic echo /dynamic_joint_states
您还可以在rviz2中可视化tf:
这个演示配置也包含了多种forward command controllers。您可以修改配置文件,或在运行时切换控制器。当您切换控制器时,驱动会根据所需的控制等级自动切换ODrive的控制模式。
这个包主要提供了ODrive的hardware components实现。因此您可以将其配合ros2_controllers使用,搭建各种类型的机器人。如您使用多个ODrive,则必须为每个关节设置所属硬件的序列号。如您只使用单个ODrive,可将序列号设为0,此时驱动会使用所发现的唯一ODrive。相应的硬件配置需要添加到URDF中。
如果您还不熟悉ros2_control框架,或不清楚如何编写配置,可参考ros2_control_demos提供的示例和模板。其中DiffBot和RRBot都是具有2个自由度的虚拟机器人,而ODrive硬件恰好能提供2个自由度的控制。因此,我们可以很容易将这两个示例修改为硬件在环的形式。控制命令将在真实电机上执行,反馈状态也来自真实的电机和编码器。我们的演示尽可能沿用ros2_control_demos中的原配置。您可以对比两边仓库的配置以了解哪些修改是所需的。