Skip to content

Commit 05922ab

Browse files
updated compose files, moved rviz and other gui tools into workspace and added documentation
1 parent bb350d0 commit 05922ab

11 files changed

Lines changed: 161 additions & 136 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
code-server/
1+
code-server/config/
2+
code-server/data/
23
workspace/
34
rviz-config/
45
.env

README.md

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,12 @@
11
# Algorithmic Robots World
22

3-
This repo provides multiple containers to work with Turtlebot4 Robots in [DiscoveryServer Mode](https://turtlebot.github.io/turtlebot4-user-manual/setup/discovery_server.html).
3+
This repo provides multiple containers to work with,
44

5-
This pacakge provides and utilizes following containers
6-
7-
- **Turtlebot4-Discovery**
8-
Provides the discovery service for the simulation
9-
10-
- **Turtlebot4-Rviz**
11-
Provides rviz tools to interact with both simulation and physical robots
12-
13-
- **Turtlebot4-workspace**
14-
Provides a web browser based workspace that can be used to test code on both simulation and physical robots
15-
16-
- **Algorithmic-Robots-Mars-Surface-Simulation**
17-
Provides the Unreal based simulation environment
18-
19-
- **Algorithmic-Robots-Labs**
20-
Provides a Jupyter notebooks based workspace to explore mathematical concepts surrounding robotics
5+
- Turtlebot4 Physical robots
6+
- Simulation environment depicting a Mars surface
7+
- Jupyter Notebook exploring basic concepts
218

9+
[More information on Containers and Usage](./docs/containers.md)
2210

2311
## Install Docker
2412

@@ -32,16 +20,20 @@ On the terminal run the following command to clone the repo
3220
git clone https://github.com/CollaborativeRoboticsLab/algorithmic-robots-world.git
3321
```
3422

35-
Required environmental variable need to be in a `.env` file. An `example.env` file is available. Rename that file to `.env` and update the values as required.
23+
## Configure the parameters
24+
25+
Required environmental variables need to be in a `.env` file. An `example.env` file is available. Rename that file to `.env` and update the values as required.
26+
27+
[More information on Parameters](./docs/parameters.md)
3628

3729

3830
## Start Simulation environment
3931

4032
```bash
4133
cd algorithmic-robots-world
42-
docker compose pull
34+
docker compose -f compose-simulation.yaml pull
4335
xhost +local:root
44-
docker compose up
36+
docker compose -f compose-simulation.yaml up
4537
```
4638

4739
## Start Physical robot environment

code-server/config/config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
bind-addr: 127.0.0.1:8080
22
auth: password
3-
password: 85eb5023a7466516860a5b42
3+
password: bfb3ded6daf3862327550287
44
cert: false

code-server/data/coder-logs/code-server-stderr.log

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ File not found: /usr/lib/code-server/lib/vscode/out/vsda_bg.wasm
22
File not found: /usr/lib/code-server/lib/vscode/out/vsda.js
33
a socket was left hanging
44
a socket was left hanging
5-
[13:23:54] [127.0.0.1][5cdff902][ExtensionHostConnection] Unknown reconnection token (never seen).
6-
[13:23:54] [127.0.0.1][c8500158][ManagementConnection] Unknown reconnection token (never seen).
7-
File not found: /usr/lib/code-server/lib/vscode/out/vsda.js
5+
[15:12:01] [127.0.0.1][588699b5][ManagementConnection] Unknown reconnection token (never seen).
6+
[15:12:02] [127.0.0.1][626fcb12][ExtensionHostConnection] Unknown reconnection token (never seen).
87
File not found: /usr/lib/code-server/lib/vscode/out/vsda_bg.wasm
8+
File not found: /usr/lib/code-server/lib/vscode/out/vsda.js
99
a socket was left hanging
1010
a socket was left hanging
Lines changed: 41 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,41 @@
1-
[2026-03-18T13:08:26.420Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
2-
[2026-03-18T13:08:26.421Z] info Using user-data-dir /root/.local/share/code-server
3-
[2026-03-18T13:08:26.434Z] info Using config file /root/.config/code-server/config.yaml
4-
[2026-03-18T13:08:26.434Z] info HTTP server listening on http://0.0.0.0:8080/
5-
[2026-03-18T13:08:26.434Z] info - Authentication is disabled
6-
[2026-03-18T13:08:26.434Z] info - Not serving HTTPS
7-
[2026-03-18T13:08:26.434Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
8-
[13:10:02]
9-
10-
11-
12-
13-
[13:10:02] Extension host agent started.
14-
[13:10:02] Started initializing default profile extensions in extensions installation folder. file:///root/.local/share/code-server/extensions
15-
[13:10:02] Completed initializing default profile extensions in extensions installation folder. file:///root/.local/share/code-server/extensions
16-
[13:10:03] [127.0.0.1][c8500158][ManagementConnection] New connection established.
17-
[13:10:04] [127.0.0.1][5cdff902][ExtensionHostConnection] New connection established.
18-
[13:10:04] [127.0.0.1][5cdff902][ExtensionHostConnection] <64> Launched Extension Host Process.
19-
[2026-03-18T13:23:43.725Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
20-
[2026-03-18T13:23:43.726Z] info Using user-data-dir /root/.local/share/code-server
21-
[2026-03-18T13:23:43.736Z] info Using config file /root/.config/code-server/config.yaml
22-
[2026-03-18T13:23:43.736Z] info HTTP server listening on http://0.0.0.0:8080/
23-
[2026-03-18T13:23:43.736Z] info - Authentication is disabled
24-
[2026-03-18T13:23:43.736Z] info - Not serving HTTPS
25-
[2026-03-18T13:23:43.736Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
26-
[13:23:52]
27-
28-
29-
30-
31-
[13:23:52] Extension host agent started.
32-
[13:24:12] [127.0.0.1][3803bc89][ManagementConnection] New connection established.
33-
[13:24:13] [127.0.0.1][08dcb9c5][ExtensionHostConnection] New connection established.
34-
[13:24:13] [127.0.0.1][08dcb9c5][ExtensionHostConnection] <53> Launched Extension Host Process.
35-
[2026-03-18T14:04:38.028Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
36-
[2026-03-18T14:04:38.029Z] info Using user-data-dir /root/.local/share/code-server
37-
[2026-03-18T14:04:38.038Z] info Using config file /root/.config/code-server/config.yaml
38-
[2026-03-18T14:04:38.039Z] info HTTP server listening on http://0.0.0.0:8080/
39-
[2026-03-18T14:04:38.039Z] info - Authentication is disabled
40-
[2026-03-18T14:04:38.039Z] info - Not serving HTTPS
41-
[2026-03-18T14:04:38.039Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
42-
[2026-03-18T14:10:38.301Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
43-
[2026-03-18T14:10:38.302Z] info Using user-data-dir /root/.local/share/code-server
44-
[2026-03-18T14:10:38.313Z] info Using config file /root/.config/code-server/config.yaml
45-
[2026-03-18T14:10:38.313Z] info HTTP server listening on http://0.0.0.0:8080/
46-
[2026-03-18T14:10:38.313Z] info - Authentication is disabled
47-
[2026-03-18T14:10:38.313Z] info - Not serving HTTPS
48-
[2026-03-18T14:10:38.314Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
49-
[2026-03-18T14:14:21.589Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
50-
[2026-03-18T14:14:21.590Z] info Using user-data-dir /root/.local/share/code-server
51-
[2026-03-18T14:14:21.600Z] info Using config file /root/.config/code-server/config.yaml
52-
[2026-03-18T14:14:21.600Z] info HTTP server listening on http://0.0.0.0:8080/
53-
[2026-03-18T14:14:21.600Z] info - Authentication is disabled
54-
[2026-03-18T14:14:21.600Z] info - Not serving HTTPS
55-
[2026-03-18T14:14:21.600Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
1+
[2026-03-23T15:05:53.896Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
2+
[2026-03-23T15:05:53.897Z] info Using user-data-dir /root/.local/share/code-server
3+
[2026-03-23T15:05:53.906Z] info Using config file /root/.config/code-server/config.yaml
4+
[2026-03-23T15:05:53.906Z] info HTTP server listening on http://0.0.0.0:8080/
5+
[2026-03-23T15:05:53.906Z] info - Authentication is disabled
6+
[2026-03-23T15:05:53.906Z] info - Not serving HTTPS
7+
[2026-03-23T15:05:53.906Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
8+
[2026-03-23T15:06:28.242Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
9+
[2026-03-23T15:06:28.243Z] info Using user-data-dir /root/.local/share/code-server
10+
[2026-03-23T15:06:28.253Z] info Using config file /root/.config/code-server/config.yaml
11+
[2026-03-23T15:06:28.253Z] info HTTP server listening on http://0.0.0.0:8080/
12+
[2026-03-23T15:06:28.253Z] info - Authentication is disabled
13+
[2026-03-23T15:06:28.253Z] info - Not serving HTTPS
14+
[2026-03-23T15:06:28.253Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
15+
[15:06:41]
16+
17+
18+
19+
20+
[15:06:41] Extension host agent started.
21+
[15:06:41] Started initializing default profile extensions in extensions installation folder. file:///root/.local/share/code-server/extensions
22+
[15:06:41] Completed initializing default profile extensions in extensions installation folder. file:///root/.local/share/code-server/extensions
23+
[15:06:42] [127.0.0.1][588699b5][ManagementConnection] New connection established.
24+
[15:06:42] [127.0.0.1][626fcb12][ExtensionHostConnection] New connection established.
25+
[15:06:43] [127.0.0.1][626fcb12][ExtensionHostConnection] <53> Launched Extension Host Process.
26+
[2026-03-23T15:11:56.179Z] info code-server 4.91.0 fb3e3e1546d571e9973e86482bcd925c1918ec27
27+
[2026-03-23T15:11:56.180Z] info Using user-data-dir /root/.local/share/code-server
28+
[2026-03-23T15:11:56.190Z] info Using config file /root/.config/code-server/config.yaml
29+
[2026-03-23T15:11:56.190Z] info HTTP server listening on http://0.0.0.0:8080/
30+
[2026-03-23T15:11:56.190Z] info - Authentication is disabled
31+
[2026-03-23T15:11:56.190Z] info - Not serving HTTPS
32+
[2026-03-23T15:11:56.190Z] info Session server listening on /root/.local/share/code-server/code-server-ipc.sock
33+
[15:11:59]
34+
35+
36+
37+
38+
[15:11:59] Extension host agent started.
39+
[15:12:05] [127.0.0.1][ba3f522f][ManagementConnection] New connection established.
40+
[15:12:05] [127.0.0.1][cf7a09e9][ExtensionHostConnection] New connection established.
41+
[15:12:05] [127.0.0.1][cf7a09e9][ExtensionHostConnection] <53> Launched Extension Host Process.

compose-physical.yaml

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ services:
22
ar-workspace:
33
image: ghcr.io/collaborativeroboticslab/turtlebot4-workspace:jazzy
44
environment:
5+
- PYTHONUNBUFFERED=1 # GUI related
6+
- DISPLAY # GUI related
7+
- QT_X11_NO_MITSHM=1 # GUI related
8+
- NVIDIA_VISIBLE_DEVICES=all # GUI related
9+
- NVIDIA_DRIVER_CAPABILITIES=all # GUI related
510
- ROS_DOMAIN_ID=${ROBOT_ROS_DOMAIN_ID:-0}
611
- RMW_IMPLEMENTATION=rmw_fastrtps_cpp
712
- ROS_DISCOVERY_SERVER=${ROBOT_ROS_DISCOVERY_SERVER:-127.0.0.1:11811}
@@ -15,23 +20,4 @@ services:
1520
volumes:
1621
- ./workspace:/workspace:rw
1722
- ./code-server/config:/root/.config/code-server:rw
18-
- ./code-server/data:/root/.local/share/code-server:rw
19-
20-
ar-rviz:
21-
image: ghcr.io/collaborativeroboticslab/turtlebot4-rviz:jazzy
22-
command: ["ros2", "launch", "turtlebot4_viz", "view_navigation.launch.py", "use_sim_time:=true"]
23-
environment:
24-
- PYTHONUNBUFFERED=1 # GUI related
25-
- DISPLAY # GUI related
26-
- QT_X11_NO_MITSHM=1 # GUI related
27-
- NVIDIA_VISIBLE_DEVICES=all # GUI related
28-
- NVIDIA_DRIVER_CAPABILITIES=all # GUI related
29-
- ROS_DOMAIN_ID=${ROBOT_ROS_DOMAIN_ID:-0}
30-
- RMW_IMPLEMENTATION=rmw_fastrtps_cpp
31-
- ROS_DISCOVERY_SERVER=${ROBOT_ROS_DISCOVERY_SERVER:-127.0.0.1:11811}
32-
- ROS_SUPER_CLIENT=1
33-
restart: unless-stopped
34-
privileged: true
35-
ipc: host
36-
volumes:
37-
- /tmp/.X11-unix:/tmp/.X11-unix:rw # GUI related
23+
- ./code-server/data:/root/.local/share/code-server:rw

compose.yaml renamed to compose-simulation.yaml

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,23 @@ services:
77
- QT_X11_NO_MITSHM=1 # GUI related
88
- NVIDIA_VISIBLE_DEVICES=all # GUI related
99
- NVIDIA_DRIVER_CAPABILITIES=all # GUI related
10-
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-0}
10+
- ROS_DOMAIN_ID=${SIM_ROS_DOMAIN_ID:-0}
1111
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
1212
restart: unless-stopped
1313
privileged: true
1414
network_mode: host
1515
volumes:
1616
- /tmp/.X11-unix:/tmp/.X11-unix:rw # GUI related
1717

18-
ar-rviz:
19-
image: ghcr.io/collaborativeroboticslab/rviz:jazzy
20-
command: ["rviz2"]
18+
ar-workspace:
19+
image: ghcr.io/collaborativeroboticslab/turtlebot4-workspace:jazzy
2120
environment:
2221
- PYTHONUNBUFFERED=1 # GUI related
2322
- DISPLAY # GUI related
2423
- QT_X11_NO_MITSHM=1 # GUI related
2524
- NVIDIA_VISIBLE_DEVICES=all # GUI related
2625
- NVIDIA_DRIVER_CAPABILITIES=all # GUI related
27-
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-0}
28-
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
29-
restart: unless-stopped
30-
privileged: true
31-
network_mode: host
32-
volumes:
33-
- /tmp/.X11-unix:/tmp/.X11-unix:rw # GUI related
34-
- /rviz-config:/root/.config/rviz:rw
35-
36-
ar-workspace:
37-
image: ghcr.io/collaborativeroboticslab/turtlebot4-workspace:jazzy
38-
environment:
39-
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-0}
26+
- ROS_DOMAIN_ID=${SIM_ROS_DOMAIN_ID:-0}
4027
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
4128
restart: unless-stopped
4229
tty: true

docs/containers.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Containers and Usage
2+
3+
This repo uses following containers
4+
5+
- **Turtlebot4-workspace**
6+
- link [ghcr.io/collaborativeroboticslab/turtlebot4-workspace:jazzy](ghcr.io/collaborativeroboticslab/turtlebot4-workspace:jazzy)
7+
- Provides a web browser based workspace that can be used to test code on both simulation and physical robots. Contains ROS2 Jazzy Desktop with GUI tools for debugging. Use this to do development work
8+
9+
- **Algorithmic-Robots-Mars-Surface**
10+
- link [ghcr.io/collaborativeroboticslab/algorithmic-robots-mars-surface:jazzy](ghcr.io/collaborativeroboticslab/algorithmic-robots-mars-surface:jazzy)
11+
- Provides the Unreal based simulation environment to work with when Physical robots are inaccessible.
12+
13+
- **Algorithmic-Robots-Labs**
14+
- link [ghcr.io/collaborativeroboticslab/algorithmic-robots-labs:latest](ghcr.io/collaborativeroboticslab/algorithmic-robots-labs:latest)
15+
- Provides a Jupyter notebooks based workspace to explore mathematical concepts surrounding robotics
16+
17+
18+
## Simulation System
19+
20+
This system can be started with `compose-simulation.yaml` file. This starts a simulation environment and a browser based vs-code environment for experiments using following containers
21+
22+
- `Algorithmic-Robots-Mars-Surface` container
23+
- `Turtlebot4-workspace` container
24+
25+
Update the following environment variables to isolate the ROS environment
26+
27+
```bash
28+
SIM_ROS_DOMAIN_ID=0
29+
```
30+
31+
Use the following commands to start the system
32+
33+
```bash
34+
cd algorithmic-robots-world
35+
docker compose -f compose-simulation.yaml pull
36+
xhost +local:root
37+
docker compose -f compose-simulation.yaml up
38+
```
39+
40+
## Start Physical robot environment
41+
42+
This system can be started with `compose-physical.yaml` file. This starts a browser based vs-code environment for experiments and connects with the Discovery server in the Turtlebot4 robot. It uses following containers
43+
44+
- `Turtlebot4-workspace` container
45+
46+
Update the following environment variables to isolate the ROS environment
47+
48+
```bash
49+
ROBOT_ROS_DOMAIN_ID=0
50+
ROBOT_ROS_DISCOVERY_SERVER=10.42.0.1:11811
51+
```
52+
53+
Use the following commands to start the system.
54+
55+
```bash
56+
cd algorithmic-robots-world
57+
docker compose -f compose-physical.yaml pull
58+
xhost +local:root
59+
docker compose -f compose-physical.yaml up
60+
```
61+
62+
## Start Algorithmic Robotics Labs
63+
64+
This system can be started with `compose-jupyter.yaml` file. This starts a browser based jupyter environment for tutorial activities. It uses following container
65+
66+
- `Algorithmic-Robots-Labs` container
67+
68+
```bash
69+
cd algorithmic-robots-world
70+
docker compose -f compose-jupyter.yaml pull
71+
xhost +local:root
72+
docker compose -f compose-jupyter.yaml up
73+
```
74+
75+

docs/parameters.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Parameters
2+
3+
## SIM_ROS_DOMAIN_ID (default : 0)
4+
5+
This parameter helps to isolate the simulation environment from other laptops and similar environments in the same network. If the simulation shows unexpected behaviours and movements, this could be because there is another system with same SIM_ROS_DOMAIN_ID. Make sure to keep this unique.
6+
7+
8+
## ROBOT_ROS_DOMAIN_ID (default : 0)
9+
10+
This parameter helps to isolate the robot and laptop environment from other laptops and similar robots in the same network. If the robot shows unexpected behaviours and movements, this could be because there is another system with same ROBOT_ROS_DOMAIN_ID. Make sure to keep this unique.
11+
12+
13+
## ROBOT_ROS_DISCOVERY_SERVER=10.42.0.1:11811
14+
15+
This parameter indicates where the ros2 fastdds discovery server is. In the context of these labs, the fastdds discovery server lives in each robot. When you pick a robot, find the IP address of that robot and update this parameter. Keep the port as 11811.

example.env

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
ROS_DOMAIN_ID=0
2-
ROBOT_ROS_DOMAIN_ID=10
1+
SIM_ROS_DOMAIN_ID=0
2+
ROBOT_ROS_DOMAIN_ID=0
33
ROBOT_ROS_DISCOVERY_SERVER=10.42.0.1:11811

0 commit comments

Comments
 (0)