Skip to content

gdut-robocon/rc_controllers

Repository files navigation


Contributors Forks Stargazers Issues License

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

📖 About The Project

This project provides a suite of ROS-based controllers for robotic systems, enabling precise motion control of chassis, shooter, gimbal, and action components. It supports omnidirectional and swerve drive kinematics, shooter wheel dynamics, gimbal pointing, and action command handling. Built on ROS Control and pluginlib, it offers modular, real-time safe control logic with YAML-based configuration, integrating Eigen for kinematic computations and leveraging TF2 for coordinate transformations.

Key Features

  • ROS Control Integration: Seamless integration with the ROS Control framework for modular and reusable controllers.
  • Modular Controller Plugins: Supports plugin-based architecture for easy extensibility and runtime loading.
  • Omni-directional Motion Support: Implements controllers for omnidirectional wheels with configurable geometry.
  • Swerve Drive Kinematics: Advanced swerve drive control with independent module angle and speed control.
  • Real-time Command Handling: Uses real-time safe buffers and control loops for deterministic behavior.
  • Torque Limited Effort Control: Ensures safe operation by limiting torque based on physical constraints.
  • Dynamic Reconfiguration Support: Allows runtime tuning of controller parameters.
  • TF2-based Gimbal Control: Accurate coordinate transformation for 2-DOF gimbal control.
  • Chassis Velocity Transformation: Transforms velocity commands from any coordinate frame to base frame.
  • Multi-mode Shooter Control: Supports same-speed and differential-speed modes for robotic shooters.

Built With

  • ROS
  • C++
  • Eigen
  • pluginlib
  • TF2

(back to top)

📁 Project Structure

Click to expand project structure
rc_controllers/
├── .clang-format
├── .clang-tidy
├── action_controller/
│   ├── CMakeLists.txt
│   ├── action_controller_plugins.xml
│   ├── package.xml
│   ├── include/
│   │   └── action_controller/
│   │       ├── action_controller.h
│   ├── src/
│   │   └── action_controller.cpp
│   └── test/
│       ├── test_action_controller.launch
│       └── test_action_controller.yaml
├── chassis_controllers/
│   ├── CMakeLists.txt
│   ├── chassis_controllers_plugins.xml
│   ├── package.xml
│   ├── include/
│   │   └── chassis_controllers/
│   │       ├── chassis_base.h
│   │       ├── omni.h
│   │       └── swerve.h
│   ├── src/
│   │   ├── chassis_base.cpp
│   │   ├── omni.cpp
│   │   └── swerve.cpp
│   └── test/
│       ├── test_omni.launch
│       ├── test_omni.yaml
│       ├── test_swerve.launch
│       └── test_swerve.yaml
├── rc_gimbal_controller/
│   ├── CMakeLists.txt
│   ├── package.xml
│   ├── rc_gimbal_controller_plugins.xml
│   ├── include/
│   │   └── rc_gimbal_controller/
│   │       ├── gimbal_base.h
│   ├── src/
│   │   └── gimbal_base.cpp
│   └── test/
│       ├── gimbal_config_template.yaml
│       └── load_controllers.launch
├── rc_shooter_controller/
│   ├── CMakeLists.txt
│   ├── package.xml
│   ├── rc_shooter_controller_plugins.xml
│   ├── include/
│   │   └── rc_shooter_controller/
│   │       ├── rc_shooter_controller.h
│   ├── src/
│   │   └── rc_shooter_controller.cpp
│   └── test/
│       ├── load_controller.launch
│       └── rc_shooter_controller_template.yaml

(back to top)


🚀 Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple steps.

Prerequisites

  • ROS Noetic or newer installed
  • catkin workspace initialized
  • pluginlib, controller_interface, tf2, Eigen3, realtime_tools installed

Installation

  1. Clone the repository into your catkin workspace:

    cd ~/catkin_ws/src
    git clone https://github.com/gdut-robocon/rc_controllers.git
  2. Build the package:

    cd ~/catkin_ws
    catkin_make
  3. Source the setup file:

    source devel/setup.bash

Configuration

  • Each controller supports YAML-based configuration for parameters such as wheel geometry, joint limits, publishing rate, and timeout.
  • Example configuration files are provided in the test/ directories of each controller package.

(back to top)


💻 Usage

  • Launch the controller using the provided launch files in the test/ directories.

  • For example, to test the omni-directional controller:

    roslaunch rc_controllers test_omni.launch
  • Controllers can be dynamically reconfigured using dynamic_reconfigure.

  • Controllers can be loaded via controller_manager and configured using YAML files.

(back to top)


🗺️ Roadmap

  • Add support for differential drive controllers
  • Enhance shooter controller with PID-based speed control
  • Implement advanced trajectory tracking for chassis controllers
  • Add simulation support in Gazebo
  • Improve documentation and add tutorials

See the open issues for a full list of proposed features (and known issues).

(back to top)


🤝 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Top contributors:

contrib.rocks image

(back to top)


🎗 License

Copyright © 2024-2025 rc_controllers.
Released under the MIT license.

(back to top)


📧 Contact

Email: jialonglongliu@gmail.com
Project Link: https://github.com/gdut-robocon/rc_controllers

(back to top)


🙌 Acknowledgments

  • ROS community for providing the ROS Control framework
  • Eigen developers for high-performance linear algebra library
  • TF2 developers for coordinate transformation utilities
  • Contributors and users of this project

(back to top)


REFERENCE

rm_controller

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •