Live Stream Receiver icon Live Stream Receiver — Play live web video and audio streams inside ARC from Chrome/Firefox, streaming directly to ARC camera control; network configuration may be needed. Try it →
 
ROS 2

ROS 2 by Open Robotics

Synthiam ARCx ROS 2 Connector adds browser-based control, drag-and-drop skills, voice, vision and AI to ROS 2 robots
Connection Type
Network (rosbridge WebSocket)
Number of Servos
Varies
Audio Support
No
Camera Support
Yes
UARTs
Varies
I2C Support
No
ADC Ports
Varies
Digital Ports
Varies
A ROS 2 mobile robot with lidar connected to a friendly Synthiam ARCx control dashboard
ROS 2 + Synthiam ARCx

ROS 2 and ARCx, better together

ROS 2 and Synthiam ARCx are two robotics platforms, each strong in its own area. ROS 2 brings navigation, mapping and motion planning. ARCx brings an interface anyone can use: drive, program, talk to and share a ROS 2 robot from a web browser, with drag-and-drop robot skills instead of terminals, build systems and launch files.

ROS 2 is not an EZB, so why is it on this list? Because Synthiam makes it compatible. The ROS 2 Connector robot skill for ARCx (and the ROS2 Connector for ARC) bridges every part of a Synthiam project to ROS 2 topics and services. A ROS 2 robot becomes a Synthiam robot: the same joysticks, cameras, speech, scripts, AI and custom control screens that work with an EZB work with ROS 2. We recommend ARCx: it runs on Windows, Linux and Raspberry Pi, is used from any web browser, and has the most complete ROS 2 bridge we make.

Meet the platform

What is ROS 2?

ROS (the Robot Operating System) is not really an operating system. It is a large, open-source collection of libraries, tools and conventions for building robot software. It began in 2007 at Willow Garage and grew into a widely used robotics middleware in research and industry. ROS 2 is its ground-up redesign, built on the industrial DDS communication standard, with real-time support, better security and multi-robot networking. Open Robotics maintains it, and a new distribution ships every May (Humble Hawksbill and Jazzy Jalisco are the current long-term-support releases).

A ROS 2 robot is a graph of small programs called nodes. Nodes publish and subscribe to topics (streams of typed messages such as velocity commands, laser scans and camera images), call services (request and reply), and run actions (long-running goals with feedback). On top of that graph sits a large ecosystem of packages, including:

  • Nav2 — autonomous navigation, path planning and obstacle avoidance for mobile robots.
  • SLAM Toolbox and friends — build a map of a building with a lidar and know where the robot is on it.
  • MoveIt 2 — motion planning and collision checking for robot arms.
  • Gazebo — physics simulation, so software can be tested before it touches hardware.
  • RViz 2 — 3D visualization of what the robot senses and plans.
  • Thousands of drivers for lidars, depth cameras, IMUs, motor controllers and robot arms.

Universities, research labs and robotics companies build on ROS 2. If a robot needs to map a warehouse or plan a grasp around obstacles, there is very likely a ROS 2 package that already does it.

ROS 2 at a glance

TypeOpen-source robotics middleware, libraries and tools
Maintained byOpen Robotics and the ROS community
TransportDDS (Data Distribution Service)
LanguagesC++ (rclcpp) and Python (rclpy)
Primary OSUbuntu Linux
StrengthsNavigation, SLAM, arm motion planning, simulation, sensor drivers
Synthiam connectionrosbridge (WebSocket JSON), port 9090 by default
Websiteros.org
The honest truth

Capable, but hard to learn

On the left a frustrated robot builder surrounded by terminal windows; on the right the same person smiling at a tablet dashboard controlling the robot

ROS 2 was designed by engineers for engineers. That suits engineers, and it is why so many people who try it give up before their robot moves. The first weeks are usually spent on the platform, not on the robot.

Ask anyone who has taught ROS 2 in a classroom or started with it at home. The robotics concepts are the easy part. The problems are Linux, the build system, networking and the sheer number of moving pieces between “I have a robot” and “my robot does something.” Most people never get there.

🐧

Linux and the terminal first

ROS 2 is developed and best supported on Ubuntu. Day-to-day work happens in a terminal: sourcing setup files, building workspaces with colcon, and starting everything with ros2 run and ros2 launch.

🧩

Concepts before results

Nodes, topics, services, actions, parameters, QoS profiles, lifecycle nodes, tf2 coordinate frames, URDF robot descriptions, message definitions. All of them come up before the robot drives across the room.

💻

Everything is code

Behaviors are C++ or Python nodes, built with CMake or setuptools, wired up with launch files and YAML parameter files. A small change can mean a rebuild, a re-source and a relaunch.

📡

Networking surprises

DDS discovery, domain IDs, multicast over Wi-Fi and mismatched QoS settings cause some of the most common ROS 2 problems: messages that silently never arrive, and nodes that cannot see each other.

🖥

No interface for people

RViz and rqt are excellent developer tools, but they are not something you hand to a student, a customer or a family member. ROS 2 has no built-in operator dashboard, so building one is a separate software project.

📅

Constant change

A new distribution every year, each tied to a particular Ubuntu release, with packages that differ between them. Tutorials age quickly, and an upgrade can break a working robot.

Why Synthiam is needed

Synthiam brings ROS 2 to everyone else

A bridge made of friendly interface tiles carrying students, teachers, makers and families from a cliff of complex machinery to a meadow full of robots

Synthiam's mandate is to make robotics accessible to everyone. ROS 2 has a large library of robotics software, but it mostly reaches people who are prepared to become Linux developers first. That leaves out most of the people who would love to build and use robots: students, teachers, artists, makers, small businesses, researchers outside computer science, and families.

Synthiam ARC and ARCx are the bridge. They let ROS 2 handle what it is built for (navigation, mapping, motion planning, drivers) and give everyone else a graphical, point-and-click way to use it. In ARCx a ROS 2 robot is driven with an on-screen joystick or a gamepad, programmed with Blockly, JavaScript or Python, given a voice and ears, taught to recognize faces and colors, connected to AI, and put on a custom touch screen, all without writing a ROS node.

This matters to the ROS community as much as to beginners. Every ROS 2 package becomes useful to a far larger audience. A ROS developer can hand a finished robot to people who will never open a terminal. A company building ROS 2 robots gets a customer-facing interface without writing one. A classroom can use real ROS 2 robots in a single lesson.

Two platforms, each strong in its own area. ROS 2 handles navigation, mapping and motion planning. ARCx handles everything people touch: the interface, programming, voice, vision and AI. You do not have to choose between the two. Keep Nav2, SLAM and MoveIt 2 running exactly as they are, and put ARCx in front of them.

Recommended

Why ARCx is the best way to use ROS 2

ARCx is Synthiam's newest robot software. It runs on the robot's computer, including the same Ubuntu machines and Raspberry Pis that ROS 2 runs on, and is used from any web browser. For ROS 2 users that makes it a natural fit.

🌐

Runs where ROS runs

ARCx runs on Windows 10 and 11 (x64) and on Ubuntu 24.04 LTS for x64 and ARM64, including Raspberry Pi. Put it on the robot beside ROS 2, or on a laptop across the network.

🚫

No ROS install on the ARCx side

The connector talks to rosbridge_server over a WebSocket. ARCx does not need ROS, DDS or matching libraries installed, and it does not care which ROS 2 distribution the robot runs.

📱

A browser is the remote control

Open the robot's ARCx interface on a laptop, tablet or phone. Several people can be connected at once, and closing the browser leaves the robot running.

🔗

The most complete bridge

Fifteen binding types in both directions, plus ROS services that ARCx advertises so a node or behavior tree can ask ARCx to do something and wait for the answer. Custom message types work through JSON templates.

🤖

AI on top of ROS

ARCx is an MCP server, so Claude, Cursor and other AI agents can see, drive and program the robot. Pair that with the Autonomous AI, Chat GPT and Hugging Face robot skills and a ROS 2 robot can hold a conversation and act on it.

🎮

Custom control screens

Design touch-friendly control screens with drag-and-drop Custom UI: buttons, joysticks, sliders, camera views and gauges bound to ROS data. Give your robot an operator panel in minutes, not a web development project.

Under the hood

How ARCx connects to ROS 2

ROS 2 ships an official bridge called rosbridge that exposes topics and services as JSON over a WebSocket. ARCx's ROS 2 Connector is a rosbridge client. Nothing in your ROS 2 graph changes: to ROS, ARCx simply looks like more nodes.

Your ROS 2 graph Nav2, SLAM Toolbox, MoveIt 2, lidar and camera drivers, your own packages
⇄
rosbridge_server Runs on the ROS machine. WebSocket and JSON, port 9090
⇄
ARCx ROS 2 Connector Bindings, services and script commands
⇄
Every ARCx robot skill Joysticks, cameras, speech, vision, AI, scripts, Custom UI, Exosphere
The ARCx ROS 2 Connector window showing live bindings, message counts and the latest value on each topic
The ROS 2 Connector window: every binding with its topic, live message count and latest value, and the services ROS nodes have called.

The connector's window is a live status board. At a glance you can see:

  • Whether the link to rosbridge is up, and how much data is flowing each way.
  • Each binding, its direction (arrows point into ARCx or out to ROS) and its topic.
  • How many messages each binding has handled and the last value it saw, such as the speeds Nav2 is sending on /cmd_vel.
  • Errors on the binding that caused them, in red, with the full message on hover.
  • A log of service calls answered for ROS nodes.

ARCx publishes status variables too (ROSConnected, ROSStatus, ROSLastTopic, ROSLastMessage), so a script or a Custom UI screen can react when the link drops.

Point and click wiring

Bind ARCx to any ROS 2 topic

A binding is one wire between ARCx and one ROS topic. Pick what to bridge, pick the direction, type the topic name. ARCx fills in the right message type and converts units and coordinate frames for you. A typical mobile robot starts with two: movement from /cmd_vel and a laser scan from /scan.

The ROS 2 Connector configuration showing a list of bindings and the settings for the Nav2 movement binding
Eight bindings configured without a line of code. Nav2's /cmd_vel drives the robot through the ARCx movement panel, with a watchdog and dead zone.
What to bridgeROS messageWhat it does for you
Movementgeometry_msgs/TwistSubscribe to /cmd_vel so Nav2 or teleop drives the robot through ARCx's movement panel, or publish what ARCx's joystick, scripts and tracking skills ask for. Speed scaling, dead zone, differential wheel speeds and a stop watchdog are built in.
Servossensor_msgs/JointState or one value per topicMove ARCx servos from ROS joint states, or publish ARCx servo positions as joints, in radians, degrees, servo positions or normalized values.
Lidarsensor_msgs/LaserScanFeed a ROS lidar into ARCx's navigation messaging system for its mapping and navigation skills, or publish ARCx lidar data to ROS.
Posenav_msgs/OdometryShare the robot's position in both directions, optionally with the matching /tf transform that RViz needs. ARCx uses the ROS frame convention, so poses pass straight across.
Navigation statusstd_msgs/StringTell ROS whether ARCx is navigating, paused or stopped.
Camerasensor_msgs/CompressedImagePublish any ARCx camera to ROS, original or with tracking overlays drawn, with frame rate and JPEG quality limits.
Digital, ADC, PWMstd_msgs typesRead and write controller ports, so ROS can switch a relay or read a sensor wired to an EZB.
Distance sensor, batterysensor_msgs/Range, sensor_msgs/BatteryStatePublish ultrasonic distance and battery voltage to ROS.
VariableAnyThe universal escape hatch. Publish anything an ARCx script can compute, or land anything ROS publishes in an ARCx global variable.
Control commandAnyWhen a message arrives, tell any ARCx robot skill to do something: speak, play an animation, start tracking, take a photo.
ScriptAnyRun a JavaScript or Python script on every message, with the message available to the script.
CustomYour own message typesBuild any message from a JSON template filled with ARCx variables, or pick incoming fields apart into variables. Works with message types the connector has never heard of.
Two-way conversation

ROS nodes can call ARCx and wait for the answer

Topics fire and forget. When a ROS 2 behavior tree needs to know the robot has finished speaking, or wants a value back from ARCx, it needs a service. ARCx advertises ROS services on your behalf.

  • Run a control command on any robot skill and return its result. Request fields map to the command's parameters.
  • Run a script and return what it returns.
  • Set or get an ARCx global variable.
  • Any service type works. The response is a JSON template filled with the result and any ARCx variables. std_srvs/srv/Trigger is the default.

ARCx scripts can go the other way too: advertise, publish, subscribe and call ROS services at runtime, and list the topics, services and nodes on the ROS graph.

The Services tab of the ROS 2 Connector with /arc/say and /arc/get_mood services advertised
Two services advertised to ROS 2: /arc/say runs a script, /arc/get_mood returns an ARCx variable.
More than a bridge

Everything Synthiam can do, your ROS 2 robot can do

Once ROS 2 is bound to ARCx's movement panel, servos, sensors and variables, every robot skill in the Synthiam store works with your ROS robot. Drag them onto a workspace and they simply work, because they talk to ARCx and ARCx talks to ROS.

An ARCx workspace with the ROS 2 Connector next to a movement panel being driven by ROS 2 Nav2
An ARCx workspace in the browser: Nav2 on the ROS side is driving ARCx's movement panel live through /cmd_vel.

🎙 Voice

Speech recognition, wake words and text to speech from cloud and offline engines. “Robot, go to the kitchen” becomes a Nav2 goal.

👁 Vision

Face, color, glyph and object tracking on any camera. Publish detections to ROS, or move the robot to follow them.

🎮 Driving

On-screen joysticks, Xbox and PlayStation gamepads, MIDI controllers and keyboards drive the ROS base through the movement panel.

🌎 Remote access

With the Exosphere robot skill, drive your ROS 2 robot from anywhere in a web browser and invite others to use it for telepresence.

🧠 AI

Large language models that see through the camera, talk, and decide what the robot does next using ARCx tools that end in ROS topics.

🧩 Blockly

Students snap blocks together to make a ROS 2 robot speak, drive and react. When they are ready, the same program converts to JavaScript.

💬 Personality

Conversational menus, chatbots and sentiment analysis give a research robot a personality for demos and visitors.

📊 Dashboards

Charts, gauges and Custom UI screens show ROS data to people who will never run ros2 topic echo.

Get started

Connect a ROS 2 robot to ARCx

  1. Install and start rosbridge on the ROS 2 machine. This is the only change on the ROS side.
    sudo apt install ros-$ROS_DISTRO-rosbridge-suite
    ros2 launch rosbridge_server rosbridge_websocket_launch.xml
  2. Install ARCx on the robot or on any computer on the same network. Download ARCx for Windows, Linux or Raspberry Pi.
  3. Add the ROS 2 Connector robot skill. Open Robot Skills, choose the Communication category and add ROS 2 Connector.
  4. Point it at the robot. In the skill's configuration, enter the ROS machine's address and port 9090, then press Connect. Turn on Connect on project load once it works so the robot comes up on its own.
  5. Add bindings. Start with Movement on /cmd_vel and LaserScan on /scan, then add whatever else your robot needs.
  6. Add robot skills. A joystick, a camera, speech, tracking, an AI, a Custom UI screen. Your ROS 2 robot now has a complete user interface.
The Connection tab of the ROS 2 Connector with address, port and auto connect settings
The Connection tab. A full URL override handles rosbridge behind a TLS proxy.

Good to know

  • ROS 2 on Windows through WSL2 or in a container works too: forward port 9090 and connect to the local address.
  • rosbridge has no authentication of its own. Keep it on a trusted network, or put it behind a TLS proxy and use a wss:// URL.
  • Turn on Stop the robot if the link drops so a lost connection never leaves the robot driving.
  • Raise the throttle on a LaserScan binding if a fast lidar saturates a Wi-Fi link.
ARC or ARCx?

Two ways to connect, one clear recommendation

Synthiam makes a ROS 2 connector for both of its robot programming platforms. If you are starting today, choose ARCx. If you already have a Windows ARC project, the ARC connector brings ROS 2 into it.

ARCx + ROS 2 Connector Recommended ARC + ROS2 Connector
Runs onWindows 10/11 x64, Ubuntu 24.04 x64 and ARM64, Raspberry PiWindows
Runs on the robot itselfYes, headless, beside ROS 2 on the same Linux computerOn a Windows PC on the robot or the network
User interfaceAny web browser, several people at onceWindows desktop application
ROS needed on the Synthiam computerNo (rosbridge)No (rosbridge)
Movement, servos, ports, lidar, pose, variables, scriptsYesYes
ROS services that ARCx advertises for nodes to callYes, with control command, script and variable actionsCalls ROS services from scripts
Custom message types from JSON templatesYesNon-standard types exchanged as JSON variables
Store pageROS 2 Connector (ARCx)ROS2 Connector (ARC)

The ARC connector supports ROS 2 Humble, Iron, Jazzy and newer, can show ROS camera topics inside ARC, and is limited to one connector per project. Both connectors need rosbridge_suite running on the ROS 2 machine.

Who benefits

ROS 2 for the classroom, the workshop and the lab

A teacher with students, a hobbyist with a robot arm and a researcher with a mobile robot, all using the same friendly dashboard
  • Educators put real ROS 2 robots in front of students on day one. Students drive, program and experiment in ARCx while the ROS 2 stack runs underneath, and the curious ones can look under the hood later.
  • Makers and hobbyists use the ROS 2 drivers and navigation that came with their robot kit, without first becoming Linux administrators.
  • Researchers keep their ROS 2 research stack and add voice, vision, AI and a demo-ready touch interface for visitors, user studies and funding reviews.
  • Robot companies building on ROS 2 give their customers a polished, configurable interface instead of building and maintaining one.
  • ROS developers prototype interactions fast: wire a topic to a button, a voice command or a script in seconds, with no rebuild.
Questions

Frequently asked questions

Someone has to get the robot's ROS 2 stack running and start rosbridge, which is often already done by the robot's manufacturer or a lab's engineer. After that, using the robot in ARCx needs no ROS knowledge: you pick topics from a form and use robot skills like any other Synthiam robot.

No. ARCx works alongside it. ROS 2 keeps doing navigation, mapping, motion planning and hardware drivers. ARCx adds the user interface, the easy programming, and the growing library of robot skills in the Synthiam store. Many robots do not need ROS at all and use ARCx with an EZB controller, but when a robot already runs ROS 2, ARCx makes it far easier to use.

Any distribution that runs rosbridge_suite. Because ARCx talks rosbridge's JSON protocol rather than linking ROS libraries, it is not tied to a particular ROS 2 release, and upgrading the robot's distribution does not mean upgrading ARCx.

Yes. ARCx runs on Ubuntu 24.04 for x64 and ARM64, the same operating system ROS 2 Jazzy targets. Install both on the robot's computer, connect the ROS 2 Connector to 127.0.0.1:9090, and use ARCx from a browser on any device. ARCx can also run on a separate Windows or Linux computer on the network.

Yes. A Custom binding builds an outgoing message from a JSON template with ARCx variables substituted in, and picks incoming messages apart into ARCx variables with JSON paths. Scripts can also publish any message as JSON. rosbridge needs the message package installed on the ROS machine.

The ARCx ROS 2 Connector has a ROS 1 compatibility mode for robots still running ROS 1 with rosbridge. See the ROS hardware page.

Give your ROS 2 robot a user interface everyone can use

Install ARCx, add the ROS 2 Connector, and turn a ROS 2 robot into a Synthiam robot in minutes.


ARC Pro

Upgrade to ARC Pro

With ARC Pro, your robot is not just a machine; it's your creative partner in the journey of technological exploration.