Robot Bringup (ROS2 boot & systemd)
Configures a robot's onboard computer to launch its full ROS2 stack on boot using systemd services, layered launch files, udev rules and health checks.
Dev & CodingAdvanced★ 343⑂ 46AI score 9/10Last updated: Aug 12, 2026
What it does
- systemd units for ROS2: ready-to-adapt unit templates that source the workspace, load DDS env vars (
RMW_IMPLEMENTATION,ROS_DOMAIN_ID,CYCLONEDDS_URI), and add watchdogs, restart policies, rate limiting and cgroup resource caps. - Layered launch composition: hardware → drivers → perception → application launch files plus a top-level
bringup.launch.py, with conditional loading for sim vs. real hardware and robot variants. - Ordered startup: device-presence check scripts, wait-for-node / wait-for-topic utilities, and Nav2 lifecycle-manager orchestration to eliminate boot-time race conditions.
- udev rules: stable symlinks such as
/dev/robot/lidarand/dev/robot/camera_frontinstead of shifting/dev/video0and/dev/ttyUSB*numbering. - Also covers log rotation, graceful shutdown that parks actuators safely, and multi-machine DDS discovery.
Who it's for
- Robotics engineers running ROS2 Humble/Iron/Jazzy on Ubuntu 22.04/24.04 who want power-on-and-go behaviour
- Anyone whose stack works from a shell but fails at boot due to missing devices or node ordering
- Teams hardening field robots with watchdogs, auto-restart and production logging
Examples
- "Write a systemd service so my robot's ROS2 stack starts on boot" → unit file with workspace sourcing, SIGINT-based graceful stop and restart-on-failure.
- "SLAM crashes because it starts before the LiDAR driver is ready" →
ExecStartPredevice checks, a wait-for-topic helper andAfter/Requiresservice dependencies. - "My two USB cameras swap /dev/video numbers after reboot" → udev rules keyed on USB port path or serial number for deterministic symlinks.
· · · Install guide · · ·
Try it now, no install
Paste this into Claude to use the skill without installing anything.
Read the instructions in this file and follow them to help me: https://raw.githubusercontent.com/arpitg1304/robotics-agent-skills/HEAD/skills/robot-bringup/SKILL.md What I want: (describe your task here)
If Claude can't open the link, open it yourself and paste the contents instead.
↓ If it works for you, download the ZIP below and install it. Then it runs on its own — no pasting each time.
Install in the Claude app (no terminal)
- Download the ZIP with the button below.
- In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
- Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Install in Claude Code
Let Claude do it — paste this into Claude Code
Install the skill I found on Claude Skill Mart. Copy the skills/robot-bringup folder from the GitHub repo arpitg1304/robotics-agent-skills into my ~/.claude/skills/robot-bringup/. When it's done, tell me in one line what this skill can do.
Install with a command instead
git clone https://github.com/arpitg1304/robotics-agent-skills.git /tmp/robotics-agent-skills && mkdir -p ~/.claude/skills && cp -r /tmp/robotics-agent-skills/skills/robot-bringup ~/.claude/skills/⚠ This is a third-party skill. Check the source repository before installing.
- Open a terminal and clone the repo:
git clone https://github.com/arpitg1304/robotics-agent-skills.git - Create the skills directory:
mkdir -p ~/.claude/skills - Copy just this skill:
cp -r robotics-agent-skills/skills/robot-bringup ~/.claude/skills/ - Verify that
~/.claude/skills/robot-bringup/SKILL.mdexists. - Restart Claude Code and ask something like "write a systemd service for my ROS2 robot bringup" — the skill triggers automatically.
- Generated unit files and udev rules use placeholder paths (
/home/robot/ros2_ws, packagemy_robot_bringup); edit them for your setup, then runsudo systemctl daemon-reloadandsudo udevadm control --reload-rules.
View source on GitHub ↗License: Apache-2.0