Claude Skill MartBrowse skillsQuick linesLearn by videoTerminal guideWhat is a Skill?
Back to list

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 & CodingAdvanced34346AI 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/lidar and /dev/robot/camera_front instead of shifting /dev/video0 and /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

  1. "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.
  2. "SLAM crashes because it starts before the LiDAR driver is ready" → ExecStartPre device checks, a wait-for-topic helper and After/Requires service dependencies.
  3. "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)
  1. Download the ZIP with the button below.
  2. In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
  3. Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Download 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.

  1. Open a terminal and clone the repo: git clone https://github.com/arpitg1304/robotics-agent-skills.git
  2. Create the skills directory: mkdir -p ~/.claude/skills
  3. Copy just this skill: cp -r robotics-agent-skills/skills/robot-bringup ~/.claude/skills/
  4. Verify that ~/.claude/skills/robot-bringup/SKILL.md exists.
  5. Restart Claude Code and ask something like "write a systemd service for my ROS2 robot bringup" — the skill triggers automatically.
  6. Generated unit files and udev rules use placeholder paths (/home/robot/ros2_ws, package my_robot_bringup); edit them for your setup, then run sudo systemctl daemon-reload and sudo udevadm control --reload-rules.
View source on GitHubLicense: Apache-2.0