Skip to content

The ros_control Wiki

Doctor-N0 edited this page May 15, 2023 · 1 revision

Welcome to the ros_control Project! This wiki is intended to provide a detailed walkthrough of selected features of the ros_control project, and is thus intended to be a supplement to the ROS wiki. Feel free to explore the sections below to get started.

Table of Contents

  1. Main Resources: The ROS Wiki
  2. Stability
  3. Detailed Walkthrough of Selected Examples

The ROS Wiki as the Main Resource

The documentation of the ros_control package can be found on the official page of the ROS wiki. The aim of this wiki is to present a more detailed discussion of selected implementation cases.

Stability

The ros_control package is now pretty stable, but frequently receives smaller improvements.

Detailed Walkthrough of Selected Examples

Writing a new Controller: the controller_interface

Link to Tutorial: Writing a new Controller

In this example, a new controller for the PR2 Robot is being developed to track a commanded position, utilizing the EffortJointInterface. This approach ensures that the controller is compatible with all robots providing the EffortJointInterface, not just the PR2 Robot. The code includes necessary libraries and defines the PositionController class, which derives from controller_interface::Controller<hardware_interface::EffortJointInterface>. The init function retrieves the joint name, while the update function calculates the error and sets the command. The controller's starting and stopping functions are also defined.

Setting up a new Robot: the hardware_interface

Link to Tutorial: Setting up a new Robot

This tutorial guides users through the process of setting up a new robot to function with the controller manager. By ensuring that the robot supports one or more standard interfaces, users can will be able to take advantage of a large library of controllers that work on the standard interfaces.

Setting up a transmissions interface: the transmission_interface

Link to Tutorial: Setting up a transmissions interface

This tutorial walks users through two examples: The first shows how to propagate the position of a single actuator to joint space, while the second scenario deals with the situation of three actuators.

Setting up a joint limits interface: the joint_limits_interface

Link to Tutorial: Setting up a joint limits interface

In this tutorial, it is shown, how a joint limit interface can be implemented.

Writing combined hardware interface: the CombinedRobotHW

Link to Tutorial: Writing combined hardware interface

The tutorial demonstrates the ComboRobotHW package, which enables the combination of multiple RobotHWs into a single "RobotHW". This allows any controller to view all provided joints from all RobotHWs as joints of a single RobotHW.

Further Topics: Ideas for ROS 2.0

Link to Tutorial: Ideas for ros_control 2.0