Table of Contents
This project provides a ROS-based robot system setup and automation framework for managing network interfaces, services, and data logging. It utilizes systemd for service management, CMake for package configuration, and ROS tools for launching robot functionality. Key features include automated network configuration for CAN, Ethernet, and radar interfaces, environment setup via scripts, persistent service deployment, and controlled ROS bag recording for sensor and control data logging.
- Network Configuration: Automates setup of Ethernet (
eno1
), CAN (can0
,can1
), and radar interfaces with static IPs and bitrates. - CAN Interface Management: Enables and resets CAN interfaces for testing or recovery scenarios.
- ROS System Initialization: Starts the ROS master and launches core robot systems via
start.launch
. - Automated Logging: Records ROS topics in 5-minute segments with rolling retention for efficient debugging and testing.
- Service Management: Deploys and manages systemd services via custom scripts, enabling persistent and automated operation.
Click to expand project structure
rc_bringup/
├── .pre-commit-config.yaml
├── CMakeLists.txt
├── package.xml
├── launch/
├── start.launch
├── visual_interface.launch
├── scripts/
├── auto_start/
├── AutoSetCan.service
├── AutoSetCan.sh
├── AutoSetEno1.service
├── AutoSetEno1.sh
├── AutoSetRadar.service
├── AutoSetRadar.sh
├── control_rosbag_record.service
├── control_rosbag_record.sh
├── create_special_service.sh
├── delete_specific_service.sh
├── rc_start.service
├── rc_start.sh
├── start_ros_master.service
├── start_ros_master.sh
├── BT_visual_interface/
├── Groot.service
├── Groot.sh
├── environment/
├── rabbit.sh
To set up and run this project, follow the steps below. This guide assumes you are using a Linux-based system with ROS Noetic installed.
- Operating System: Ubuntu 20.04 LTS or similar Linux distribution
- ROS Version: ROS Noetic
- Systemd: For managing persistent services
- Netplan (if using modern Ubuntu versions)
- User Permissions: Root or sudo privileges for network and service configuration
-
Clone the repository:
git clone https://github.com/gdut-robocon/rc_bringup.git
-
Build the package using Catkin:
cd rc_bringup catkin build
-
Source the setup file:
source ~/rc_ws/devel/setup.bash
-
(Optional) Install services:
./scripts/auto_start/create_special_service.sh rc_start control_rosbag_record AutoSetCan AutoSetEno1 AutoSetRadar start_ros_master
-
Set environment variables by sourcing
rabbit.sh
:source scripts/environment/rabbit.sh
-
Modify network settings in
AutoSetEno1.sh
,AutoSetCan.sh
, andAutoSetRadar.sh
as needed for your environment. -
Adjust ROS IP and master settings in
start_ros_master.sh
if deploying across multiple machines.
To start the robot system:
roslaunch rc_bringup start.launch
Alternatively, use the service:
sudo systemctl start rc_start
To initialize the ROS communication system:
sudo systemctl start start_ros_master
-
Ethernet (
eno1
):sudo systemctl start AutoSetEno1
-
CAN Interfaces (
can0
,can1
):sudo systemctl start AutoSetCan
-
Radar Interface:
sudo systemctl start AutoSetRadar
To begin logging sensor and control data:
sudo systemctl start control_rosbag_record
Start the visual interface:
sudo systemctl start Groot
-
Create a new service:
./scripts/auto_start/create_special_service.sh <service_name>
-
Delete a service:
./scripts/auto_start/delete_specific_service.sh <service_name>
- Improved Service Management: Add support for dynamic service creation and configuration.
- Enhanced Logging: Implement smarter log rotation and compression.
- Support for Additional Interfaces: Extend support to newer sensor and network types.
- Error Handling and Diagnostics: Add more robust error detection and recovery mechanisms.
- Cross-ROS Compatibility: Ensure compatibility with newer ROS versions (ROS2).
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_bringup.
Released under the MIT license.
Email: jialonglongliu@gmail.com
Project Link: https://github.com/gdut-robocon/rc_bringup