This project provides a comprehensive robotics control framework for real-time sensor processing, hardware abstraction, and simulation integration. Built on ROS, it supports IMU filtering, CAN bus communication, GPIO control, and RC input handling. Key features include sensor fusion, hardware interfacing for actuators and laser sensors, Gazebo simulation plugins, and real-time control loops. Designed for modular deployment in robotic systems, it enables precise control, state estimation, and simulation for applications like mobile robots or robotic arms.
Explore the docs »
Table of Contents
This project provides a comprehensive robotics control framework for real-time sensor processing, hardware abstraction, and simulation integration. Built on ROS (Robot Operating System), it supports IMU filtering, CAN bus communication, GPIO control, and RC input handling. Key features include sensor fusion, hardware interfacing for actuators and laser sensors, Gazebo simulation plugins, and real-time control loops. Designed for modular deployment in robotic systems, it enables precise control, state estimation, and simulation for applications like mobile robots or robotic arms.
- Robot Control Framework: Modular architecture for integration with various robotic platforms.
- Sensor Fusion Filters: Implements complementary filters, Kalman filters, and adaptive filtering for IMU data.
- Real-time Hardware Interface: Supports CAN bus communication, GPIO control, and serial device integration.
- ROS Integration: Full compatibility with ROS ecosystem including message types, launch files, and control interfaces.
- Gazebo Simulation Support: Custom plugins for simulating hardware components in Gazebo.
Click to expand project structure
rc_control/
├── .clang-format
├── .clang-tidy
├── .pre-commit-config.yaml
├── rc_common/
├── rc_gazebo/
├── rc_hw/
├── rc_ibus/
├── rc_msgs/
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.
- ROS (Noetic or later)
- Gazebo
- C++14 or higher
- CMake
- Git
-
Clone the repo
git clone https://github.com/gdut-robocon/rc_control.git
-
Build with Catkin
cd rc_control catkin_make
-
Source the workspace
source devel/setup.bash
- Modify hardware configuration in
rc_hw/config/hw_config_template.yaml
- Adjust IMU filter parameters in
rc_common/include/rc_common/filters/
- Update CAN bus settings in
rc_hw/src/hardware_interface/can_bus.cpp
To launch the hardware interface:
roslaunch rc_hw rc_hw.launch
To run the Gazebo simulation:
roslaunch rc_gazebo field_rc23.launch
To interface with RC input:
roslaunch rc_ibus rc_ibus.launch
For more detailed usage, refer to the documentation linked in the introduction.
- v1.0 - Initial release with core framework and hardware interface
- v1.1 - Added Gazebo simulation plugins and IMU filtering
- v1.2 - Introduced CAN bus support and GPIO control
- v2.0 - Enhanced real-time capabilities and added advanced filtering techniques
- v2.1 - Improved documentation and modular structure for easier integration
See the open issues for a full list of proposed features (and known issues).
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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Copyright © 2024-2025 rc_control.
Released under the MIT license.
Email: jialonglongliu@gmail.com
Project Link: https://github.com/gdut-robocon/rc_control