|
| 1 | +# kortex2_controllers |
| 2 | +Package defining custom controllers created for kinova robots. |
| 3 | +- `kortex2_controllers::TwistController` |
| 4 | +- `kortex2_controllers::FaultController` |
| 5 | + |
| 6 | + |
| 7 | +## TwistController |
| 8 | +Cartesian twist controller created to use builtin controller on the kinova robot. |
| 9 | + |
| 10 | +### Usage |
| 11 | +Example of instance within `ros2_control` can be found in the [configuration file](../kortex2_bringup/config/kortex_controllers.yaml). |
| 12 | +Defined interfaces have to exist within the `hardware_interface::SystemInterface` implemented for the robot (e.g. driver). |
| 13 | +Stop any commanding controller and then start `TwistController`to use kinova's builtin cartesian twist controller. |
| 14 | + |
| 15 | +#### Note on controllers |
| 16 | +Exclusiveness logic is within the driver, and running joint-based and twist controller at the same time is not possible. |
| 17 | +Controller Manager (`ros2_control`) will try to activate both on request, but the hardware should reject it. |
| 18 | + |
| 19 | +``` |
| 20 | +ros2 control switch_controllers --activate streaming_controller --deactivate joint_trajectory_controller |
| 21 | +``` |
| 22 | + |
| 23 | +By publishing `geometry_msgs::msg::TwistStamped` to `/streaming_controller/commands`, the commands will be piped to the driver |
| 24 | +and streamed to the robot controller. |
| 25 | + |
| 26 | +## FaultController |
| 27 | +Controller used to reset faults on the kinova arm. |
| 28 | + |
| 29 | +### Usage |
| 30 | +Example of instance within `ros2_control` can be found in the [configuration file](../kortex2_bringup/config/kortex_controllers.yaml). |
| 31 | +Interfaces are already hardcoded in the `hardware_interface::SystemInterface` implemented for the robot (e.g. driver) |
| 32 | + |
| 33 | +Spawn `FaultController` if it is not already spawned |
| 34 | + |
| 35 | +``` |
| 36 | +ros2 run controller_manager spawner fault_controller |
| 37 | +``` |
| 38 | + |
| 39 | +On the topic `/fault_controller/internal_fault` of type `example_interfaces::msg::Bool` the |
| 40 | +information if robot is currently faulted can be found. |
| 41 | + |
| 42 | +Deactivate all the controllers using robot. |
| 43 | +``` |
| 44 | +ros2 control swithc_controllers --deactivate joint_trajectory_controller gripper_controller |
| 45 | +``` |
| 46 | + |
| 47 | +Call the service for resetting the fault (`example_interfaces::srv::Trigger`). |
| 48 | + |
| 49 | +``` |
| 50 | +ros2 service call /fault_controller/reset_fault example_interfaces/srv/Trigger |
| 51 | +``` |
| 52 | + |
| 53 | +Activate controllers to enable robot control. |
| 54 | +``` |
| 55 | +ros2 control swithc_controllers --activate joint_trajectory_controller gripper_controller |
| 56 | +``` |
0 commit comments