Skip to content

SITL support for heavy variant of bluerov2 #61

Description

@bsb808

Deferred out of SITL phase 3, which shipped the standard 6-thruster BlueROV2 under ArduSub. Recording what phase 3 established so the Heavy does not start from scratch.

The Heavy is not a SITL gap, it is a missing vehicle

bluerov2_heavy_chassis is a part with a mesh (bluerobotics_parts/urdf/bluerov2_heavy_chassis.urdf.xacro) and a teleop mixer (bluerobotics_teleop/config/bluerov2_heavy/mixer.yaml), and nothing assembles it. There is no loadout config, no CMake model rule, no world and no bridge config. So "support the Heavy in SITL" is mostly ordinary vehicle work wearing a SITL label, and that is why it was split out rather than carried.

The geometry is already verified

The Heavy's eight slots map exactly onto ArduSub's Vectored_6DOF frame (AP_Motors6DOF.cpp:156-166), checked by hand against the slot poses:

  • thrusters 1-4: identical to the standard vehicle, surge/sway/yaw
  • thruster_5 (0.118, -0.215) -> MOT_5, roll +1, pitch -1, throttle -1
  • thruster_6 (0.118, +0.215) -> MOT_6, roll -1, pitch -1, throttle -1
  • thruster_7 (-0.118, -0.215) -> MOT_7, roll +1, pitch +1, throttle -1
  • thruster_8 (-0.118, +0.215) -> MOT_8, roll -1, pitch +1, throttle -1

So channel = N - 1 holds for eight as it does for six.

What phase 3 leaves ready

  • The <control> blocks are emitted from the assembly, not written out, so eight fall out of the chassis with no code change.
  • bluerov2_gazebo/test/test_ardusub_frame.py encodes the Vectored table and is straightforward to parametrize over a second frame; the Vectored_6DOF factors above are what it would assert.
  • generate_model.py --ardupilot and the CMake rule take a second config without modification.

What it still needs

  • A loadout config selecting bluerov2_heavy_chassis, plus the model, world and bridge rules that go with it.
  • An imu entry in the heavy chassis's frames dict - one line, deliberately not added in phase 3 since nothing assembles that chassis.
  • Its own parameter file from ArduSub/4.7/navigator/Heavy BlueROV2.params, which sets FRAME_CONFIG 2.
  • -f vectored_6dof --model JSON rather than -f gazebo-bluerov2: there is no gazebo-bluerov2-heavy entry in vehicleinfo.json, and vectored_6dof picks up sub-6dof.parm.
  • One collision to watch: sub.parm assigns SERVO8_FUNCTION 7 (camera tilt), which conflicts with motor 8 on a 6DOF frame.
  • Roll and pitch become real axes, so the walkthrough gains rc 1 and rc 2 rows that currently say "does nothing".

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions