Skip to content

Validation rules ​

This page is generated from mobiledsl.validation.standard; edit the code, not the page. Each rule asks one question of the facts analysis derived and answers pass, fail, unknown or not_applicable with the evidence it used. fail is an error that blocks compilation, except for an advisory rule, whose fail is a warning: the facts show a likely mistake that a program may still mean. unknown means the facts do not settle the question, usually because a library part did not state something; it is never a pass: each place it points at is a warning, and the compile's summary counts the rule as undecided. A rule answers for each place it points at: one that fails for one part and cannot decide another says both, the second as a warning. A rule reads facts; it does not recompute geometry and does not change the program.

RuleCategoryQuestionfail isunknown when
assembly.glue_on_connectorassemblyDoes every component's glue name one connector of the chassis or of a part placed on it, and is that part placed?an errornever
assembly.one_part_per_connectorassemblyDoes each chassis connector carry at most one part?an errornever
assembly.wheel_mounts_filledassemblyDoes every drive mount of the chassis type carry one wheel or track, on the mount or on the shaft of a motor on it, with any motor that turns it on the mount or on a seat of the chassis whose driveline turns it; does every other wheel mount carry one free wheel; and does nothing that drives sit elsewhere?an errornever
assembly.wheel_type_matches_chassisassemblyIs every wheel that rolls, and every track, of a type the chassis takes?an errornever
assembly.steering_declaredassemblyDoes each steered mount of the chassis type carry an upright kingpin?an errornever
kinematics.omni_wheels_span_the_planekinematicsDo an omni base's rolling directions span the plane?an errorwhen no omni wheel is placed
assembly.axles_horizontalassemblyIs the axle of every wheel that rolls, and of every track's hub, horizontal?an errornever
assembly.wheels_touch_one_planeassemblyDo all wheels, and both ends of every track's run, touch the ground on one plane, with each other and with a legged robot's feet (within 2 mm)?an errornever
assembly.feet_touch_the_groundassemblyDoes every foot of a legged robot, of its chassis's own legs or of a leg placed on it, touch the ground on one plane with the others (within 2 mm), where the servos hold the legs?an errornever
assembly.legs_on_a_legged_chassisassemblyIs every leg placed on a Legged chassis that has no legs of its own, hanging from no connector of it that steers, and does such a chassis carry legs?an errornever
assembly.one_walkerassemblyIs the robot, its body and its legs placed as they are, the robot of one walker of its chassis's library at most?an errornever
assembly.links_clear_the_groundassemblyDoes every shape of a part's links but a legged robot's feet stay above the ground (within 2 mm), where its servos hold the links?an errorno wheel, track or foot is placed
statics.mass_inside_the_wheel_contactsstaticsDoes the robot's centre of mass fall strictly inside the polygon of its ground contacts, the wheels, the tracks' runs, a legged robot's feet and the skids its parts declare, counting a skid a little above the wheels' plane once the base has tipped onto it, with no skid reaching below the wheels or the feet?an errorno wheel, track or foot is placed, a wheel, a track's end or a foot is off the plane the others share, or the contacts lie on one line and the robot tips onto nothing declared
assembly.footprint_knownassemblyDo the parts' collision shapes, their links' with them where their servos hold them, bound the robot's footprint?an errora placed part declares no collision box
assembly.parts_clear_each_otherassemblyDo the declared shapes of the parts fixed to the base, each part's links' with it where their servos hold them, keep out of each other, but for what a well on a connector of either lets into that part's declared shape?a warningno two shapes are found to overlap, and a placed part declares no collision shape
assembly.wheels_clear_other_partsassemblyDoes every other part's declared shape, its links' with it where their servos hold them, keep out of the space each wheel turns through, over its steering lock, and out of each track's unit, but for what a well on the part's connector lets into its declared shape?an errorno part is found in a wheel's or a track's way, and a placed part or a track's unit declares no collision box or a stretch of a steering lock could not be settled within the analysis's budget
kinematics.spin_supportedkinematicsIf the task spins in place, can the base, and a walking base the way its gait turns?an errornever
kinematics.strafe_supportedkinematicsIf the task strafes, is the base holonomic, and does a walking base's gait move aside to that side, as fast as the task states?an errornever
kinematics.walk_supportedkinematicsIf the task advances, backs up or navigates a walking base, does its gait walk that way, as fast as the task states, and turn either way to navigate?an errornever
kinematics.gait_walks_the_feetkinematicsIf the chassis walks by a gait, does the robot stand on an even number of feet, four or more, each stepping by at least two servos of its own?an errornever
kinematics.tracks_state_their_travelkinematicsDoes every track's part state how far its belt travels per turn of its hub?an errora track's part states no travel per turn
sensing.range_clears_the_groundsensingDoes every Range sensor's cone stay above the ground within its range?a warningno wheel, track or foot is placed
power.supply_voltage_acceptedpowerIs the voltage every motor and motor driver is fed, full and run down, within the range its part states it accepts?an errora part that states a range names no supply, or its battery states a nominal voltage within that range and no range of its own
power.rated_voltage_in_supplypowerDoes the voltage every motor is fed, between full and run down, include the voltage its ratings hold at?a warninga motor names no supply, or its battery states only a nominal voltage that is not the motor's rated one
power.driver_delivers_stall_currentpowerCan every motor driver deliver, from one channel, the current the motor on it draws stalled?a warningnever
command.driver_commands_its_motorscommandDoes every motor's driver have what commands it: a channel of its own for a motor without a bus, the motor's bus for one that carries its driver?an errora motor names no driver
command.driver_has_a_channel_for_each_motorcommandDoes every motor driver have a channel of its own for each motor it drives?a warningnever