This repository contains the material for the workshop "Creating Data-Driven Models for Robot Localization Systems using Flowcean" at the International Conference on Indoor Positioning and Indoor Navigation (IPIN) 2025.
If you want to code along, use the tasks notebook.
The solutions notebook lets you run the complete solution.
Now you should have a model that can predict the position of the turtlesim. If you want to see the model in action, follow the instructions below.
We provide a container file for this that includes all dependencies. To run the container, make sure you have Docker installed. This demonstrator requires opening windows for the Simulation and the plotting tool plotjuggler.
Here are some instructions on how to get it to run on different platforms.
Linux
Allow GUI programs running as root on the local machine. This is needed in order to open the simulation and plotjuggler.
xhost +local:root Just run the following command:
docker run -it --rm \
--net=host \
-e DISPLAY=$DISPLAY \
-e QT_X11_NO_MITSHM=1 \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
--device /dev/dri \
ghcr.io/flowcean/ipin2025-workshop/flowcean-turtle:latest \
bash -c "
cd /root/ros2_ws/src/flowcean-ros && \
git pull origin main && \
cd ../.. && \
colcon build --packages-select flowcean_ros && \
source /root/ros2_ws/install/setup.bash && \
(
ros2 run turtlesim turtlesim_node & \
ros2 run turtlesim turtle_teleop_key & \
ros2 run plotjuggler plotjuggler -n & \
ros2 launch flowcean_ros deploy.launch.py
)
"
Now, you should see the turtlesim window and PlotJuggler open on your Windows desktop.
Windows PowerShell with Docker Desktop
By default, Windows does not provide an X server, which means Docker containers cannot directly display graphical windows.
The following steps show you how to enable GUI applications from Docker on Windows.
-
Launch it via XLaunch:
- Select “Multiple windows”
- Set Display number = 0
- Tick “Disable access control” (important, otherwise Docker can’t connect)
- Finish → leave it running in the background (you should see an icon in the tray).
Before running Docker, set the DISPLAY environment variable in your PowerShell session:
$env:DISPLAY="host.docker.internal:0.0"Make sure Docker Desktop is running.
Then you can load the latest docker image and run it with the following command:
docker run -it --rm `
-e DISPLAY=$env:DISPLAY `
-e QT_X11_NO_MITSHM=1 `
ghcr.io/flowcean/ipin2025-workshop/flowcean-turtle:latest `
bash -c "
cd /root/ros2_ws/src/flowcean-ros && \
git pull origin main && \
cd ../.. && \
colcon build --packages-select flowcean_ros && \
source /root/ros2_ws/install/setup.bash && \
(
ros2 run turtlesim turtlesim_node & \
ros2 run turtlesim turtle_teleop_key & \
ros2 run plotjuggler plotjuggler -n & \
ros2 launch flowcean_ros deploy.launch.py
)
"At this point, you should see the turtlesim window and PlotJuggler open on your Windows desktop.
If you want to run the notebook locally, follow these instructions.
-
Clone this repository
git clone https://github.com/flowcean/ipin2025-workshop.git cd ipin2025-workshop -
Create a virtual environment and install the required packages from the
pyproject.toml. The easiest way is by using uv. If you know another way, feel free to use it.Linux
curl -LsSf https://astral.sh/uv/install.sh | shmacOS
curl -LsSf https://astral.sh/uv/install.sh | shWindows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Then create the virtual environment and install the dependencies:
uv sync
Now you can start the tutorial in the tasks.ipynb.
- (Optional) If you want to use VS Code, install the Python and Jupyter extensions.
- Make sure to select the correct Python interpreter (the one from the virtual environment you just created).
- You can check your solutions in the
solutions.ipynb
Now you should have a model that can predict the position of the turtlesim.