|
1 | | -# rc_control |
| 1 | +<a id="readme-top"></a> |
| 2 | + |
| 3 | +<!-- LANGUAGE SWITCH --> |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +<!-- PROJECT LOGO --> |
| 8 | + |
| 9 | +<br /> |
| 10 | +<div align="center"> |
| 11 | + |
| 12 | +<h3 align="center">rc_control</h3> |
| 13 | + |
| 14 | +<p align="center"> |
| 15 | + 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. |
| 16 | + <br /> |
| 17 | + <a href="https://github.com/gdut-robocon/rc_control"><strong>Explore the docs »</strong></a> |
| 18 | + <br /> |
| 19 | + </p> |
| 20 | + |
| 21 | +<!-- PROJECT SHIELDS --> |
| 22 | + |
| 23 | +[![Contributors][contributors-shield]][contributors-url] |
| 24 | +[![Forks][forks-shield]][forks-url] |
| 25 | +[![Stargazers][stars-shield]][stars-url] |
| 26 | +[![Issues][issues-shield]][issues-url] |
| 27 | +[![License][license-shield]][license-url] |
| 28 | + |
| 29 | +<p align="center"> |
| 30 | + <a href="https://github.com/gdut-robocon/rc_control">View Demo</a> |
| 31 | + · |
| 32 | + <a href="https://github.com/gdut-robocon/rc_control/issues/new?labels=bug&template=bug-report---.md">Report Bug</a> |
| 33 | + · |
| 34 | + <a href="https://github.com/gdut-robocon/rc_control/issues/new?labels=enhancement&template=feature-request---.md">Request Feature</a> |
| 35 | + </p> |
| 36 | +</div> |
| 37 | + |
| 38 | +<!-- TABLE OF CONTENTS --> |
| 39 | + |
| 40 | +<details> |
| 41 | + <summary>Table of Contents</summary> |
| 42 | + <ol> |
| 43 | + <li> |
| 44 | + <a href="#about-the-project">About The Project</a> |
| 45 | + <ul> |
| 46 | + <li><a href="#built-with">Built With</a></li> |
| 47 | + </ul> |
| 48 | + </li> |
| 49 | + <li> |
| 50 | + <a href="#getting-started">Getting Started</a> |
| 51 | + <ul> |
| 52 | + <li><a href="#prerequisites">Prerequisites</a></li> |
| 53 | + <li><a href="#installation">Installation</a></li> |
| 54 | + </ul> |
| 55 | + </li> |
| 56 | + <li><a href="#usage">Usage</a></li> |
| 57 | + <li><a href="#roadmap">Roadmap</a></li> |
| 58 | + <li><a href="#contributing">Contributing</a></li> |
| 59 | + <li><a href="#license">License</a></li> |
| 60 | + <li><a href="#contact">Contact</a></li> |
| 61 | + <li><a href="#acknowledgments">Acknowledgments</a></li> |
| 62 | + </ol> |
| 63 | +</details> |
| 64 | + |
| 65 | +<!-- ABOUT THE PROJECT --> |
| 66 | + |
| 67 | +## 📖 About The Project |
| 68 | + |
| 69 | +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. |
| 70 | + |
| 71 | +### Key Features |
| 72 | + |
| 73 | +- **Robot Control Framework**: Modular architecture for integration with various robotic platforms. |
| 74 | +- **Sensor Fusion Filters**: Implements complementary filters, Kalman filters, and adaptive filtering for IMU data. |
| 75 | +- **Real-time Hardware Interface**: Supports CAN bus communication, GPIO control, and serial device integration. |
| 76 | +- **ROS Integration**: Full compatibility with ROS ecosystem including message types, launch files, and control interfaces. |
| 77 | +- **Gazebo Simulation Support**: Custom plugins for simulating hardware components in Gazebo. |
| 78 | + |
| 79 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 80 | + |
| 81 | +### Built With |
| 82 | + |
| 83 | +* [![ROS][ROS-shield]][ROS-url] |
| 84 | +* [![Gazebo][Gazebo-shield]][Gazebo-url] |
| 85 | +* [![C++][C++-shield]][C++-url] |
| 86 | + |
| 87 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 88 | + |
| 89 | +### 📁 Project Structure |
| 90 | + |
| 91 | +<details> |
| 92 | +<summary>Click to expand project structure</summary> |
| 93 | + |
| 94 | +``` |
| 95 | +rc_control/ |
| 96 | +├── .clang-format |
| 97 | +├── .clang-tidy |
| 98 | +├── .pre-commit-config.yaml |
| 99 | +├── rc_common/ |
| 100 | +├── rc_gazebo/ |
| 101 | +├── rc_hw/ |
| 102 | +├── rc_ibus/ |
| 103 | +├── rc_msgs/ |
| 104 | +``` |
| 105 | + |
| 106 | +</details> |
| 107 | + |
| 108 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 109 | + |
| 110 | +<!-- GETTING STARTED --> |
| 111 | + |
| 112 | +## 🚀 Getting Started |
| 113 | + |
| 114 | +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. |
| 115 | + |
| 116 | +### Prerequisites |
| 117 | + |
| 118 | +- ROS (Noetic or later) |
| 119 | +- Gazebo |
| 120 | +- C++14 or higher |
| 121 | +- CMake |
| 122 | +- Git |
| 123 | + |
| 124 | +### Installation |
| 125 | + |
| 126 | +1. Clone the repo |
| 127 | + |
| 128 | + ```sh |
| 129 | + git clone https://github.com/gdut-robocon/rc_control.git |
| 130 | + ``` |
| 131 | + |
| 132 | +2. Build with Catkin |
| 133 | + |
| 134 | + ```sh |
| 135 | + cd rc_control |
| 136 | + catkin_make |
| 137 | + ``` |
| 138 | + |
| 139 | +3. Source the workspace |
| 140 | + |
| 141 | + ```sh |
| 142 | + source devel/setup.bash |
| 143 | + ``` |
| 144 | + |
| 145 | +### Configuration |
| 146 | + |
| 147 | +- Modify hardware configuration in `rc_hw/config/hw_config_template.yaml` |
| 148 | +- Adjust IMU filter parameters in `rc_common/include/rc_common/filters/` |
| 149 | +- Update CAN bus settings in `rc_hw/src/hardware_interface/can_bus.cpp` |
| 150 | + |
| 151 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 152 | + |
| 153 | +<!-- USAGE EXAMPLES --> |
| 154 | + |
| 155 | +## 💻 Usage |
| 156 | + |
| 157 | +To launch the hardware interface: |
| 158 | + |
| 159 | +```sh |
| 160 | +roslaunch rc_hw rc_hw.launch |
| 161 | +``` |
| 162 | + |
| 163 | +To run the Gazebo simulation: |
| 164 | + |
| 165 | +```sh |
| 166 | +roslaunch rc_gazebo field_rc23.launch |
| 167 | +``` |
| 168 | + |
| 169 | +To interface with RC input: |
| 170 | + |
| 171 | +```sh |
| 172 | +roslaunch rc_ibus rc_ibus.launch |
| 173 | +``` |
| 174 | + |
| 175 | +For more detailed usage, refer to the documentation linked in the introduction. |
| 176 | + |
| 177 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 178 | + |
| 179 | +<!-- ROADMAP --> |
| 180 | + |
| 181 | +## 🗺️ Roadmap |
| 182 | + |
| 183 | +- **v1.0** - Initial release with core framework and hardware interface |
| 184 | +- **v1.1** - Added Gazebo simulation plugins and IMU filtering |
| 185 | +- **v1.2** - Introduced CAN bus support and GPIO control |
| 186 | +- **v2.0** - Enhanced real-time capabilities and added advanced filtering techniques |
| 187 | +- **v2.1** - Improved documentation and modular structure for easier integration |
| 188 | + |
| 189 | +See the [open issues](https://github.com/gdut-robocon/rc_control/issues) for a full list of proposed features (and known issues). |
| 190 | + |
| 191 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 192 | + |
| 193 | +<!-- CONTRIBUTING --> |
| 194 | + |
| 195 | +## 🤝 Contributing |
| 196 | + |
| 197 | +Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. |
| 198 | + |
| 199 | +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". |
| 200 | +Don't forget to give the project a star! Thanks again! |
| 201 | + |
| 202 | +1. Fork the Project |
| 203 | +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) |
| 204 | +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) |
| 205 | +4. Push to the Branch (`git push origin feature/AmazingFeature`) |
| 206 | +5. Open a Pull Request |
| 207 | + |
| 208 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 209 | + |
| 210 | +<!-- LICENSE --> |
| 211 | + |
| 212 | +## 🎗 License |
| 213 | + |
| 214 | +Copyright © 2024-2025 [rc_control][rc_control]. <br /> |
| 215 | +Released under the [MIT][license-url] license. |
| 216 | + |
| 217 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 218 | + |
| 219 | +<!-- CONTACT --> |
| 220 | + |
| 221 | +## 📧 Contact |
| 222 | + |
| 223 | + |
| 224 | + |
| 225 | +Project Link: [https://github.com/gdut-robocon/rc_control](https://github.com/gdut-robocon/rc_control) |
| 226 | + |
| 227 | +<p align="right">(<a href="#readme-top">back to top</a>)</p> |
| 228 | + |
| 229 | +<!-- REFERENCE LINKS --> |
| 230 | + |
| 231 | +[rc_control]: https://github.com/gdut-robocon/rc_control |
| 232 | + |
| 233 | +<!-- MARKDOWN LINKS & IMAGES --> |
| 234 | + |
| 235 | +[contributors-shield]: https://img.shields.io/github/contributors/gdut-robocon/rc_control.svg?style=flat-round |
| 236 | +[contributors-url]: https://github.com/gdut-robocon/rc_control/graphs/contributors |
| 237 | +[forks-shield]: https://img.shields.io/github/forks/gdut-robocon/rc_control.svg?style=flat-round |
| 238 | +[forks-url]: https://github.com/gdut-robocon/rc_control/network/members |
| 239 | +[stars-shield]: https://img.shields.io/github/stars/gdut-robocon/rc_control.svg?style=flat-round |
| 240 | +[stars-url]: https://github.com/gdut-robocon/rc_control/stargazers |
| 241 | +[issues-shield]: https://img.shields.io/github/issues/gdut-robocon/rc_control.svg?style=flat-round |
| 242 | +[issues-url]: https://github.com/gdut-robocon/rc_control/issues |
| 243 | +[license-shield]: https://img.shields.io/github/license/gdut-robocon/rc_control.svg?style=flat-round |
| 244 | +[license-url]: https://github.com/gdut-robocon/rc_control/blob/master/LICENSE.txt |
| 245 | + |
| 246 | +<!-- Tech Stack --> |
| 247 | + |
| 248 | +[ROS-shield]: https://img.shields.io/badge/ROS-2960CA?style=flat-round&logo=ros&logoColor=white |
| 249 | +[ROS-url]: https://www.ros.org/ |
| 250 | +[Gazebo-shield]: https://img.shields.io/badge/Gazebo-000000?style=flat-round&logo=gazebo&logoColor=white |
| 251 | +[Gazebo-url]: https://gazebosim.org/ |
| 252 | +[C++-shield]: https://img.shields.io/badge/C++-00599C?style=flat-round&logo=cplusplus&logoColor=white |
| 253 | +[C++-url]: https://isocpp.org/ |
| 254 | + |
| 255 | +## reference |
| 256 | + |
| 257 | +[rm_control]:https://github.com/rm-controls/rm_control |
0 commit comments