-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathrobotics-demo-ubuntu24-x86_64.yml
More file actions
176 lines (157 loc) · 4.8 KB
/
robotics-demo-ubuntu24-x86_64.yml
File metadata and controls
176 lines (157 loc) · 4.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# Robotics AI Suite: Visual Demo Image Template
# Ubuntu 24.04 LTS + ROS2 Jazzy + Turtlesim + rqt tools
#
# Minimal image for running visual ROS2 demos in a QEMU VM.
# Includes turtlesim, rqt_graph, rqt_plot, and X11 forwarding support.
#
# Usage:
# sudo -E ./os-image-composer build image-templates/robotics-demo-ubuntu24-x86_64.yml
#
# VM prerequisites:
# sudo apt install -y qemu-system-x86 ovmf
# cp /usr/share/OVMF/OVMF_CODE_4M.fd .
# cp /usr/share/OVMF/OVMF_VARS_4M.fd .
#
# VM launch:
# qemu-system-x86_64 -machine q35 -enable-kvm -cpu host -smp 4 -m 4096 \
# -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE_4M.fd \
# -drive if=pflash,format=raw,file=OVMF_VARS_4M.fd \
# -drive file=robotics-demo-ubuntu24-24.04.raw,format=raw,if=virtio \
# -device virtio-net-pci,netdev=net0 \
# -netdev user,id=net0,hostfwd=tcp::2222-:22 \
# -nographic
#
# Connect with X11 forwarding (replace <user> with your configured user):
# ssh -X -p 2222 <user>@localhost
#
# ROS2 is auto-sourced on login. If needed manually:
# source /opt/ros/jazzy/setup.bash
#
# Run demos:
# # Demo 1: Turtlesim — visual turtle control with arrow keys
# ros2 run turtlesim turtlesim_node &
# ros2 run turtlesim turtle_teleop_key
#
# # Demo 2: rqt_graph — live node/topic graph (refresh to see connections)
# ros2 run rqt_graph rqt_graph &
#
# # Demo 3: rqt_plot — real-time data chart (move turtle to see updates)
# ros2 run rqt_plot rqt_plot /turtle1/pose/x /turtle1/pose/y /turtle1/pose/theta &
#
# # Demo 4: Talker/Listener — add more nodes to the graph
# ros2 run demo_nodes_cpp talker &
# ros2 run demo_nodes_cpp listener &
# AI-searchable metadata for template discovery
metadata:
description: Minimal ROS2 Jazzy demo image with visual tools (turtlesim, rqt) for QEMU VM testing
use_cases:
- Visual ROS2 demos in QEMU virtual machines
- Turtlesim keyboard-controlled robot simulation
- rqt_graph node/topic visualization
- rqt_plot real-time data charting
- ROS2 talker/listener pub/sub testing
- X11 forwarding GUI demos over SSH
keywords:
- robotics
- ros2
- jazzy
- turtlesim
- rqt
- demo
- qemu
- vm
- x11
- visualization
- ubuntu
image:
name: robotics-demo-ubuntu24
version: "24.04"
target:
os: ubuntu
dist: ubuntu24
arch: x86_64
imageType: raw
# 12GiB is sufficient for this minimal demo image
disk:
name: robotics-demo
artifacts:
- type: raw
compression: gz
size: 12GiB
partitionTableType: gpt
partitions:
- id: boot
type: esp
flags:
- esp
- boot
start: 1MiB
end: 513MiB
fsType: fat32
mountPoint: /boot/efi
mountOptions: umask=0077
- id: rootfs
type: linux-root-amd64
start: 513MiB
end: "0"
fsType: ext4
mountPoint: /
mountOptions: defaults
packageRepositories:
# ROS2 Jazzy repository
- codename: "noble"
url: "http://packages.ros.org/ros2/ubuntu"
pkey: "https://raw.githubusercontent.com/ros/rosdistro/master/ros.key"
component: "main"
systemConfig:
name: robotics-demo
description: Intel Robotics AI Suite - Visual Demo (Turtlesim + rqt)
immutability:
enabled: false
packages:
# Base system
- ubuntu-minimal
- systemd
- systemd-resolved
- systemd-boot
- openssh-server
- network-manager
- sudo
- curl
- vim
# Boot/initramfs (required for UKI)
- dracut-core
- cryptsetup-bin
# X11 forwarding support (required for GUI over SSH)
- xauth
- x11-apps
# ROS2 Jazzy Core
- ros-jazzy-ros-base
- ros-jazzy-rmw-cyclonedds-cpp
# Visual demo packages
- ros-jazzy-turtlesim
- ros-jazzy-rqt
- ros-jazzy-rqt-graph
- ros-jazzy-rqt-plot
# Demo nodes (talker/listener)
- ros-jazzy-demo-nodes-cpp
- ros-jazzy-demo-nodes-py
kernel:
version: "6.17"
cmdline: "console=ttyS0,115200 console=tty0 loglevel=7"
packages:
- linux-image-generic-hwe-24.04
configurations:
# ROS2 environment setup
- cmd: "echo 'source /opt/ros/jazzy/setup.bash' >> /etc/bash.bashrc"
- cmd: "echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> /etc/bash.bashrc"
# Enable required services
- cmd: "systemctl enable NetworkManager"
- cmd: "systemctl enable ssh"
# Fix SSH X11 forwarding (IPv6 socket allocation fails in QEMU)
- cmd: "sh -c \"mkdir -p /etc/ssh/sshd_config.d && printf 'AddressFamily inet\\n' > /etc/ssh/sshd_config.d/10-addressfamily.conf\""
# Disable IPv6 (avoids DNS/connection timeouts in VM environments)
- cmd: "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.d/99-disable-ipv6.conf"
- cmd: "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.d/99-disable-ipv6.conf"
# Set hostname
- cmd: "echo 'robotics-demo' > /etc/hostname"