HTTP Server (Custom) icon HTTP Server (Custom) — HTTP server for ARC serving HTML/CSS/PNG/JPG from ARC/HTTP Server Root; supports AJAX tags (ez-move, ez-script, ez-camera) to control the robot. Try it →
 
Irobot Roomba Movement Panel Robot Skill

Irobot Roomba Movement Panel

by Irobot

Movement panel for iRobot robots: drive, read sensors, track position, run scripts, play tunes, and connect via serial, Wi-Fi, or ROS 2

Requires ARCx v4 (Updated 10/29/2026)
Tags: Movement Panels
Compatible with: Compatible with Microsoft Windows 10 or 11 Windows Compatible with ARM Linux (Raspberry pi, etc) ARM Compatible with Linux Linux Compatible with MacOS MacOS

How to add the Irobot Roomba Movement Panel robot skill

  1. Load the most recent release of ARCx on a compatible operating system (Get ARCx).
  2. Press the + Skills menu from the top menu bar in ARCx.
  3. Choose the Movement Panels category tab.
  4. Press the Irobot Roomba Movement Panel icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Irobot Roomba Movement Panel robot skill.


How to use the Irobot Roomba Movement Panel robot skill

Drives and reads every iRobot robot that can be talked to: the Roomba 400 series, Discovery, Dirt Dog and Red (the SCI), the Roomba 500, 600, 700, 800 and 900 series (the Open Interface), the original Create and the Create 2, the connected Roombas that have no serial port (900, e, i, s, j and Combo series) over their own Wi-Fi, and the Create 3 over ROS 2.

This is a movement panel: once it is in the project, everything in ARCx that moves the robot - the Movement Joystick, the Wiimote, Movement.Forward() in a script, the Autonomous AI skill, a navigator - drives the iRobot. Only one Movement Panel can be in a project at a time.

What it does

  • Finds out which robot is connected. With the robot set to Automatic and the baud rate to Automatic, it tries the rates iRobot robots use and asks the robot which protocol it answers to.
  • Drives it from the movement manager, with a top speed, a separate turn speed and optional acceleration.
  • Keeps it drivable. The Open Interface drops out of Safe mode by itself at a cliff, when a wheel drops, on its charger, and after any cleaning command. The skill puts it back in Safe (or Full) mode the next time it drives, and uses Full mode to back a robot off its dock.
  • Reads every sensor a few dozen times a second: bumpers, light bumpers, cliff sensors and their signals, wheel drops, walls, virtual walls, buttons, infrared characters, motor currents, wheel encoders, battery, charging and the OI mode. All of them become global variables.
  • Stops at bumps and cliffs while driving forward, and can pause a navigation in progress.
  • Runs scripts when a button is pressed, the bumper hits something, a cliff or wheel drop triggers, the robot docks or leaves its dock, the battery runs low, and more.
  • Tracks the robot's position from its wheel encoders and sends it to the Navigation Messaging System (NMS), with bumper hits as obstacles, so a mapping navigator such as Another Navigator can use it.
  • Drives exact distances and angles from a script, measured by the wheels.
  • Plays tunes, switches the brushes and vacuum, sets the LEDs and the digit display, sets the clock, presses buttons, cleans, spot cleans and docks.
  • Wakes the robot and keeps it awake through its BRC pin, so a Roomba does not fall asleep after five minutes.

Which robots, and how to connect them

Robot Protocol Connection Baud
Roomba 400 series, Discovery, Dirt Dog, Red SCI Serial port, EZB UART, TCP bridge 57600
Create (Create 1) Create Open Interface Serial port, EZB UART, TCP bridge 57600
Roomba 500, 600, 700, 800, 900 series Roomba Open Interface Serial port, EZB UART, TCP bridge 115200
Create 2 Roomba Open Interface Serial port (the iRobot USB cable), EZB UART, TCP bridge 115200
Roomba 900, e, i, s, j, Combo series; Braava jet m6 Local MQTT over Wi-Fi Robot's own Wi-Fi -
Create 3 ROS 2 rosbridge -

The robots with a serial port have a 7 pin mini-DIN connector under a cover (on most Roombas under the faceplate or the handle). Its pins are: 1 and 2 battery +, 3 RXD (into the robot), 4 TXD (out of the robot), 5 BRC (wake), 6 and 7 ground. The robot's serial lines are 5V TTL, so they need a USB to TTL adapter (or the iRobot Create USB cable) to reach a computer; never wire them to an RS-232 port. Cross the lines over: the robot's TXD goes to the adapter's or EZB's RX.

Connection types

Connection Use it for
Serial port A USB cable or USB to TTL adapter on the computer running ARCx, or a Raspberry Pi's UART. Reads all sensors.
EZB hardware UART An EZ-B v4's UART 0, 1 or 2 wired to the mini-DIN. Reads all sensors. Set the sensor rate to 100 to 200 ms.
EZB software serial Any EZB digital port wired to the robot's RXD. The ARC version's transmit-only option: the robot can be driven and told to clean, but it cannot be heard, so there are no sensor readings, no odometry and no events.
Serial bridge over TCP An ESP8266 or ESP32 running ESP-Link, a RooWifi, or ser2net on a Raspberry Pi plugged into the mini-DIN. Reads all sensors over the network. Set the bridge's own baud rate to the robot's.
Robot's own Wi-Fi The connected Roombas with no serial port. They clean, pause, resume, stop, dock, empty their bin and report their state, but cannot be driven: iRobot gives them no velocity command.
Create 3 A Create 3 through a rosbridge server on its ROS 2 network. Drives, reads its hazards, IR, battery, buttons and odometry, docks and undocks.

The window

iRobot Roomba  <a href='/Support/ARC-Overview/movement-panels' target='_top'>Movement Panel</a> window, driving

  • Status - whether the robot is connected and, once it is, what it is and where. The Connect button connects and disconnects.
  • Direction buttons - forward, reverse, spin left, spin right and stop. The highlighted button is the direction ARCx is moving in, whoever asked for it. Click to use keys, then drive with the arrow keys; releasing the key stops.
  • Speed - ARCx's global left and right speeds, 0 to 255, shown as the wheel speed they give this robot. The link button makes both sliders move together.
  • The robot - a top view, front up, that lights up what the sensors report: the bumper halves in red, the six light bumpers in orange (brighter as something gets closer), the four cliff sensors, the wheels (red when dropped, orange when overloaded) and a dashed ring for a virtual wall. The battery is in the middle, with the OI mode, docked or charging, or a Wi-Fi robot's mission phase under it. A sensor the robot does not have is not drawn.
  • Readings - battery, voltage, current and temperature, the OI mode, what the wheels are being sent, the position from the wheels, the wall sensor, the buttons pressed and, for Wi-Fi robots, the mission, the bin and the signal strength.
  • Clean - the cleaning commands the robot has: Clean, Spot, Max, Pause, Resume, Stop, Dock, Undock and Empty bin.
  • Brushes - the main brush, side brush and vacuum (low side drivers 2, 0 and 1 on a Create 1).
  • Robot - Beep, Reset position (makes the current position 0, 0 facing 0 degrees) and Power off.
  • Log - what happened: connections, bumps, cliffs, buttons, docking, safety stops.

The bumper and a light bumper lit up

Driving and modes

The Open Interface robots only accept drive, brush, LED and song commands in Safe or Full mode. Safe mode is the recommended one: the robot itself stops and returns to passive mode at a cliff, when a wheel drops, or on its charger. Every cleaning command also leaves the robot in passive mode.

The skill takes care of this. Every time the robot starts moving from a standstill it is put into the configured mode first. When the robot drops out of the mode by itself while being driven, the skill stops ARCx's movement too (so the robot does not drive off the moment the hazard clears) and writes why in the log. Driving again carries on.

A robot on its charger refuses Safe mode. With Use Full mode to leave the dock on (the default), the skill drives it off in Full mode and goes back to Safe once it is clear.

In Safe or Full mode a Roomba neither charges nor sleeps. With Leave passive when disconnecting on (the default), disconnecting stops the wheels and brushes and puts the robot back in passive mode, so it charges on its dock and can sleep.

Turn speed sets how fast the robot spins in place, as a percent of the drive speed: a Roomba spinning at 500 mm/s is very fast. Acceleration ramps the wheel speed up so a robot carrying something tall does not lurch; stopping is always immediate.

An SCI Roomba cannot set its wheels separately; it drives with a speed and a turn radius. The skill converts the two wheel speeds into the matching arc, so steering from a joystick works the same.

Waking and keeping the robot awake

A Roomba in passive mode goes to sleep after five minutes and stops answering. Pulling its BRC pin (mini-DIN pin 5) low wakes it, and doing that once a minute keeps it awake. Wire BRC to the serial cable's RTS or DTR line, or to an EZB digital port, and choose it as the Wake line. The skill pulses it when connecting and, with Keep awake on, once a minute while the robot is passive.

Without a wake line, press the robot's Clean button to wake it before connecting.

Sensors and global variables

Every reading is published as a global variable named with the prefix (Roomba by default), using the same names as the ARC version: $RoombaBumpLeft, $RoombaCliffFrontLeft, $RoombaLightBumperCenterLeftSignal, $RoombaVoltage (in volts), $RoombaBatteryCharge, $RoombaLeftEncoderCounts, $RoombaButtonClean, $RoombaOIMode, $RoombaStatis and so on. New ones include $RoombaIsConnected, $RoombaModel, $RoombaBatteryPercent, $RoombaIsDocked, $RoombaIsCharging, $RoombaButtonPressed (the name of the button last pressed), $RoombaPoseX, $RoombaPoseY, $RoombaHeading, $RoombaOdometryDistance, and for Wi-Fi robots $RoombaMissionPhase, $RoombaMissionCycle, $RoombaBinFull and $RoombaWifiRssi. A robot only gets the variables for the sensors it has.

Only changed values are written. Before an event script runs, every variable is brought up to date, so the script reads the values that started it.

Position and navigation

The skill works out where the robot is from how its wheels turned. Open Interface robots (Roomba 500 to 900, Create 2) report raw wheel encoder counts, which is the most accurate source; the Create 1 and SCI Roombas report a distance and an angle instead; the Create 3 works out its own position. Positions are in centimetres from where tracking began (or from the last Reset position), with the heading in degrees clockwise from the direction the robot faced then, which is what the Navigation Messaging System and its navigators expect.

With Send position to the NMS on, the position goes to the Navigation Messaging System for navigator and mapping skills. With Send bumps as obstacles on, bumper and light bumper hits go to it as obstacles at the edge of the robot, so a mapping navigator draws what the robot touched.

If the position drifts, tune the wheel diameter (distance comes out short or long against a tape measure) and the wheel base (turns come out short or long: spin the robot ten turns with the Turn ControlCommand and compare).

Some Roomba firmware counts the encoders up whichever way the wheel turns. The skill corrects for that with the wheel speed it asked for. Roomba 500 and 600 firmware before 3.3 also reports the distance sensor wrongly, which is why the encoders are used when the robot has them.

The ARC version read the left and right encoders the wrong way round and mishandled the counters rolling over at 65535; both are fixed here.

Driving exact distances and angles

The DriveDistance and Turn control commands drive straight for a distance in centimetres, or spin in place by an angle in degrees, measured by the robot's own wheels, and return how far the robot actually went. They slow down near the end to stop close to the mark, stop at a bump or cliff (as configured), and are cancelled by any other movement command or by stopping the script that called them. They need the robot's sensors, so not over the software serial port.

Songs

PlayNotes plays a tune written as text: notes separated by spaces, each a name such as C4, F#3 or Bb5 (or a MIDI number such as 60), optionally followed by a colon and its length in 64ths of a second. R is a rest. For example C4:16 E4:16 G4:32 R:8 C5:48. The robot holds 16 notes per song, so a longer tune is played in pieces one after the other. A robot that had to leave passive mode to sing goes back to passive afterwards, so a docked robot carries on charging.

Wi-Fi robots

The connected Roombas without a serial port (900, e, i, s, j and Combo series) and the Braava jet m6 have a local interface on the home network, the one iRobot's own app uses. To set it up:

  1. Choose Robot's own Wi-Fi as the connection and press Find robots. Robots on the same network answer; press Use beside yours to fill in its address and BLID.
  2. Put the robot on its dock and hold its Home button for about two seconds until it chimes (on the i, s and j series, until the light ring turns blue), then press Get password within a few seconds.
  3. Save and connect.

Wi-Fi connection settings

These robots cannot be driven: iRobot gives them no velocity command. They start, pause, resume and stop cleaning missions, go home, empty their bin into a Clean Base and beep to be found, and they report their battery, mission phase, bin and signal. The WifiCommand ControlCommand sends any other command the robot takes by name, SetWifiSetting changes a setting such as carpetBoost or twoPass, and GetWifiValue reads any value from the robot's reported state by its path, such as cleanMissionStatus.phase or bin.full.

The robot accepts one local connection at a time. While ARCx is connected, the iRobot app falls back to the cloud, which still works. Give the robot a reserved address in your router so it does not change.

Create 3

The Create 3 has no Open Interface; it is a ROS 2 robot. ARCx reaches it through a rosbridge server, so ARCx itself does not need ROS installed or to be on the robot's network domain. Run ros2 launch rosbridge_server rosbridge_websocket_launch.xml on a computer on the robot's ROS 2 network (a Raspberry Pi on the Create 3's adapter board works) with the same ROS_DOMAIN_ID and RMW as the robot, and enter its address, such as ws://192.168.1.20:9090. Enter the robot's namespace if it has one. rosbridge_suite 1.3 or newer is needed for docking and undocking, which are ROS 2 actions.

The skill drives the Create 3 with cmd_vel (repeated while it moves, because the Create 3 stops when it goes quiet), reads odom, battery_state, hazard_detection, ir_intensity, dock_status and interface_buttons, plays notes on cmd_audio and sets the light ring on cmd_lightring. Its top speed is 306 mm/s.

Configuration

Connection

Connection settings for a serial bridge, after Test connection

Setting What it does
Connection How ARCx reaches the robot (see the table above).
Robot Which serial protocol the robot speaks. Automatic asks the robot when connecting.
Serial port, EZB, UART, Digital port, Address, Port Where the robot is, for the connection chosen.
Baud rate Automatic tries 115200, 57600 and 19200 until the robot answers.
Read sensors every How often the sensors are read. 50 ms suits a cable; 100 to 200 ms suits an EZB UART or a Wi-Fi bridge.
Answer timeout How long to wait for an answer. Three missed answers in a row drop the connection.
Wake line, Wake port, Keep awake The line wired to the robot's BRC pin, and whether to pulse it once a minute.
Connect when the project loads Connect as soon as the project has loaded.
Reconnect automatically, Reconnect every Keep trying when the robot stops answering or cannot be reached.
Play a tune on connecting A rising tune on connecting and a falling one before Power off, as the ARC version always did.

Test connection connects with the settings on the page before they are saved and says what answered, with its battery and mode. Disconnect the robot first.

Driving

Setting What it does
Top speed The wheel speed, in mm/s, for the movement panel's fastest speed.
Turn speed How fast the robot spins in place, as a percent of the drive speed.
Acceleration How quickly the wheel speed may change. 0 changes it at once.
Drive mode Safe (recommended) or Full.
Use Full mode to leave the dock Back a docked robot off in Full mode, then return to Safe.
Auto stop after Stop the robot when it has kept driving this long without a new movement command. 0 turns it off.
Leave passive when disconnecting Stop everything and put the robot in passive mode on disconnecting, so it charges and sleeps.

Safety

Setting What it does
Stop on bump Stop when the bumper is pressed while driving forward or turning.
Stop at cliffs and wheel drops Stop when a cliff sensor or wheel drop triggers while driving forward or turning. Also covers Full mode and the Create 3.
Pause navigation on a hazard Pause a navigation in progress on a bump, cliff, wheel drop, light bumper or virtual wall. The ARC version's "pause NMS if sensor" option.
Low battery below The battery level at which the low battery script runs.
Go home on low battery Send the robot to its dock when the battery runs low.
Setting What it does
Send position to the NMS Send the robot's position to the navigation messaging system. The ARC version's "Send NMS position data" option.
Position every The least time between position updates.
Position from Automatic, Wheel encoders, or Distance and angle sensors.
Encoder counts per turn, Wheel diameter, Wheel base The robot's wheel geometry. The defaults are the Roomba 500 to 900 and Create 2's.
Send bumps as obstacles, Obstacle distance Send bumper and light bumper hits to the NMS as obstacles this far from the robot's centre.

Variables

Setting What it does
Set global variables Publish the sensor readings as global variables.
Variable prefix The start of every variable name.
Update every The least time between updates. Event scripts always see fresh values.

Scripts

Scripts that run when the robot connects or disconnects, a button is pressed (the ARC version's button script), the bumper is pressed, a cliff or wheel drop triggers, a virtual wall is seen, the robot docks or leaves its dock, the battery runs low, or a Wi-Fi robot's mission phase changes.

Custom UI widgets

  • Robot Status - the battery in large numbers, whether the robot is connected, docked, charging or cleaning, and optionally Clean, Dock and Stop buttons.
  • Bumpers and Cliffs - the same top view of the robot the window shows, lighting up as its sensors trigger.

Coming from the ARC version

The connection settings carry the same meaning: hardware UART, software serial and PC COM port are the EZB UART, EZB software serial and Serial port connections. The variable names are the same. The button script, the NMS position option and the "pause NMS if sensor" option are all here, on the Scripts, Navigation and Safety tabs. The ARC version's control commands (Init, Clean, MaxClean, SpotClean, SeekDockingStation, PowerOff, EnableSensorStream and DisableSensorStream) are replaced by Connect, Disconnect and the cleaning commands; sensors are read whenever the robot is connected.

The ARC version always drove in Full mode; this one defaults to Safe. Choose Full on the Driving tab for the old behaviour.

Troubleshooting

  • No iRobot robot answered - check that the robot's TXD goes to the adapter's RX and the other way round, that ground is connected, and that the robot is awake (press Clean). A Roomba that was switched to 19200 baud with its Clean button held at power off answers at 19200 until its battery is removed.
  • The robot connects but will not drive - it may be on its charger in Safe mode with Use Full mode to leave the dock off, or a cliff sensor or wheel drop is active (the robot is lifted, or on a dark carpet the cliff sensors read as a drop). The log says when the robot dropped out of Safe mode.
  • It stops answering after a few minutes - it went to sleep. Wire the BRC pin as a wake line, or keep it in Safe mode by driving it.
  • The position drifts or turns the wrong amount - tune the wheel diameter and wheel base on the Navigation tab.
  • Wi-Fi: the robot refused the BLID or password - get the password again with the Home button held. The MQTT server is unavailable - close the iRobot app or anything else connected to the robot locally; it takes one connection at a time.
  • Create 3: connected to rosbridge but nothing arrives - check the namespace, and that rosbridge runs with the robot's ROS_DOMAIN_ID and RMW.

Control Commands for the Irobot Roomba Movement Panel robot skill

There are Control Commands available for this robot skill which allows the skill to be controlled programmatically from scripts or other robot skills. These commands enable you to automate actions, respond to sensor inputs, and integrate the robot skill with other systems or custom interfaces. If you're new to the concept of Control Commands, we have a comprehensive manual available here that explains how to use them, provides examples to get you started and make the most of this powerful feature.

Control Command Manual

This robot skill has 41 control commands, listed below. Send them from a JavaScript or Python script, from Blockly, or from another robot skill.

The first value is always the window title, which is the name in the title bar of the robot skill on your workspace. It starts out as Irobot Roomba Movement Panel, which is what every example below uses. If you rename the robot skill, or add a second copy of it to the project, use the title as it appears on that window instead.

ControlCommand() can be shortened to CC(), and both spellings work in JavaScript and in Python. The examples are JavaScript; Python is the same call, except that true and false are written True and False.

Beep

A short double beep.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Beep")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "Beep");

BrushesOff

Switch the brushes and vacuum off.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "BrushesOff")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "BrushesOff");

Clean

Start the robot's own cleaning cycle (Cover on a Create 1, start on a Wi-Fi robot). The robot drives itself until it finishes or is stopped.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Clean")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "Clean");

Connect

Connect to the robot with the configured settings. Returns false when it was already connecting or connected.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Connect")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "Connect");

Disconnect

Disconnect from the robot, stopping it and (when configured) leaving it in passive mode so it charges and can sleep. Returns false when it was not connected.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Disconnect")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "Disconnect");

DriveDistance

Drive straight for a distance in metres (negative reverses) at a speed in metres per second (default 0.2), measured by the robot's wheels, and return the distance actually driven in metres. Waits until done.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "DriveDistance", (Number)metres, (Number)speedMS)

Parameters

# Name Type What to pass
1 metres Number A number, without quotes
2 speedMS Number A number, without quotes

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "DriveDistance", 0, 0);

DriveWheels

Drive each wheel at a speed in mm/s, positive forward, until another movement command. 0, 0 stops.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "DriveWheels", (Number)leftMMS, (Number)rightMMS)

Parameters

# Name Type What to pass
1 leftMMS Number A number, without quotes
2 rightMMS Number A number, without quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "DriveWheels", 0, 0);

EmptyBin

Empty the bin into a Clean Base. Wi-Fi robots with a Clean Base only.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "EmptyBin")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "EmptyBin");

GetBatteryPercent

The battery level in percent, or -1 when the robot does not report it.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "GetBatteryPercent")

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "GetBatteryPercent");

GetModel

What the connected robot is, i.e. "Roomba Open Interface (Roomba 500-900, Create 2)" or "iRobot Create 3". Empty when not connected.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "GetModel")

Returns: String

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "GetModel");

GetPose

The robot's position from its wheels as [X, Y, yaw]: X in metres forward and Y in metres to the left of where tracking began, and the yaw in radians counter-clockwise from the way it faced then, -PI to PI (positive is turned left, negative right).

Syntax

ControlCommand("Irobot Roomba Movement Panel", "GetPose")

Returns: Array of Double

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "GetPose");

GetSensor

One sensor reading by the name of its global variable without the prefix, i.e. BumpLeft, CliffFrontLeft, BatteryPercent, LeftEncoderCounts. Null when the robot does not have it.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "GetSensor", (String)name)

Parameters

# Name Type What to pass
1 name Text Your text, in quotes

Returns: Object

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "GetSensor", "name");

GetState

Every current sensor reading as a JSON object.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "GetState")

Returns: String

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "GetState");

GetWifiValue

One value from a Wi-Fi robot's reported state by its path, i.e. batPct, cleanMissionStatus.phase, bin.full. Empty when it is not there.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "GetWifiValue", (String)path)

Parameters

# Name Type What to pass
1 path Text Your text, in quotes

Returns: String

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "GetWifiValue", "path");

IsConnected

Whether the robot is connected right now.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "IsConnected")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "IsConnected");

Locate

Make the robot beep so it can be found.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Locate")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "Locate");

MaxClean

Start a max clean, which cleans until the battery runs low. Roomba serial robots only.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "MaxClean")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "MaxClean");

PauseCleaning

Pause a cleaning mission. Wi-Fi robots only.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "PauseCleaning")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "PauseCleaning");

PlayNotes

Play a tune on the robot's speaker and return how many notes it has. Notes are separated by spaces, each a name or MIDI number with an optional length in 64ths of a second: "C4:16 E4:16 G4:32" or "60 64 67:32". R is a rest. Plays in the background; a new tune replaces one playing.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "PlayNotes", (String)notes)

Parameters

# Name Type What to pass
1 notes Text Your text, in quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "PlayNotes", "notes");

PowerOff

Switch the robot off.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "PowerOff")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "PowerOff");

PressButton

Press one of the robot's buttons: Clean, Spot, Dock, Minute, Hour, Day, Schedule or Clock. Roomba 500 to 900 and Create 2.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "PressButton", (String)button)

Parameters

# Name Type What to pass
1 button Text Your text, in quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "PressButton", "button");

Reset

Reset the robot as if its battery was taken out. It disconnects and reconnects. Roomba 500 to 900 and Create 2.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Reset")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "Reset");

ResetLightRing

Give the Create 3's light ring back to the robot.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "ResetLightRing")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "ResetLightRing");

ResetPose

Make the robot's current position 0, 0 facing 0 radians.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "ResetPose")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "ResetPose");

ResumeCleaning

Resume a paused cleaning mission. Wi-Fi robots only.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "ResumeCleaning")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "ResumeCleaning");

SeekDockingStation

Send the robot to its dock to charge.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SeekDockingStation")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SeekDockingStation");

SendRaw

Send bytes straight to the robot's serial port, as numbers separated by spaces or commas, i.e. "139 4 0 128". For Open Interface commands this skill has no ControlCommand for.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SendRaw", (String)bytes)

Parameters

# Name Type What to pass
1 bytes Text Your text, in quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SendRaw", "bytes");

SetBrushes

Switch the main brush, side brush and vacuum on or off (on a Create 1, low side drivers 2, 0 and 1).

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetBrushes", (Bool)mainBrush, (Bool)sideBrush, (Bool)vacuum)

Parameters

# Name Type What to pass
1 mainBrush True or false true or false, without quotes
2 sideBrush True or false true or false, without quotes
3 vacuum True or false true or false, without quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetBrushes", true, true, true);

SetBrushSpeeds

Run the main brush and side brush at a speed from -127 to 127 (negative turns the other way) and the vacuum from 0 to 127. Roomba 500 to 900, Create 2 and Create 1.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetBrushSpeeds", (Number)mainBrush, (Number)sideBrush, (Number)vacuum)

Parameters

# Name Type What to pass
1 mainBrush Number A number, without quotes
2 sideBrush Number A number, without quotes
3 vacuum Number A number, without quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetBrushSpeeds", 0, 0, 0);

SetDisplayText

Show up to four characters on the robot's digit display (Roomba 560, 570, 700 and 800 series).

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetDisplayText", (String)text)

Parameters

# Name Type What to pass
1 text Text Your text, in quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetDisplayText", "text");

SetIndicatorLeds

Switch the indicator LEDs: debris, spot, dock (home) and check robot. On a Create 1 the first two are the Play and Advance LEDs.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetIndicatorLeds", (Bool)debris, (Bool)spot, (Bool)dock, (Bool)checkRobot)

Parameters

# Name Type What to pass
1 debris True or false true or false, without quotes
2 spot True or false true or false, without quotes
3 dock True or false true or false, without quotes
4 checkRobot True or false true or false, without quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetIndicatorLeds", true, true, true, true);

SetLightRing

Set the Create 3's light ring to one color, red, green and blue from 0 to 255.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetLightRing", (Number)red, (Number)green, (Number)blue)

Parameters

# Name Type What to pass
1 red Number A number, without quotes
2 green Number A number, without quotes
3 blue Number A number, without quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetLightRing", 0, 0, 0);

SetMode

Put the robot in an Open Interface mode: Passive, Safe, Full or Off. Driving puts it in Safe (or Full) by itself.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetMode", (String)mode)

Parameters

# Name Type What to pass
1 mode Text Your text, in quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetMode", "mode");

SetPowerLed

Set the power LED's color (0 green to 255 red) and brightness (0 off to 255 full).

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetPowerLed", (Number)color, (Number)intensity)

Parameters

# Name Type What to pass
1 color Number A number, without quotes
2 intensity Number A number, without quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetPowerLed", 0, 0);

SetWifiSetting

Change a Wi-Fi robot's setting, i.e. carpetBoost true, twoPass true, binPause false, openOnly false. The value is JSON (true, 3, "text").

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SetWifiSetting", (String)name, (String)value)

Parameters

# Name Type What to pass
1 name Text Your text, in quotes
2 value Text Your text, in quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SetWifiSetting", "name", "value");

SpotClean

Start a spot clean: the robot spirals out and back over one patch of floor.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SpotClean")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SpotClean");

StopCleaning

Stop a cleaning cycle and leave the robot where it is.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "StopCleaning")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "StopCleaning");

SyncClock

Set the robot's clock to this computer's day and time. Roomba 500 to 900 and Create 2.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "SyncClock")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "SyncClock");

Turn

Spin in place by an angle in radians (positive turns left, counter-clockwise; negative turns right; 2*PI is a full circle) at a speed in radians per second (default 1.28), measured by the robot's wheels, and return the angle actually turned in radians, positive left and negative right. Waits until done.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Turn", (Number)radians, (Number)speedRadS)

Parameters

# Name Type What to pass
1 radians Number A number, without quotes
2 speedRadS Number A number, without quotes

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Irobot Roomba Movement Panel", "Turn", 0, 0);

Undock

Drive off the dock. Create 3 only; other robots drive off with a reverse movement.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "Undock")

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "Undock");

WifiCommand

Send a Wi-Fi robot any command its local interface takes by name: start, clean, pause, resume, stop, dock, evac, find, train.

Syntax

ControlCommand("Irobot Roomba Movement Panel", "WifiCommand", (String)command)

Parameters

# Name Type What to pass
1 command Text Your text, in quotes

Returns: nothing

Example

ControlCommand("Irobot Roomba Movement Panel", "WifiCommand", "command");

This list is read out of the robot skill itself each time its package is uploaded, so it matches the published version (v4).


ARC Pro

Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.

#3  

This robot skill has been updated to v3.

What has changed

updated to use new threading features of ARCx v2026.10.04.01

#4  

This robot skill has been updated to v4.

What has changed

updated to use some new ARCx UI features for improved performance.