Indoor Positioning System
This section outlines the setup of the indoor positioning system (IPS) of the CPM Lab: the computation unit, the
camera and its calibration. The LEDs on the muCars are part of the muCar hardware, see the
CPM Lab 1.0 documentation.
Computation Unit
You have the choice of using a dedicated computation unit for the IPS or run the IPS as a component on the central workstation.
The IPS in the CPM Lab ROS2 project is officially supported on the following platforms:
Seeed Studio Jetson Orin NX 16GB ➝ JetPack 5.1.5 or 6.2
Intel NUC 9 Extreme ➝ Ubuntu 24.04
JetPack 6 is based on Ubuntu 22.04 and JetPack 5 on Ubuntu 20.04, for which no full CPM Lab support exists (see Supported Platforms); build the IPS from source there. On the central workstation, the IPS runs with the Debian packages or the desktop image.
Warning
Testing on the Raspberry Pi 5 with 8GB RAM showed insufficient computation power to support the IPS.
Helpful links to setup the Jetson:
Camera
The CPM Lab uses the Basler cameras for visual tracking in the indoor positioning system. This module of the CPM Lab is responsible for capturing images of the testbed and provides global position information of the muCars.
The camera is mounted on the ceiling, the ideal mounting position is in the center of the room oriented top-down to capture the entire testbed area. Given limited ceiling clearance, the camera can be mounted at an angled position as high up as the rooms allows provide the best view of the testbed.
The camera should be mounted securely to avoid vibrations or misalignment over time. A possible fastening solution is to use item aluminum profiles and a joint like the ball joint:
3D printed adapter to mount the camera to the ball joint top plate
The IPS camera on its ceiling mount with ball joint and 3D printed adapter
A second possible mounting solution would be to use a QR camera mounting plate, which can be attached to the ceiling and allows for easy mounting and dismounting of the camera.
3D printed adapter to mount the camera to the QR plate
The camera is connected to the central workstation (or the computation unit) via a USB 3 cable and is powered over USB, so no additional power supply is required. For cables longer than 3 m, use an active USB 3 cable.
Minimal requirements for the camera:
Support for mono image capture
Support for global shutter
Support far at least 50Hz frame rate in software trigger mode
List of known Basler camera models used:
Basler ace 2 a2A2448-75ucBAS
Basler ace acA2040-90umNIR
Pylon
The CPM Lab ROS2 project may utilize the Basler Pylon library for interfacing with Basler cameras. Follow the steps below to set up the Basler Pylon library on your system using .deb files:
Basler Pylon Software Suite: Download and install the appropriate .deb package for your system architecture from the official Basler website:
cd <download-directory>
tar -xvzf pylon_*_debs.tar.gz
sudo apt install libgl1-mesa-dri libgl1-mesa-glx libxcb-xinerama0 libxcb-xinput0
sudo apt-get install ./pylon_*.deb ./codemeter*.deb
To verify that the Basler Pylon library is successfully installed, you can check the Pylon Viewer. With the following commands, the Pylon Viewer should open, and you should be able to access and configure your connected Basler camera.
Open a terminal enter the Pylon install directory and run the Pylon Viewer:
cd /opt/pylon/bin
./pylonviewer
Calibration
The IPS needs the intrinsic parameters of the camera and its pose above the floor, computed with cpm_calibrate
from images of a checkerboard on the floor. See IPS Camera Calibration.