Parts catalog and slots
Every part is a macro in bluerobotics_parts/urdf/parts.xacro; type names
are the directory names in bluerobotics_parts/models/. The chassis are
parts too: an assembly is a chassis plus whatever its slots carry.
Catalog
|
Part |
Product page |
In simulation |
|---|---|---|---|
|
BlueBoat hulls, crossbeams and both thruster bodies |
assembly root; displacement declared at the assembly |
|
|
BlueROV2 standard hull (frame, tanks, foam) |
assembly root; declares every slot including thruster bodies and propellers |
|
|
BlueROV2 Heavy kit hull |
as the standard chassis with eight thruster and body slots |
|
|
weedless propellers |
default BlueBoat motor occupants, driven by the Thruster plugin |
|
|
standard T200 propellers |
default ROV propellers; alternative BlueBoat motor occupants |
|
|
T200 thruster body |
default occupant of the ROV thruster body slots; the BlueBoat chassis already carries its bodies |
|
|
flag |
geometry |
|
|
antenna and accessory mast |
geometry |
|
|
BaseStation directional antenna kit |
geometry |
|
|
payload bracket |
geometry |
|
|
Ping2 integration kit bracket |
geometry; declares the |
|
|
Ping2 echosounder |
single beam range sensor at its |
|
|
Ping360 scanning sonar |
planar scanning sensor |
|
|
Water Linked DVL A50 |
native DVL sensor; its backend loads only when fitted |
|
|
exploreHD underwater camera |
camera sensor |
|
|
MarineSitu C3 stereo camera |
rgbd sensor; macro pending delivery |
|
|
Newton gripper |
one DOF claw with a position controller; macro pending delivery |
|
|
Newton sediment sampler attachment |
one DOF claw with a position controller |
|
|
BlueROV2 payload skid |
geometry |
|
|
ROV roof rack |
geometry |
|
|
Cerulean Omniscan 450 side scan sonar |
geometry only |
|
|
Cerulean Surveyor 240-16 multibeam |
geometry only |
Parts whose final mesh has not landed yet use placeholder geometry; a
type marked pending delivery cannot be fitted until its macro lands.
Slots
Each slot is a TF frame named <instance>_<slot>; the occupant is named
after the slot by default.
BlueBoat chassis
Part |
Slot |
Accepts |
Default |
Joint |
|---|---|---|---|---|
|
|
|
|
continuous |
|
|
|
continuous |
|
|
|
|
fixed |
|
|
|
none |
fixed |
|
|
|
none |
fixed |
|
|
|
|
fixed |
|
|
|
|
|
fixed |
BlueROV2 chassis
Part |
Slot |
Accepts |
Default |
Joint |
|---|---|---|---|---|
|
|
|
the matching propeller |
continuous |
|
|
|
fixed |
|
|
|
|
fixed |
|
|
|
none |
fixed |
|
|
|
none |
fixed |
|
|
|
none |
fixed |
|
|
|
none |
fixed |
|
|
|
none |
fixed |
bluerov2_heavy_chassis extends the pattern to thruster_1 …
thruster_8 and thruster_body_1 … thruster_body_8 and keeps the same
accessory slots.
Configuration keys
The vehicle config (<vehicle>_description/config/<vehicle>.yaml, or any
file passed as config_file:=) is one YAML document, identical in shape
for both vehicles:
Key |
Required |
Meaning |
|---|---|---|
|
no (the vehicle name) |
prefix of every part topic: |
|
yes |
the root part: |
|
no ( |
slot entries and free placements, see below |
|
no |
ad hoc slots: |
|
BlueBoat |
the box pontoons the Gazebo composition places on the |
|
BlueROV2 |
|
|
no |
list appended verbatim to the generated ros_gz bridge config (native syntax) |
A slot entry in parts (has slot):
Key |
Meaning |
|---|---|
|
slot name on the carrying instance |
|
instance carrying the slot (default: the base). Not |
|
a type the slot accepts, or |
|
instance name (default: the slot name); must be unique across the vehicle |
|
offset from the slot pose (default zero) |
|
joint type for the occupant (default: the slot’s, else |
|
joint axis override (default: the part’s own spin axis) |
|
|
|
parts with topics (propellers, sensors): topic base for both sides / one side, under the namespace unless it starts with a slash; native bridge keys merged into the entry |
A free placement (no slot):
Key |
Meaning |
|---|---|
|
required |
|
pose relative to |
|
link to attach to (default: the base) |
|
as above |
Resolution rules, including how defaults fill, are in
Slots and assembly. Errors name the problem and fail
the build or launch; a key outside these tables is reported as a typo.
Avoid the other YAML 1.1 boolean words (yes, no, off, y, n) as
bare values too, or quote them.
Frames
Published as TF by robot_state_publisher from the generated URDF. The
frames follow the fitted parts, with the same naming patterns on both vehicles:
Pattern |
Kind |
Meaning |
|---|---|---|
|
root link |
the chassis part: origin at the mesh centroid, x forward, y left, z up (REP 103); floats with its origin at the waterline |
|
link |
one frame per fitted part, named after its slot or its |
|
massless link |
one per slot a part declares, whether filled or not ( |
|
massless link |
frames the part itself declares ( |
The displacement volume is not in the URDF or TF: each Gazebo package adds
it to the composed model as a dedicated link (hull_displacement on the
boat, buoyancy_displacement on the ROV). In Gazebo every fixed joint is
lumped into base_link; the names survive as SDF frames, which is how
sensors are placed. See
Gazebo composition.
Slot poses, accepted types and defaults live in each part’s <part>_info
macro (bluerobotics_parts/urdf/<part>.urdf.xacro); this page mirrors them.