ROS 2 and Vulcanexus Interface Reference¶
This page is the central ROS 2/Vulcanexus interface reference for
open-robin. The workspace is the hardware-agnostic open module: an
intent-driven welding demo that runs on synthetic data with no physical
hardware, MoveIt, or Gazebo. The package names below are the current source of
truth for the documentation and validation commands you will use when
integrating the modules.
Runtime Baseline¶
Item |
Current value |
Evidence |
|---|---|---|
ROS 2 distribution |
Jazzy |
|
Vulcanexus base image |
|
|
ROS workspace |
|
Mounted from |
Compose service |
|
|
Primary setup entry point |
|
Used by the launch and validation commands below. |
FIWARE DDS mapping file |
|
Mounted into Orion-LD as |
DDS discovery requires Orion-LD and the ROS 2 publishers to use the same DDS
domain. The checked-in DDS mapping file uses domain 0, and both Compose
services (orion-ld and vulcanexus) set ROS_DOMAIN_ID=0 so Orion-LD
discovers /robin/telemetry out of the box. If you change one, change all
three. The FIWARE mapping details are documented in
docs/reference/fiware_ngsi_ld_dds_mapping.rst.
Package Inventory¶
Package |
Role |
|---|---|
|
Intent message and skill action definitions for the intent pipeline. |
|
HTTP / NGSI-LD (Orion-LD) to ROS 2 bridge; publishes |
|
Intent-to-skill mission controller; routes |
|
Lifecycle skill: move the arm to home (simulation by default). |
|
Lifecycle skill: execute a weld seam and publish |
|
Lifecycle skill: adjust process parameters (clamped to safe ranges). |
|
Lifecycle skill: request AI welding parameters over HTTP. |
|
Launch orchestrator; |
|
Generic ROBIN ROS 2 messages, services, and actions (telemetry schema + the richer set used by hardware-mode integrations). |
|
ROS bag telemetry aggregator; combines recorded Fronius/geometry topics
into |
|
Hardware-agnostic URDF/xacro and meshes for the cell (UR10e + Fronius torch + Garmo profilometer + table). No nodes. |
Package Layer Diagram¶
graph TD
UI["ROBIN Dashboard"]
API["Process Intelligence API"]
ORION["Orion-LD / NGSI-LD"]
HTTP["welding_http_bridge"]
INTENT["/intents<br/>welding_msgs/msg/Intent"]
SUP["welding_supervisor"]
SKILLS["welding_* skill action servers"]
HW["hardware-mode backends<br/>(adopter-provided)"]
TEL["/robin/telemetry<br/>robin_interfaces/msg/ProcessTelemetry"]
MINTAKA["Mintaka / TROE history"]
UI --> API
API --> ORION
ORION --> HTTP
UI --> HTTP
HTTP --> INTENT
INTENT --> SUP
SUP --> SKILLS
SKILLS -. "use_simulation:=false" .-> HW
SKILLS --> TEL
TEL --> ORION
ORION --> MINTAKA
MINTAKA --> API
Nodes and Executables¶
Package |
Executable or node |
Main interface / purpose |
|---|---|---|
|
|
HTTP server on |
|
|
Subscribes |
|
|
Action |
|
|
Action |
|
|
Action |
|
|
Action |
|
|
Aggregates recorded |
The skills run in simulation by default. A use_simulation:=false hardware
mode delegates to generic interfaces (/move_home, /execute_bead,
/fronius/set_*) that an adopter implements for their own robot and power
source.
Messages¶
welding_msgs/msg¶
Message |
Purpose |
|---|---|
|
Intent bus message: type, JSON data, source, modality, priority, confidence. |
robin_interfaces/msg¶
Message |
Purpose |
|---|---|
|
DDS/FIWARE telemetry snapshot: bead ID, progression, height, width, speed, current, voltage, and cross-sectional area. |
|
Weld geometry, progression, and welder data. |
|
Experiment and plate definitions. |
Actions¶
Action |
Package |
Goal |
|---|---|---|
|
|
Cartesian weld-seam goal (seam_id, weld_speed, wire_feed_rate). |
|
|
Home the arm (use_fast_speed). |
|
|
Adjust a process parameter (name, value, unit). |
|
|
Request AI welding parameters (process_id, mode). |
|
|
Bead / experiment execution targets for hardware-mode integrations. |
Services¶
robin_interfaces provides the generic typed setters and calibration/planning
services used by hardware-mode integrations, including SetFloat32 /
SetInt32 (typed setters, e.g. /fronius/set_*), SetCtwd,
SetTcpMode, FindSurface, CalibrateWireTip, CalibratePlatePlane,
StartWeld, PlanExperiment, ApproveExperimentPlan, ReserveSlots,
and ClearReservedSlots. The supervisor and seam skill use weld/pause
(std_srvs/SetBool).
Core Topics¶
Topic |
Type |
Role |
|---|---|---|
|
|
Operator/dashboard intents into the supervisor. |
|
|
Normalized telemetry to the Orion-LD DDS bridge. |
|
|
Arm pose (home skill owns |
|
|
DOE launch notifications and operator-visible errors. |
ROS 2 to FIWARE Data Path¶
The reusable telemetry integration path is:
ROS 2 source -> /robin/telemetry -> Orion-LD DDS -> NGSI-LD Process entity -> TROE/Mintaka history -> API/dashboard.
In the no-hardware demo welding_seam_skill publishes synthetic
robin_interfaces/msg/ProcessTelemetry on /robin/telemetry;
config-dds.json maps DDS topic rt/robin/telemetry to NGSI-LD entity
urn:ngsi-ld:Process:ros_bridge with attribute urn:robin:processTelemetry.
For a real process, publish the same message from a node fed by your robot/sensor
topics.
Dashboard and API Actions Back to ROS 2¶
The human input path is:
dashboard/API action -> pendingIntent in Orion-LD or direct HTTP -> welding_http_bridge -> /intents -> welding_supervisor -> welding_* skill action server.
welding_http_bridge supports two entry points:
POST /intentfor direct testing or dashboard fallback.Orion-LD subscription notifications when
pendingIntentchanges on Process entities.
welding_supervisor consumes /intents and routes the message to the
appropriate skill action server. The ROS4HRI/ROS4RI role, intent, skill, task,
and mission mapping is documented in
docs/reference/ros4hri_ros4ri_alignment.rst.
Validation Commands¶
These commands are intended for a Linux Docker environment with the
vulcanexus container running.
Build the workspace:
$ docker compose up -d vulcanexus
$ docker exec vulcanexus-bridge bash -lc \
'cd /workspace/ros2_packages && source ws_setup.sh && colcon build --symlink-install'
List current packages:
$ docker exec vulcanexus-bridge bash -lc \
'source /workspace/ros2_packages/ws_setup.sh && ros2 pkg list | grep -E "^(robin_|welding_)" | sort'
Expected package names:
robin_description
robin_interfaces
robin_telemetry
welding_demo
welding_home_skill
welding_http_bridge
welding_manual_skill
welding_msgs
welding_recommendation_skill
welding_seam_skill
welding_supervisor
Inspect key interfaces:
$ docker exec vulcanexus-bridge bash -lc \
'source /workspace/ros2_packages/ws_setup.sh && ros2 interface show robin_interfaces/msg/ProcessTelemetry'
$ docker exec vulcanexus-bridge bash -lc \
'source /workspace/ros2_packages/ws_setup.sh && ros2 interface show welding_msgs/msg/Intent'
Run the no-hardware intent path:
$ docker exec vulcanexus-bridge bash -lc \
'source /workspace/ros2_packages/ws_setup.sh && ros2 launch welding_demo welding_robin_sim.launch.py'
In a second terminal:
$ curl -s -X POST http://localhost:8766/intent \
-H 'Content-Type: application/json' \
-d '{"intent": "START_PROCESS", "data": {"seam_id": "seam_01"}}'
{"status": "published", "intent": "START_PROCESS"}
Validate the DDS topic is visible after a telemetry publisher is active:
$ docker exec vulcanexus-bridge bash -lc \
'source /workspace/ros2_packages/ws_setup.sh && ros2 topic list | grep /robin/telemetry'
Runtime Assumptions and Limits¶
The source-level package and interface inventory can be inspected on any platform. Full ROS 2 runtime validation is expected on Linux with Docker and the Vulcanexus image.
The intent/skill path uses simulation behavior by default; no physical hardware, MoveIt, or Gazebo is required.
Driving real hardware requires adopter-provided nodes that advertise the skills’ hardware-mode interfaces (
/move_home,/execute_bead,/fronius/set_*), launched withuse_simulation:=false.DDS/FIWARE validation depends on aligned ROS/DDS domain IDs and host networking behavior. If Orion-LD does not discover
/robin/telemetry, checkROS_DOMAIN_IDin both Compose services andconfig-dds.json.