Skip to content

gdut-robocon/rc_bringup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


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 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.

Key Features

  • 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.

(back to top)

Built With

  • ROS
  • CMake

(back to top)

📁 Project Structure

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

(back to top)

🚀 Getting Started

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.

Prerequisites

  • 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

Installation

  1. Clone the repository:

    git clone https://github.com/gdut-robocon/rc_bringup.git
  2. Build the package using Catkin:

    cd rc_bringup
    catkin build
  3. Source the setup file:

    source ~/rc_ws/devel/setup.bash
  4. (Optional) Install services:

    ./scripts/auto_start/create_special_service.sh rc_start control_rosbag_record AutoSetCan AutoSetEno1 AutoSetRadar start_ros_master

Configuration

  • Set environment variables by sourcing rabbit.sh:

    source scripts/environment/rabbit.sh
  • Modify network settings in AutoSetEno1.sh, AutoSetCan.sh, and AutoSetRadar.sh as needed for your environment.

  • Adjust ROS IP and master settings in start_ros_master.sh if deploying across multiple machines.

(back to top)

💻 Usage

Launch the Main System

To start the robot system:

roslaunch rc_bringup start.launch

Alternatively, use the service:

sudo systemctl start rc_start

Start ROS Master

To initialize the ROS communication system:

sudo systemctl start start_ros_master

Configure Network Interfaces

  • Ethernet (eno1):

    sudo systemctl start AutoSetEno1
  • CAN Interfaces (can0, can1):

    sudo systemctl start AutoSetCan
  • Radar Interface:

    sudo systemctl start AutoSetRadar

Start Data Logging

To begin logging sensor and control data:

sudo systemctl start control_rosbag_record

Visual Interface (Groot)

Start the visual interface:

sudo systemctl start Groot

Manage Services

  • 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>

(back to top)

🗺️ Roadmap

  • 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.

(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

(back to top)

Top contributors:

contrib.rocks image

🎗 License

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

(back to top)

📧 Contact

Email: jialonglongliu@gmail.com

Project Link: https://github.com/gdut-robocon/rc_bringup

(back to top)

reference

GitHub - rm-controls/rm_bringup

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published