Cognitive Sentiment icon Cognitive Sentiment — Detects positive sentiment percentage of input text using cognitive ML; returns $SentimentPercentage, shows face, graph, and status for analysis. Try it →
 
Lynxmotion Smart Servo Driver Robot Skill

Lynxmotion Smart Servo Driver

by Lynxmotion

Controls Lynxmotion LSS/LSS-PRO smart servos from ARC virtual ports with UART, digital, or USB serial bus support.

Requires ARCx v1 (Updated 10/13/2026)
Tags: Servo
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 Lynxmotion Smart Servo Driver 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 Servo category tab.
  4. Press the Lynxmotion Smart Servo Driver 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 Lynxmotion Smart Servo Driver robot skill.


How to use the Lynxmotion Smart Servo Driver robot skill

Drives Lynxmotion Smart Servos from ARCx's virtual servo ports, over an EZB hardware UART, an EZB digital port, or a Lynxmotion LSS Adapter (or any USB serial adapter) on a COM port of the ARCx computer.

Once configured, a Lynxmotion servo behaves like any other servo in ARCx: Auto Position, the servo skill, Servo.setPosition(), the Kinematics Service and everything else move virtual port V1, and this skill turns that into the right command on the bus.

Works with both generations of Lynxmotion smart servo:

Series Models Position units Factory baud rate
LSS LSS-ST1 (standard), LSS-HS1 (high speed), LSS-HT1 (high torque) tenths of a degree 115200
LSS-PRO LSS-P-L1, LSS-P-S1, LSS-P-M1 hundredths of a degree 921600

Both speak the same plain text protocol, so one bus can hold both kinds. The skill asks each servo its model when the bus initializes and uses the right units for it automatically. Newer features are supported too: speed and timed moves, current limited moves that hold or go limp when they meet resistance (LSS firmware 365 and newer), the motion profile and position filter, stiffness, and the PRO's extra temperatures and IMU.

Tested against the protocol with a simulated chain of LSS and LSS-PRO servos (every command checked as sent, every reply parsed, including the echo a half duplex bus produces) but not yet against servos on a real bus. Treat the first bring-up with care.

Requirements

  • Lynxmotion servos daisy chained on one bus, each with a different ID. Every servo ships as ID 0, so new servos have to be given their own IDs one at a time (the Tools tab does it).
  • Power for the servos at their own voltage. They do not run from the EZB's logic supply.
  • Every servo on the bus set to the same baud rate. A standard LSS and an LSS-PRO ship at different rates, so change one of them (Tools tab) before mixing them.
  • A way to talk to the bus:
    • an EZB hardware UART, with the servos' TX reaching the UART's RX so they can be read, or
    • a Lynxmotion LSS Adapter, an LSS-2IO, or another USB serial adapter plugged into the ARCx computer, or
    • an EZB digital port, which can move servos but cannot read anything back.

Mapping ports to IDs

Servos configuration tab

Each entry maps one ARCx virtual port (V0 to V255) to a servo ID. The ID does not have to match the port number: V3 can drive ID 17. Other skills only ever see the virtual port. The ARC plugin tied V0 to ID 0, V1 to ID 1 and so on; set the IDs that way to keep an old robot's numbering.

Setting Meaning Default
On A disabled entry is kept but ignored, so a servo can be parked without losing its settings. on
Port The ARCx virtual servo port other skills move. V1
ID The servo ID (0 to 250) programmed into the servo. 1
Series Auto asks the servo its model when the bus initializes. LSS or LSS-PRO fixes it, which a digital port bus needs because it cannot ask. Auto
Mode Position moves between the min and max angles. Wheel spins continuously, with the ARCx position choosing the direction and speed: the lowest position is full speed one way, the centre is stopped and the highest is full speed the other way. Position
**Min ** / **Max ** The servo angles the lowest and highest ARCx positions map to. 0 is the servo's centre. The ARC plugin used -90 to 90. -90 / 90
Invert Reverse the direction, for a mirrored mounting. off
Wheel /s Wheel mode: the speed in degrees per second at the ends of the ARCx position range. 180
Move ms The time a position move takes while the port has no velocity set. 0 moves at the servo's own max speed, which is what the ARC plugin always did. 0

Tuning

Tuning configuration tab

Settings sent to each servo every time the bus initializes. They last until the servo is powered off or reset and are never written to the servo's memory (the Tools tab does that). Leaving a value at 0 (or -1, or unticked) leaves the servo's own setting alone.

Setting Meaning Series
Current limit Hold or Limp adds a current limit to every position move: when the motor current reaches the milliamps given, the servo stops and holds there, or goes limp. A gripper that closes on an object without straining is the classic use. Needs firmware 365 or newer. LSS
**Origin ** Shifts the servo's zero by this many degrees, to trim an assembly without remounting a horn. both
Max /s The fastest the servo may move. both
Accel / Decel The motion profile's acceleration and deceleration, in the servo's own units: 1 to 100 on an LSS, hundredths of a degree per second squared on a PRO. both
Stiffness / holding How firmly the servo follows its path while moving (-4 to 4) and holds its position (-10 to 10). LSS
Profile (EM) On makes every move accelerate and decelerate. Off sends the servo straight for each new position, which suits positions streamed many times a second (joysticks, kinematics, servo Animation). LSS
Filter The position filter used while the profile is off: 0 off, 1 direct, 2 and up smoother. -1 leaves it alone. LSS
LED A colour set on every initialization, handy for telling servos apart. both

Settings marked LSS are skipped for a PRO servo, which does not have them.

Bus settings

Bus configuration tab

Setting Meaning Default
EZB The EZB whose virtual ports this skill answers to. For a UART or digital port it is also the EZB the bus is wired to. EZB #0
Port EZB hardware UART 0, 1 or 2, EZB digital port (transmit only), or COM port on this machine. UART 1
Digital port / COM port Shown for those port types.
Baud rate The rate every servo on the bus talks at. The two buttons fill in the factory rates. A digital port can only do 4800 to 115200. 115200
Response timeout (ms) How long a query waits for a servo to answer. Raise it if reads time out over WiFi. 100
Delay after each write (ms) A pause after every write. 0 sends as fast as the port can. 1
Initialize automatically Open the port, detect each servo's model and send each servo's tuning as soon as the EZB connects (or the project loads, for a COM port). on
Debug logging Every line sent and received goes to the skill's log. Useful while wiring up a chain. off

One skill instance drives one bus. A robot with chains on two UARTs adds the skill twice.

Speed and timing

Motion configuration tab

When a skill or script sets a velocity on a port, the next move is sent with that speed, and the servo gets there at that speed using its own acceleration.

Setting Meaning Default
Speed at velocity 1 (degrees/s) The speed velocity 1 means. Higher velocities are slower: the speed is this value divided by the velocity, so with 360, velocity 4 is 90 degrees per second. Velocity 0 is the servo's max speed, or the entry's Move ms. 360
Synchronized arrival When one move changes several servos (an Auto Position frame, a kinematics pose), send them all with the same move time so they arrive together. The slowest servo sets the time. off

Telemetry

Telemetry configuration tab

With polling on, the skill reads every servo's position, status, voltage and temperature (and optionally current and speed) in the background, shows them in its window and publishes them as global variables. It needs a hardware UART or COM port.

Setting Meaning Default
Poll the servos Turn background reads on. off
Interval (ms) How often a pass over all the servos starts. 1000
Read current / Read speed Also read the motor current and the present speed on each pass. on / off
Set global variables Publish the readings to scripts. on
Variable prefix The start of each variable name. LSS
Over temperature limit (C) A servo at or above this is reported in the log. 0 turns the check off. 65
Release when over temperature Limp a hot servo so it can cool down. It comes back on the next move. on
Log faults Report a servo that says it is outside its limits, stuck, blocked or in safe mode (an LSS) or in error (a PRO), and again when it recovers. on

With the default prefix, V1 publishes $LSSV1Degrees, $LSSV1Position (scaled to the ARCx servo range), $LSSV1Status, $LSSV1Temperature, $LSSV1Voltage, $LSSV1Current, $LSSV1Speed and $LSSV1Online.

Any skill that asks ARCx for a virtual port's real position (Auto Position's "get positions", the servo skill's read button, scripts) gets it from the servo through this skill, whether polling is on or not.

The window

Lynxmotion Smart <a href='/Support/Advanced-Fundamentals/servo-motor' target='_top'>servo</a> Driver  <a href='/Support/Skills/Skills-Overview' target='_top'>robot skill</a> window

The top line shows the bus, whether it initialized and how many servos answered, and counters of lines sent, replies received and timeouts.

  • Initialize opens the port, detects each servo's model and sends its tuning.
  • Scan bus sweeps every ID from 0 to 250 and logs each servo that answers, with its model and firmware, and whether it is configured.
  • Read all reads every servo once.
  • Hold all, Release all and Stop all hold every servo where it is, let them all go limp, or stop every servo on the bus part way through a move.

Each servo row shows its model, the last goal sent, and what telemetry last read: the present angle, the motion status, temperature, voltage and current. The buttons on the right ping it, read it, step its LED through the colours (to find it on the robot), centre it through its ARCx port, and release it.

Tools tab

Tools configuration tab

The Tools tab talks to the bus with the settings on the Bus tab as they are right now, saved or not, so a new chain can be brought up from one screen.

  • Identify the only servo asks the broadcast ID who is there. It only works with one servo connected, which is how new servos (all ID 0) are given their own IDs one at a time.
  • Sweep sends every ID in the range a query a few milliseconds apart and collects the answers. Slow scan asks each ID and waits for each, for a link that loses sweep replies. Found servos can be added to the next free port with Add.
  • Talk to one servo pings, reads everything the servo reports, holds, limps, moves to 0, resets, sets the LED, or sends any LSS command typed in the Command box (without the # and ID, such as QFPC or LED3; a query shows the answer).
  • Change settings stored in the servo writes to the servo's memory and needs the I am sure tick first: a new ID, a new baud rate, the origin, max speed, acceleration, stiffness, LED colour, direction of rotation and LED blink states, and a factory reset. Changing the ID or baud rate resets the servo so it takes effect; after a baud change set the Bus tab to the new rate.

Window configuration tab

Scripts from the ARC plugin

The ARC plugin's SetLED and TorqueEnable control commands still work, and SetLED accepts true and false as it did. Its GetLSSPosition, GetLSSTemp and GetLSSPing script functions are now the control commands GetPresentPositionDegrees, GetTemperature and Ping. Servos are named by their virtual port (v1), or by ID as id:5.

Troubleshooting

  • Nothing answers a scan: check the servo power, that the baud rate matches the servos (115200 for a new LSS, 921600 for a new PRO), and that the servos' TX reaches the UART's RX. Turn on debug logging and look for RX lines in the log.
  • Reads time out over WiFi: raise the response timeout to 200 or more.
  • A PRO servo moves a tenth as far as it should: its series is set to LSS (or the bus is on a digital port with Series Auto). Set Series to LSS-PRO.
  • Two servos move together: they share an ID. Connect them one at a time and give each its own ID with the Tools tab.
  • The servo jerks on streamed positions: set its Profile to Off and its Filter to 5 or more on the Tuning tab.

Control Commands for the Lynxmotion Smart Servo Driver 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 43 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 Lynxmotion Smart servo Driver, 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.

ChangeID

Program a new servo ID (0 to 250) into the servo, reset it, and update the configuration entry to match

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "ChangeID", (String)servoPort, (Number)newId)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 newId Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "ChangeID", "servoPort", 0);

GetBusStatus

A one line description of the bus and whether it initialized

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetBusStatus")

Returns: String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetBusStatus");

GetCurrent

The servo's motor current in milliamps

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetCurrent", (String)servoPort)

Parameters

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

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

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetCurrent", "servoPort");

GetFirmware

The firmware version the servo reports

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetFirmware", (String)servoPort)

Parameters

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

Returns: String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetFirmware", "servoPort");

GetIMU

LSS-PRO only: the inertial sensor readings as [x, y, z, a, b, g], as the servo reports them

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetIMU", (String)servoPort)

Parameters

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

Returns: Array of Integer

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetIMU", "servoPort");

GetModel

The model the servo reports, such as LSS-ST1, LSS-HS1, LSS-HT1, LSS-P-L1, LSS-P-S1 or LSS-P-M1

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetModel", (String)servoPort)

Parameters

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

Returns: String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetModel", "servoPort");

GetPresentPosition

The servo's real position read back from it, scaled to the ARCx servo position range like any other servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetPresentPosition", (String)servoPort)

Parameters

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

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

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetPresentPosition", "servoPort");

GetPresentPositionDegrees

The servo's real position in degrees, 0 being its centre

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetPresentPositionDegrees", (String)servoPort)

Parameters

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

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetPresentPositionDegrees", "servoPort");

GetSerialNumber

The serial number the servo reports

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetSerialNumber", (String)servoPort)

Parameters

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

Returns: String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetSerialNumber", "servoPort");

GetServoPorts

The virtual servo ports configured as Lynxmotion servos, as strings such as V1

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetServoPorts")

Returns: Array of String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetServoPorts");

GetSettings

One line describing every setting the servo reports: model, firmware, baud, origin, range, max speed, LED, gyre, acceleration, stiffness, motion profile and (PRO) temperatures

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetSettings", (String)servoPort)

Parameters

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

Returns: String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetSettings", "servoPort");

GetSpeed

The servo's present speed in degrees per second

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetSpeed", (String)servoPort)

Parameters

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

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetSpeed", "servoPort");

GetStatus

The servo's motion status in words, such as Holding, Travelling, Limp, Stuck, Blocked or Safe mode

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetStatus", (String)servoPort)

Parameters

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

Returns: String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetStatus", "servoPort");

GetStatusCode

The servo's motion status as the number the Q query returns

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetStatusCode", (String)servoPort)

Parameters

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

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

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetStatusCode", "servoPort");

GetTargetPositionDegrees

Where the servo is heading, in degrees

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetTargetPositionDegrees", (String)servoPort)

Parameters

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

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetTargetPositionDegrees", "servoPort");

GetTemperature

The servo's temperature in degrees Celsius

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetTemperature", (String)servoPort)

Parameters

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

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetTemperature", "servoPort");

GetVoltage

The servo's supply voltage in volts

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "GetVoltage", (String)servoPort)

Parameters

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

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "GetVoltage", "servoPort");

IdentifyServo

With exactly one servo connected, return its ID (-1 when nothing answers). Uses a broadcast ID query

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "IdentifyServo")

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

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "IdentifyServo");

InitializeBus

Open the port, detect each servo's model and send each servo's configured settings, as happens when the EZB connects

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "InitializeBus")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "InitializeBus");

MoveDegrees

Move to an angle in degrees (0 is the centre). Optional speedDps travels at that speed, optional timeMs arrives in that time; both 0 use the servo's max speed. Bypasses the ARCx position mapping

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "MoveDegrees", (String)servoPort, (Number)degrees, (Number)speedDps, (Number)timeMs)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 degrees Number A number, without quotes
3 speedDps Number A number, without quotes
4 timeMs Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "MoveDegrees", "servoPort", 0, 0, 0);

MoveRelative

Move by a number of degrees from where the servo is now, at an optional speed in degrees per second

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "MoveRelative", (String)servoPort, (Number)degrees, (Number)speedDps)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 degrees Number A number, without quotes
3 speedDps Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "MoveRelative", "servoPort", 0, 0);

Ping

Ask the servo for its ID. Returns true when it answers, false when it does not. Needs a hardware UART or COM port

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "Ping", (String)servoPort)

Parameters

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

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "Ping", "servoPort");

ReleaseAll

Release (limp) every configured servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "ReleaseAll")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "ReleaseAll");

ResetServo

Soft reset the servo: it restarts and reloads its stored settings, dropping every session change

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "ResetServo", (String)servoPort)

Parameters

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

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "ResetServo", "servoPort");

ScanBus

Sweep each ID from first to last (default 0 to 250) and return a line per servo that answered, with its model and firmware

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "ScanBus", (Number)first, (Number)last)

Parameters

# Name Type What to pass
1 first Number A number, without quotes
2 last Number A number, without quotes

Returns: Array of String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "ScanBus", 0, 0);

SendCommand

Send any LSS command to the servo, written without the # and ID, such as LED3, QFPC or CSD600. A query (starting with Q) returns the servo's answer; anything else returns an empty string. For protocol features this skill has no command of its own for

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SendCommand", (String)servoPort, (String)command)

Parameters

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

Returns: String

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SendCommand", "servoPort", "command");

SetAcceleration

The motion profile acceleration and deceleration in the servo's own units (standard LSS 1 to 100, LSS-PRO hundredths of a degree per second squared). save true stores them in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetAcceleration", (String)servoPort, (Number)acceleration, (Number)deceleration, (Bool)save)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 acceleration Number A number, without quotes
3 deceleration Number A number, without quotes
4 save True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetAcceleration", "servoPort", 0, 0, true);

SetAngularRange

The total travel the servo allows, centred on its origin, in degrees. save true stores it in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetAngularRange", (String)servoPort, (Number)degrees, (Bool)save)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 degrees Number A number, without quotes
3 save True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetAngularRange", "servoPort", 0, true);

SetGyre

The direction a positive angle turns: true clockwise, false counter clockwise. save true stores it in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetGyre", (String)servoPort, (Bool)clockwise, (Bool)save)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 clockwise True or false true or false, without quotes
3 save True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetGyre", "servoPort", true, true);

SetLED

Set the LED of the servo on the virtual servo port (for example v1, or id:5 to address by servo ID) to a colour: Off, Red, Green, Blue, Yellow, Cyan, Magenta, White or 0 to 7. true is White and false is Off, as in the ARC plugin. save true stores it in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetLED", (String)servoPort, (String)color, (Bool)save)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 color Text Your text, in quotes
3 save True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetLED", "servoPort", "color", true);

SetLEDAll

Set the LED of every servo on the bus to a colour (broadcast): Off, Red, Green, Blue, Yellow, Cyan, Magenta, White or 0 to 7

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetLEDAll", (String)color)

Parameters

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

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetLEDAll", "color");

Which states make the LED blink, as a sum: 1 limp, 2 holding, 4 accelerating, 8 decelerating, 16 free, 32 travelling (0 never). Stored in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetLEDBlink", (String)servoPort, (Number)mask)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 mask Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetLEDBlink", "servoPort", 0);

SetMaxSpeed

The fastest the servo may move, in degrees per second. save true stores it in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetMaxSpeed", (String)servoPort, (Number)speedDps, (Bool)save)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 speedDps Number A number, without quotes
3 save True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetMaxSpeed", "servoPort", 0, true);

SetMode

Switch how ARCx positions drive the servo, Position or Wheel, and remember it in the configuration

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetMode", (String)servoPort, (String)Position|Wheel)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 Position|Wheel Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetMode", "servoPort", "Position|Wheel");

SetMotionProfile

Standard LSS: motion profile on (accelerate and decelerate every move) or off (go straight for the target through the position filter). Optional filterCount sets the position filter, 0 off, 1 direct, 2 and up smoother

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetMotionProfile", (String)servoPort, (Bool)enabled, (Number)filterCount)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 enabled True or false true or false, without quotes
3 filterCount Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetMotionProfile", "servoPort", true, 0);

SetMoveTime

The move time in milliseconds used for this servo's moves while the port's velocity is 0 (0 is the servo's max speed), and remember it in the configuration

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetMoveTime", (String)servoPort, (Number)timeMs)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 timeMs Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetMoveTime", "servoPort", 0);

SetOriginOffset

Shift the servo's zero by a number of degrees. save true stores it in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetOriginOffset", (String)servoPort, (Number)degrees, (Bool)save)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 degrees Number A number, without quotes
3 save True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetOriginOffset", "servoPort", 0, true);

SetStiffness

Standard LSS: angular stiffness while moving (-4 to 4) and while holding (-10 to 10). Higher is firmer. save true stores them in the servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetStiffness", (String)servoPort, (Number)stiffness, (Number)holdingStiffness, (Bool)save)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 stiffness Number A number, without quotes
3 holdingStiffness Number A number, without quotes
4 save True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetStiffness", "servoPort", 0, 0, true);

SetWheelSpeed

Spin continuously (wheel mode) at a signed speed in degrees per second, 0 stops. Switches the entry to wheel mode. Bypasses the ARCx position mapping

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "SetWheelSpeed", (String)servoPort, (Number)speedDps)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 speedDps Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "SetWheelSpeed", "servoPort", 0);

Stop

Stop the servo where it is and hold there, part way through a move. Also stops a wheel mode servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "Stop", (String)servoPort)

Parameters

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

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "Stop", "servoPort");

StopAll

Stop every servo on the bus where it is and hold (broadcast)

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "StopAll")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "StopAll");

TorqueEnable

true holds the servo where it is (H). false releases it so it can be moved by hand, the same as releasing the port

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "TorqueEnable", (String)servoPort, (Bool)enabled)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 enabled True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "TorqueEnable", "servoPort", true);

TorqueEnableAll

Hold or release every configured servo

Syntax

ControlCommand("Lynxmotion Smart servo Driver", "TorqueEnableAll", (Bool)enabled)

Parameters

# Name Type What to pass
1 enabled True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Lynxmotion Smart servo Driver", "TorqueEnableAll", true);

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


ARC Pro

Upgrade to ARC Pro

Subscribe to ARC Pro, and your robot will become a canvas for your imagination, limited only by your creativity.