• Stars
    star
    399
  • Rank 108,092 (Top 3 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This repository aims at providing examples to illustrate ros2_control and ros2_controllers

ros2_control Demos

Licence

This repository provides examples for functionalities and capabilities of ros2_control framework. It consists of simple implementations that demonstrate different concepts.

If you want to have rather step by step manual how to do things with ros2_control checkout the ros-control/roscon2022_workshop repository.

Content

The following examples are part of this demo repository:

Getting started

The repository is structured into example_XY folders that fully contained packages with names ros2_control_demos_example_XY.

The packages have following structure of subfolders:

  • bringup - stores launch files and runtime configurations for demo robots.
  • description - stores URDF (and XACRO) description files, rviz configurations and meshes for the example robots.
  • hardware - stores implementations of example hardware components (interfaces).
  • controllers (optional) - stores implementation of example controllers.

The important files to check in each example are:

  • bringup/launch/<example_name>.launch.py - launch file for the example
  • bringup/config/<example_name>_controllers.yaml - parameters with controllers' setup for the example.
  • description/<example_name>.ros2_control.xacro - XACRO file with ros2_control-URDF-tag with hardware setup and parameters.
  • description/<example_name>.urdf.xacro - the main description for for the example used to generate URDF on the fly that is published on the /robot_description topic.
  • hardware/<example_name>.hpp - header file of the example hardware component implementation.
  • hardware/<example_name>.cpp - source file with the example hardware component implementation.
  • controllers/<example_name>.hpp - header file of the example controller implementation.
  • controllers/<example_name>.cpp - source file with the example controller implementation.

NOTE - The structure of packages, folders and files given in this repository is not recommended to be used for your robot. Usually you should have all of the above folders defined as separate packages with naming convention <robot_name_or_type>/[bringup|description|hardware|controllers]. More standard structure can be found in ros_control_boilerplate repository from Dave Coleman or documentation on ros_team_workspace from Stogl Robotics.

The concepts in this package are demonstrated on the examples of RRBot and DiffBot. Those two world-known imaginary robots are trivial simulations to demonstrate and test ros2_control concepts.

Build status

ROS 2 Distro Branch Build status Documentation
Rolling master Rolling Binary Build
Rolling Semi-Binary Build
Documentation
API Reference
Humble humble Humble Binary Build
Humble Semi-Binary Build
Documentation
API Reference
Galactic galactic Galactic Binary Build
Galactic Semi-Binary Build
Documentation
API Reference
Foxy foxy Foxy Binary Build
Foxy Semi-Binary Build
Documentation
API Reference

Explanation of different build types

NOTE: There are three build stages checking current and future compatibility of the package.

  1. Binary builds - against released packages (main and testing) in ROS distributions. Shows that direct local build is possible.

    Uses repos file: src/$NAME$/$NAME$-not-released.<ros-distro>.repos

  2. Semi-binary builds - against released core ROS packages (main and testing), but the immediate dependencies are pulled from source. Shows that local build with dependencies is possible and if fails there we can expect that after the next package sync we will not be able to build.

    Uses repos file: src/$NAME$/$NAME$.repos

  3. Source build - also core ROS packages are build from source. It shows potential issues in the mid future.

More Repositories

1

ros_controllers

Generic robotic controllers to accompany ros_control
C++
561
star
2

ros2_control

Generic and simple controls framework for ROS 2
C++
481
star
3

ros_control

Generic and simple controls framework for ROS
C++
478
star
4

ros2_controllers

Generic robotic controllers to accompany ros2_control
C++
356
star
5

gazebo_ros2_control

Wrappers, tools and additional API's for using ros2_control with Gazebo Classic
C++
199
star
6

realtime_tools

Contains a set of tools that can be used from a hard realtime thread, without breaking the realtime behavior.
C++
132
star
7

control_toolbox

This package contains several C++ classes useful in writing controllers.
C++
123
star
8

roscon2022_workshop

C++
118
star
9

gz_ros2_control

Connect the latest version of Gazebo with ros2_control.
C++
111
star
10

roadmap

57
star
11

control_msgs

contains base messages and actions useful for controlling robots
CMake
49
star
12

kinematics_interface

C++
16
star
13

control.ros.org

Python
12
star
14

roscon2023_control_workshop

Data, sources and mauals used for ros2_control workshop @ ROSCon 2023, in New Orleans, USA.
Python
9
star
15

gazebo_ros_control

(DO NOT USE THIS YET, SEE: https://github.com/ros-simulation/gazebo_ros_pkgs/issues/179) This is a ROS package for integrating the ros_control controller architecture with the Gazebo simulator.
C++
8
star
16

ign_ros_control

ros_control plugin for Ignition
C++
8
star
17

joss_paper

TeX
6
star
18

urdf_geometry_parser

C++
6
star
19

roscon_advanced_workshop

C++
5
star
20

ros2_rhel

Shell
2
star
21

ros2_control_ci

This repository holds reusable workflows for CI of the ros2_control framework.
2
star
22

roscon2024_control_workshop

Code for the ros2_control Workshop at ROSCon 2024 in Odense, Denmark
2
star
23

simulator_control_models

1
star