Skip to content

Vocabulary ​

This page is generated from mobiledsl.semantic.model.vocabulary; edit the code, not the page. It lists every name a program may use beyond the grammar's keywords, and what each takes. Numbers carry no unit: the parameter name carries it by suffix (_s seconds, _m metres, _rad radians, _mps metres per second).

Component types (.core) ​

A component type is the kind of part a program places. A part can be used as a type when its library entry lists the type under profiles; the type's category is the kind of physical thing the part must be, which decides what its entry declares (a wheel its radius, a chassis its connectors). The chassis takes only ref; every other component is placed by glue. A type exists only when the compiler acts on it: a chassis type has kinematics, a wheel type a contact model, a track type a belt the targets stand in for, a sensor type a simulated sensor and a use for its data, a motor ratings that bound its wheel, a battery and a motor driver ratings the power and command rules judge. Everything the compiler merely carries is an Attachment; the library entry says what the part is.

TypeCategoryMeaning
Mecanum_four_wheelchassisFour mecanum wheels; holonomic.
Diff_drivechassisFour driven standard wheels, skid steer.
Diff_two_casterchassisTwo driven standard wheels and a caster.
TricyclechassisOne steered, driven front wheel and two free rear wheels.
AckermannchassisTwo steered front wheels, two driven rear wheels; the front wheels may be driven too.
Omni_drivechassisFour omni wheels; holonomic.
Omni_three_wheelchassisThree omni wheels on a circle; holonomic.
TrackedchassisTwo tracks, each driven on its own; skid steer.
LeggedchassisLegs on servos, its own or Leg parts placed on it; stands on their feet, walks as its gait states.
MecanumwheelA mecanum wheel.
StandardwheelA plain driven wheel.
CasterwheelA passive support wheel.
Omni_wheelwheelAn omni wheel.
TracktrackA track as one part: a belt around its sprockets and road wheels. It mates by the hub that drives it and moves the base by the travel its part states per turn.
MotormotorA motor on a drive mount of the chassis, where the wheel glued onto its shaft is driven, or on a seat of the chassis whose driveline turns the wheels of other mounts; within the speed and torque its part states. Its command names the motor driver that drives it.
BatterybatteryA battery pack, placed by its glue as any part is; the parts whose power names it run on the voltage its part states.
MotorDrivermotor_driverA board that drives motors: each motor without a bus from a channel of its own, within the current its part states, and motors that carry their driver over a bus it speaks.
LidarsensorA planar laser scanner.
Lidar3DsensorA spinning multi-ring laser; its cloud marks obstacles and its middle ring can stand in for a planar laser.
CamerasensorAn RGB camera.
DepthCamerasensorA depth camera; its cloud can stand in for a laser.
RGBDsensorA colour camera with a registered depth image; its cloud can stand in for a laser.
IMUsensorAn inertial measurement unit.
UltrasonicsensorA range finder that measures with sound in a narrow cone; its reading marks the costmaps' range layer.
RangesensorA range finder that measures with light (infrared or time of flight) in a narrow cone; its part states its range, cone and rate, and its reading marks the costmaps' range layer.
BumpersensorA contact switch on the body; Check_contact on it reads what pressed it.
AttachmentattachmentA part the compiler carries but does not act on: an arm, a gripper, a tray. It adds mass and shape; the library entry says what it is.
LeglegA leg of a Legged chassis that has none of its own: links on hinges its servos turn, ending in the feet it stands on; the chassis's gait walks it with the others.

Parameters of a chassis:

ParameterTypeRequiredMeaning
refstringyesThe library part id.

Parameters of a wheel, track, sensor, battery, or attachment:

ParameterTypeRequiredMeaning
refstringyesThe library part id.
gluetuple of 6 or 7yesWhere the part mates: a connector of the chassis or of a part already placed, (x, y, z, nx, ny, nz) or with a roll angle (x, y, z, nx, ny, nz, roll). The point and the unit normal are in the chassis frame; the part's connector is aligned to them.

Parameters of a motor:

ParameterTypeRequiredMeaning
refstringyesThe library part id.
gluetuple of 6 or 7yesWhere the part mates: a connector of the chassis or of a part already placed, (x, y, z, nx, ny, nz) or with a roll angle (x, y, z, nx, ny, nz, roll). The point and the unit normal are in the chassis frame; the part's connector is aligned to them.
power@core/<battery or motor driver>noWhat the motor draws its power from. A motor without a bus is powered through the driver that commands it and needs no power beside command; one with a bus names its supply here.
command@core/<motor driver>noThe motor driver that commands the motor: from one of its channels, or over the motor's bus.

Parameters of a motor driver:

ParameterTypeRequiredMeaning
refstringyesThe library part id.
gluetuple of 6 or 7yesWhere the part mates: a connector of the chassis or of a part already placed, (x, y, z, nx, ny, nz) or with a roll angle (x, y, z, nx, ny, nz, roll). The point and the unit normal are in the chassis frame; the part's connector is aligned to them.
power@core/<battery>noThe battery the driver is fed by.

Chassis types ​

What each chassis type needs and what the assembled base can do. A mount is driven in one of three ways. A Motor sits on it, its glue equal to the chassis connector that the part's profile maps the mount to, with one wheel of an allowed type on the motor's shaft. Or the wheel sits on the mount itself and a Motor sits on a connector of the chassis whose driveline turns that mount. Or the wheel sits on a mount the type always drives and no motor is declared: the kit's motors are then part of its chassis, and the targets drive the wheel within no stated limits and say so. On a mount that does not drive, or on an optional mount with no motor, the wheel sits alone and rolls freely. A Caster wheel is passive and may sit on any other connector. Every mount is driven unless the table lists the driven ones; a mount listed as optional is driven or free, together with the others listed so. One motor turns one mount, or through a driveline one of the sets under shared drive. A mount that steers turns about the kingpin the chassis part declares on that connector. A Tracked base carries a Track where the others carry a wheel, on its two mounts, and they are driven the same two ways. A Legged base carries neither: its legs are its part's own links, or Leg parts placed on it when it has none of its own. It stands on their feet, where their servos hold them, and its part's gait says what its walking controller takes: it moves aside when the gait takes a speed aside, and turns in place when the gait takes a turn.

ChassisWheel mountsWheel typeDrivenShared driveSteeredHolonomicSpins in place
Mecanum_four_wheelfront_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheelMecanumallnonenoneyesyes
Diff_drivefront_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheelStandardallfront_left_wheel + rear_left_wheel; front_right_wheel + rear_right_wheelnonenoyes
Diff_two_casterleft_wheel, right_wheelStandardallnonenonenoyes
Tricyclefront_wheel, rear_left_wheel, rear_right_wheelStandardfront_wheelnonefront_wheelnono
Ackermannfront_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheelStandardrear_left_wheel, rear_right_wheel; optional: front_left_wheel, front_right_wheelrear_left_wheel + rear_right_wheel; front_left_wheel + front_right_wheel; front_left_wheel + front_right_wheel + rear_left_wheel + rear_right_wheelfront_left_wheel, front_right_wheelnono
Omni_drivefront_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheelOmni_wheelallnonenoneyesyes
Omni_three_wheelfront_wheel, rear_left_wheel, rear_right_wheelOmni_wheelallnonenoneyesyes
Trackedleft_track, right_trackTrackallnonenonenoyes
Leggednone: it stands on its feetnonenonenonenoneits gait'sits gait's

World (.world) ​

Entity types ​

TypeMeaning
ObstacleSomething the robot must not touch: touching it fails the run.
SupportSurfaceA floor, ramp or pad the robot drives on; contact is expected.
MarkerA visual mark such as a line or a goal disc; no collision by default.

All entity types take the same parameters:

ParameterTypeRequiredMeaning
typebox, sphere, cylindernoA primitive shape; exactly one of type and ref.
refstringnoThe id of a library object, shown by its mesh and colliding by the shapes its entry declares; exactly one of type and ref.
postuple of 7yesWorld pose (x, y, z, qx, qy, qz, qw); no rotation is (x, y, z, 0, 0, 0, 1).
sizetuple of 3noPrimitive dimensions (x, y, z) in metres; required with type, refused with ref.
is_staticboolnoFixed in place (default true). No target moves an entity: it states no mass to move it with, so false is refused.
collisionboolnoEmits collision geometry (default depends on the type). An object that declares no collision cannot collide.

Scenario ​

ParameterTypeRequiredMeaning
refstringyesThe base environment: the id of a library environment, whose floor and entities the scenario takes, or empty for none.
ground_planeboolnoLay the world's ground plane (default false). A world has one: this is refused where an environment of any of its scenarios brings its floor, or another scenario already lays it.

Goal ​

ParameterTypeRequiredMeaning
posetuple of 7noThe goal pose (x, y, z, qx, qy, qz, qw); one of pose and target.
target@world/<entity>noAn entity whose pose is the goal; one of pose and target.

physics ​

ParameterTypeRequiredMeaning
gravitytuple of 3noGravity (x, y, z) in m/s^2.

spawn ​

ParameterTypeRequiredMeaning
robot@core/<robot>yesThe robot declared in the .core file.
posetuple of 7yesWhere the robot starts, (x, y, z, qx, qy, qz, qw).

Task (.task) ​

Task ​

ParameterTypeRequiredMeaning
timeout_snumbernoThe whole task must finish within this many seconds.

Composites (take children) ​

Sequence ​

Run children in order; stop at the first failure.

No parameters.

Fallback ​

Run children in order; stop at the first success.

No parameters.

Parallel ​

Run children together.

ParameterTypeRequiredMeaning
policysuccess_on_all, success_on_oneyesWhen the parallel succeeds.

Decorators (take exactly one child) ​

Retry ​

Re-run the child until it succeeds, at most count times.

ParameterTypeRequiredMeaning
countnumberyesNumber of attempts.

Repeat ​

Run the child count times.

ParameterTypeRequiredMeaning
countnumberyesNumber of attempts.

Timeout ​

Fail the child if it runs longer than timeout_s.

ParameterTypeRequiredMeaning
timeout_snumberyesSeconds.

Inverter ​

Swap the child's success and failure.

No parameters.

Actions ​

Drive to a goal, avoiding obstacles.

ParameterTypeRequiredMeaning
goal@world/<goal or entity>yesA goal or an entity in the world.

Wait ​

Do nothing for a while.

ParameterTypeRequiredMeaning
duration_snumberyesSeconds.

Stop ​

Come to rest.

No parameters.

Spin ​

Turn in place.

ParameterTypeRequiredMeaning
angle_radnumberyesSigned angle in radians.

Advance ​

Drive straight ahead.

ParameterTypeRequiredMeaning
distance_mnumberyesDistance in metres.
speed_mpsnumbernoSpeed in m/s.

BackUp ​

Drive straight back.

ParameterTypeRequiredMeaning
distance_mnumberyesDistance in metres.
speed_mpsnumbernoSpeed in m/s.

Strafe ​

Drive sideways; needs a holonomic base.

ParameterTypeRequiredMeaning
distance_mnumberyesSigned distance in metres; positive is left.
speed_mpsnumbernoSpeed in m/s.

Conditions ​

GoalReached ​

True when the robot is at the goal.

ParameterTypeRequiredMeaning
goal@world/<goal or entity>yesA goal or an entity in the world.

DistanceTraveled ​

True once the robot has moved this far.

ParameterTypeRequiredMeaning
distance_mnumberyesDistance in metres.

TimeExpired ​

True once this much time has passed.

ParameterTypeRequiredMeaning
duration_snumberyesSeconds.

Evaluate (.eval) ​

Check_vel ​

Joint speed in rad/s: the magnitude of every sample stays within the bounds.

ParameterTypeRequiredMeaning
target@core/<component>yesThe wheel or joint to observe.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.

Check_acc ​

Joint acceleration in rad/s^2, the difference of successive speed samples; every sample stays within the bounds.

ParameterTypeRequiredMeaning
target@core/<component>yesThe wheel or joint to observe.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.

Check_jerk ​

Joint jerk in rad/s^3, the second difference of the speed samples; every sample stays within the bounds.

ParameterTypeRequiredMeaning
target@core/<component>yesThe wheel or joint to observe.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.

Check_effort ​

Joint effort in N*m: the magnitude of every sample stays within the bounds.

ParameterTypeRequiredMeaning
target@core/<component>yesThe wheel or joint to observe.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.

Check_distance ​

Distance in metres from the robot (or source) to target: min bounds the closest approach over the run, max the distance when the task ends. The robot is measured from its recorded position, a part from a point of its own shape seen from above, its declared ground contacts aside: the middle of the rectangle around its box or hull, square to the chassis; the centre of a wheel; the middle of a track's run on the ground where the track declares no shape; the part's origin where it declares no collision.

ParameterTypeRequiredMeaning
target@world/<goal or entity>yesThe entity or goal measured to.
source@core/<component>noThe robot part measured from.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.

Check_clearance ​

Distance in metres from the robot (or source) to the nearest obstacle, at its closest over the run.

ParameterTypeRequiredMeaning
target@world/<goal or entity>noThe obstacle to measure to; every obstacle when absent or not an obstacle.
source@core/<component>noThe robot part measured from.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.

Check_contact ​

Seconds the robot part target spends touching a scene entity: what its contact switch reports when it is a Bumper, else the simulator's geometry.

ParameterTypeRequiredMeaning
target@core/<component>yesThe robot part.
source@core/<component>noThe robot part measured from.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.

Check_time ​

Duration of the task in seconds, from its first tick to its last.

ParameterTypeRequiredMeaning
target@task/<task>yesThe task.
minnumbernoLower bound; at least one bound is required.
maxnumbernoUpper bound; at least one bound is required.