This guide provides comprehensive details on how to install and configure the DRIVERLESS2 enviroment, along with an overview of its repository node structure and launch file organization. For a more detailed explanation of the code structure and functionality of each node, please refer to the DRIVERLESS2 documentation.
-
Ensure that you have Ubuntu 22.04 LTS correctly installed.
-
Verify that git is installed in your environment. You can check this by running:
git --version
-
Create your workspace environment:
Create a workspace directory for your ROS packages. You can do this by running:
mkdir -p /ws/src
-
Clone the repository:
cd /ws/src git clone git@github.com:ARUSfs/DRIVERLESS2
Also, clone the following auxiliary repository:
git clone git@github.com:ARUSfs/ARUSSim
This repository contains the simulation environment and additional tools required for the project.
-
ROS2 Humble installation (optional):
Ensure you have ROS2 Humble installed by the following command:
ls ~/opt/ros/
If you don't see
humble
in the list, you can install it by selecting the first option from theupdate_dependencies.sh
script:cd /ws/src/DRIVERLESS2 # Select option 1 ./update_dependencies.sh
This script will automatically install the necessary for ROS2 Humble.
If you already have ROS2 Humble installed, please make sure to have the following command line in your
~/.bashrc
file:source /opt/ros/humble/setup.bash
If you don't have it, add it by running:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc
-
Install dependencies:
cd /ws/src/DRIVERLESS2 # Select option 2 ./update_dependencies.sh
This script will automatically install all the dependencies required for the project.
-
Setup and build the workspace:
# Setup the workspace echo "source ~/ws/install/setup.bash" >> ~/.bashrc source ~/.bashrc # Build the workspace cd /ws colcon build
This command will compile all the packages in your workspace and create the necessary build files.
The repository is divided into several packages, each addressing a specific functionality to maintain modularity and scalability in the autonomous car system. The packages include:
- car_state: manages vehicle sensor data and state estimation.
- common: provides shared utilities and all launch files for the project.
- control: implements algorithms and controllers responsible for vehicle maneuvering.
- interfaces: facilitates communication between different system components, such as CAN, EPOS4 and simulation interfaces.
- perception: processes sensor inputs for LiDAR data.
- planning: contains path planning and decision-making algorithms for navigation.
- slam: offers simultaneous localization and mapping (SLAM) capabilities.
- visualization: provides tools for visualizing and debugging system states.
Additionally, each package follows a standard structure to maintain consistency:
- config/: contains configuration files and parameters, if needed (<package_name>_config.yaml).
- include/<package_name>: holds header files (.h and .hpp) used by the package.
- launch/: includes the launch file (<package_name>_launch.py) for starting the package nodes.
- src/: contains the core code files (<package_name>_node.cpp).
- CMakeLists.txt: the CMake build configuration file for the package.
- package.xml: the package manifest file that defines the package's metadata and dependencies.
The main launch files are located in the common/common_meta/launch
directory. These files are responsible for starting the various nodes and components of the system. The main launch files include:
- simulation_launch.py: launches the simulation environment for testing and development.
- inspection_launch.py: launches the inspection controller for the inspection event.
- acceleration_launch.py: launches all necessary nodes for the acceleration event.
- skidpad_launch.py: launches all necessary nodes for the skidpad event.
- autocross_launch.py: launches all necessary nodes for the autocross event.
- trackdrive_launch.py: launches all necessary nodes for the trackdrive event.
- record_launch.py: launches the rslidar and can_interface nodes for recording data.