Official ROS2 software stack for the VANTTEC Self-Driving Vehicle (SDV)
This repository contains all modules required to operate the VANTTEC autonomous vehicle,
including acceleration, steering, braking, lighting, LiDAR processing, IMU fusion,
localization, mapping, and path planning.
Getting Started β’
Setup β’
Launching the System β’
Sensors β’
Mapping β’
Localization β’
Path Planning β’
SDV Control β’
CAN Communication β’
Recording Bags
- Linux distribution (Ubuntu 22.04 recommended)
- ROS 2 Humble
- At least 8 GB RAM with 12GB of swap recommended
Run the environment setup script:
source setup.sh --target local --syncInisde of docker directory.
sudo docker compose buildThe -d flag ensures the container runs in detached mode (in the background).
sudo docker compose up -dCommon error: invalid subinterface vlan name or similar, Just comment out all the lines inside Docker Compose, lidar_net: and its content, just apply on personal computers if you won't use the LiDAR.
Use zsh to start a shell inside the container.
docker exec -it sdv_container zshThe repository is mounted inside the container at /workspace.
If you are not already in /workspace, run:
cd /workspaceRun the setup/build script:
chmod +x setup.sh
source setup.sh --target docker --shell zsh --syncNote: The argument sync is for update the repositories of navpilot (do git pull).
If you need to compile everything from zero, list of all packages:
colcon build --packages-select pointcloud_rotation
colcon build --packages-select lidar_imu_sync
colcon build --packages-select robot_description
colcon build --packages-select vectornav_msgs
colcon build --packages-select vectornav
colcon build --packages-select velodyne_msgs
colcon build --packages-select velodyne_driver
colcon build --packages-select velodyne_laserscan
colcon build --packages-select velodyne_pointcloud
colcon build --packages-select velodyne
colcon build --packages-select lio_sam
colcon build --packages-select ndt_omp_ros2
colcon build --packages-select lidar_localization_ros2
colcon build --packages-select sensors_launch
colcon build --packages-select sdv_msgs
colcon build --packages-select sdv_control
colcon build --packages-select sdv_can
colcon build --packages-select sdv_velocity
colcon build --packages-select mrt_cmake_modules
colcon build --packages-select polygon_msgs
colcon build --packages-selectp olygon_rviz_plugins
colcon build --packages-select polygon_utils
colcon build --packages-select obstacles_information_msgs
colcon build --packages-select traffic_information_msgs
colcon build --packages-select pointcloud_clustering
colcon build --packages-select lanelet2_core
colcon build --packages-select lanelet2_io
colcon build --packages-select lanelet2_maps
colcon build --packages-select lanelet2_projection
colcon build --packages-select lanelet2_traffic_rules
colcon build --packages-select lanelet2_routing
colcon build --packages-select lanelet2_validation
colcon build --packages-select waypoints_routing
colcon build --packages-select path_planning_dynamicThis repository implement many software of this another repository:
π NavPilot Framework (Armando Genis, vanttec member) https://github.com/armando-genis/navpilot-framework
Start the full SDV stack:
source launch.shInside of docker
source launch.sh --shell zshThis script launches multiple modules via tmux, so each subsystem runs in its own terminal panel.
Some extras commands
ros2 launch sensors_launch lidar_imu.launch.pyInitialize mapping processes:
ros2 launch /workspace/src/mapping_modules/launcher/mapping.launch.pyRun localization modules:
ros2 launch /workspace/src/localization_modules/launch/localization.launch.pyros2 launch navpilot-framework/src/path_planning/launch/planning_obstacles.launch.pyLaunch the control node:
ros2 launch sdv_control control_launch.pyStart the CAN node:
ros2 run sdv_can sdv_can_nodeSteering Services (provided by CAN)
Set steering control mode:
ros2 service call /sdv/steering/set_mode sdv_msgs/srv/Uint8 "{data: 1}"Reset the steering encoder:
ros2 service call /sdv/steering/reset_encoder std_srvs/srv/Empty "{}"Record Rosbag (MCAP format)
ros2 bag record --storage mcap --all --output vanttec_sdv_localization_20250623Play Rosbag
rviz2 -d /workspace/src/localization_modules/launch/localization.rviz
ros2 bag play vanttec_sdv_localization_20250623 -s mcapRead more about the official documentation here.
