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.
| Type | Category | Meaning |
|---|---|---|
Mecanum_four_wheel | chassis | Four mecanum wheels; holonomic. |
Diff_drive | chassis | Four driven standard wheels, skid steer. |
Diff_two_caster | chassis | Two driven standard wheels and a caster. |
Tricycle | chassis | One steered, driven front wheel and two free rear wheels. |
Ackermann | chassis | Two steered front wheels, two driven rear wheels; the front wheels may be driven too. |
Omni_drive | chassis | Four omni wheels; holonomic. |
Omni_three_wheel | chassis | Three omni wheels on a circle; holonomic. |
Tracked | chassis | Two tracks, each driven on its own; skid steer. |
Legged | chassis | Legs on servos, its own or Leg parts placed on it; stands on their feet, walks as its gait states. |
Mecanum | wheel | A mecanum wheel. |
Standard | wheel | A plain driven wheel. |
Caster | wheel | A passive support wheel. |
Omni_wheel | wheel | An omni wheel. |
Track | track | A 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. |
Motor | motor | A 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. |
Battery | battery | A battery pack, placed by its glue as any part is; the parts whose power names it run on the voltage its part states. |
MotorDriver | motor_driver | A 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. |
Lidar | sensor | A planar laser scanner. |
Lidar3D | sensor | A spinning multi-ring laser; its cloud marks obstacles and its middle ring can stand in for a planar laser. |
Camera | sensor | An RGB camera. |
DepthCamera | sensor | A depth camera; its cloud can stand in for a laser. |
RGBD | sensor | A colour camera with a registered depth image; its cloud can stand in for a laser. |
IMU | sensor | An inertial measurement unit. |
Ultrasonic | sensor | A range finder that measures with sound in a narrow cone; its reading marks the costmaps' range layer. |
Range | sensor | A 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. |
Bumper | sensor | A contact switch on the body; Check_contact on it reads what pressed it. |
Attachment | attachment | A 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. |
Leg | leg | A 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:
| Parameter | Type | Required | Meaning |
|---|---|---|---|
ref | string | yes | The library part id. |
Parameters of a wheel, track, sensor, battery, or attachment:
| Parameter | Type | Required | Meaning |
|---|---|---|---|
ref | string | yes | The library part id. |
glue | tuple of 6 or 7 | yes | Where 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:
| Parameter | Type | Required | Meaning |
|---|---|---|---|
ref | string | yes | The library part id. |
glue | tuple of 6 or 7 | yes | Where 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> | no | What 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> | no | The motor driver that commands the motor: from one of its channels, or over the motor's bus. |
Parameters of a motor driver:
| Parameter | Type | Required | Meaning |
|---|---|---|---|
ref | string | yes | The library part id. |
glue | tuple of 6 or 7 | yes | Where 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> | no | The 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.
| Chassis | Wheel mounts | Wheel type | Driven | Shared drive | Steered | Holonomic | Spins in place |
|---|---|---|---|---|---|---|---|
Mecanum_four_wheel | front_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheel | Mecanum | all | none | none | yes | yes |
Diff_drive | front_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheel | Standard | all | front_left_wheel + rear_left_wheel; front_right_wheel + rear_right_wheel | none | no | yes |
Diff_two_caster | left_wheel, right_wheel | Standard | all | none | none | no | yes |
Tricycle | front_wheel, rear_left_wheel, rear_right_wheel | Standard | front_wheel | none | front_wheel | no | no |
Ackermann | front_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheel | Standard | rear_left_wheel, rear_right_wheel; optional: front_left_wheel, front_right_wheel | rear_left_wheel + rear_right_wheel; front_left_wheel + front_right_wheel; front_left_wheel + front_right_wheel + rear_left_wheel + rear_right_wheel | front_left_wheel, front_right_wheel | no | no |
Omni_drive | front_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheel | Omni_wheel | all | none | none | yes | yes |
Omni_three_wheel | front_wheel, rear_left_wheel, rear_right_wheel | Omni_wheel | all | none | none | yes | yes |
Tracked | left_track, right_track | Track | all | none | none | no | yes |
Legged | none: it stands on its feet | none | none | none | none | its gait's | its gait's |
World (.world)
Entity types
| Type | Meaning |
|---|---|
Obstacle | Something the robot must not touch: touching it fails the run. |
SupportSurface | A floor, ramp or pad the robot drives on; contact is expected. |
Marker | A visual mark such as a line or a goal disc; no collision by default. |
All entity types take the same parameters:
| Parameter | Type | Required | Meaning |
|---|---|---|---|
type | box, sphere, cylinder | no | A primitive shape; exactly one of type and ref. |
ref | string | no | The id of a library object, shown by its mesh and colliding by the shapes its entry declares; exactly one of type and ref. |
pos | tuple of 7 | yes | World pose (x, y, z, qx, qy, qz, qw); no rotation is (x, y, z, 0, 0, 0, 1). |
size | tuple of 3 | no | Primitive dimensions (x, y, z) in metres; required with type, refused with ref. |
is_static | bool | no | Fixed in place (default true). No target moves an entity: it states no mass to move it with, so false is refused. |
collision | bool | no | Emits collision geometry (default depends on the type). An object that declares no collision cannot collide. |
Scenario
| Parameter | Type | Required | Meaning |
|---|---|---|---|
ref | string | yes | The base environment: the id of a library environment, whose floor and entities the scenario takes, or empty for none. |
ground_plane | bool | no | Lay 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
| Parameter | Type | Required | Meaning |
|---|---|---|---|
pose | tuple of 7 | no | The goal pose (x, y, z, qx, qy, qz, qw); one of pose and target. |
target | @world/<entity> | no | An entity whose pose is the goal; one of pose and target. |
physics
| Parameter | Type | Required | Meaning |
|---|---|---|---|
gravity | tuple of 3 | no | Gravity (x, y, z) in m/s^2. |
spawn
| Parameter | Type | Required | Meaning |
|---|---|---|---|
robot | @core/<robot> | yes | The robot declared in the .core file. |
pose | tuple of 7 | yes | Where the robot starts, (x, y, z, qx, qy, qz, qw). |
Task (.task)
Task
| Parameter | Type | Required | Meaning |
|---|---|---|---|
timeout_s | number | no | The 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.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
policy | success_on_all, success_on_one | yes | When the parallel succeeds. |
Decorators (take exactly one child)
Retry
Re-run the child until it succeeds, at most count times.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
count | number | yes | Number of attempts. |
Repeat
Run the child count times.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
count | number | yes | Number of attempts. |
Timeout
Fail the child if it runs longer than timeout_s.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
timeout_s | number | yes | Seconds. |
Inverter
Swap the child's success and failure.
No parameters.
Actions
Navigate
Drive to a goal, avoiding obstacles.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
goal | @world/<goal or entity> | yes | A goal or an entity in the world. |
Wait
Do nothing for a while.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
duration_s | number | yes | Seconds. |
Stop
Come to rest.
No parameters.
Spin
Turn in place.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
angle_rad | number | yes | Signed angle in radians. |
Advance
Drive straight ahead.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
distance_m | number | yes | Distance in metres. |
speed_mps | number | no | Speed in m/s. |
BackUp
Drive straight back.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
distance_m | number | yes | Distance in metres. |
speed_mps | number | no | Speed in m/s. |
Strafe
Drive sideways; needs a holonomic base.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
distance_m | number | yes | Signed distance in metres; positive is left. |
speed_mps | number | no | Speed in m/s. |
Conditions
GoalReached
True when the robot is at the goal.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
goal | @world/<goal or entity> | yes | A goal or an entity in the world. |
DistanceTraveled
True once the robot has moved this far.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
distance_m | number | yes | Distance in metres. |
TimeExpired
True once this much time has passed.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
duration_s | number | yes | Seconds. |
Evaluate (.eval)
Check_vel
Joint speed in rad/s: the magnitude of every sample stays within the bounds.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @core/<component> | yes | The wheel or joint to observe. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper 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.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @core/<component> | yes | The wheel or joint to observe. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper 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.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @core/<component> | yes | The wheel or joint to observe. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper bound; at least one bound is required. |
Check_effort
Joint effort in N*m: the magnitude of every sample stays within the bounds.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @core/<component> | yes | The wheel or joint to observe. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper 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.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @world/<goal or entity> | yes | The entity or goal measured to. |
source | @core/<component> | no | The robot part measured from. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper 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.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @world/<goal or entity> | no | The obstacle to measure to; every obstacle when absent or not an obstacle. |
source | @core/<component> | no | The robot part measured from. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper 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.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @core/<component> | yes | The robot part. |
source | @core/<component> | no | The robot part measured from. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper bound; at least one bound is required. |
Check_time
Duration of the task in seconds, from its first tick to its last.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
target | @task/<task> | yes | The task. |
min | number | no | Lower bound; at least one bound is required. |
max | number | no | Upper bound; at least one bound is required. |