Start Here

This page is the entry point for new users, for example students who want to use the CPM Lab for a thesis or a project. It lists what you should know beforehand, gives an overview of the system, and suggests a path through the documentation from your first simulation to an evaluated experiment with real vehicles.

Prerequisites

You do not need to know the CPM Lab, but you should be comfortable with the following topics. The linked tutorials are a good preparation.

  • Linux and the terminal: navigating directories, environment variables, editing files. The CPM Lab runs on Ubuntu.

  • Python or C++: motion planners can be written in either language. Python is the easier start.

  • ROS2 basics: nodes, topics, messages, launch files and parameters. Work through the ROS2 beginner tutorials, at least Beginner: CLI tools and Beginner: Client libraries (writing a publisher and subscriber, creating a package, using colcon).

  • ROS2 concepts used by the lab: Quality of Service and domain IDs.

  • Git: cloning, branches and submodules.

Helpful but not required: basic vehicle kinematics (bicycle model) and the Lanelet2 map format, see Lanelet2 Maps.

System Overview

The CPM Lab is a 1:18 scale testbed for connected and automated vehicles. Small vehicles, the muCars, drive on a track in the lab. A camera on the ceiling, the indoor positioning system, measures their poses. Your motion planner computes commands for the vehicles. Everything also works in simulation, so you can develop on your own computer and use the lab only for the final experiments.

        ---
config:
  layout: elk
  startOnLoad: false

---
flowchart TD
   subgraph UI [User interface]
      CC[Control Center in RViz<br/>or Lichtblick]
   end
   subgraph LAB [Lab domain, ROS_DOMAIN_ID 21]
      CF[Control flow]
      MAP[Map server]
      IPS[Indoor positioning system]
      V[muCars or<br/>simulated vehicles]
      REC[Experiment recorder]
   end
   subgraph PLAN [Planner domain, ROS_DOMAIN_ID 1]
      HLC[Your motion planner]
   end
   BR[Bridge]

   CC -->|services| CF
   CF -.->|starts| MAP
   CF -.->|starts| IPS
   CF -.->|starts| V
   CF -.->|starts| BR
   CF -.->|starts| REC
   CF -.->|starts| HLC
   IPS -->|observations| V
   V -->|states| BR
   MAP -->|map| BR
   BR -->|states, map, triggers| HLC
   HLC -->|commands| BR
   BR -->|commands| V
    

Components of the CPM Lab and their ROS2 domains

The most important ideas:

Learning Path

Follow these steps in order. Each step builds on the previous one.

  1. Install the CPM Lab on your computer: Install from Debian Packages, or use the Docker Images. On Windows or macOS, follow the Student Setup. If you want to change the CPM Lab itself, use Building from Source instead.

  2. Run your first simulation with a built-in motion planner: First Simulation.

  3. Understand how the lab runs: Running the Lab, Understanding the Domain IDs and Understanding the Motion Planner.

  4. Write your own motion planner: Your First Motion Planner. Look up the messages, units and frames in the Interface Reference, the map in Lanelet2 Maps and the vehicle limits in Vehicle Limits and Simulation.

  5. Record and evaluate your simulation runs: Recording and Evaluating Experiments and Evaluation Metrics and Own Analyses.

  6. Drive real vehicles in the lab: Running Your Planner in the Lab and Experiments with Real Vehicles.

  7. Develop efficiently: Development Workflow.

The Command Reference collects all commands for the daily use, the Glossary explains the terms used in this documentation, and the Troubleshooting Guide helps when something does not work. Questions? See Getting Help and FAQ.