Skip to content

Rslee/blueboat source assembly - #83

Merged
bsb808 merged 11 commits into
lyricalfrom
rslee/blueboat-source-assembly
Oct 18, 2026
Merged

bsb808 merged 11 commits into
lyricalfrom
rslee/blueboat-source-assembly

Conversation

@phfatmonkey

Copy link
Copy Markdown
Collaborator

Includes the latest exports of blueboat_chassis and m200_weedless_props, both clockwise and counter-clockwise.

  • All meshes use the glTF Compliant Material as mentioned in exporting-from-blender.md in the gltf-robotics repo.
  • Meshes are front-facing in Blender, according to the plan
  • Exporter settings are saved in the source .blend files.
  • Visuals are exported with the _visual convention rather than .visual
  • model.sdf includes pose transform on the visual node to orient correctly in Gazebo

Also, the source .blend files are included. I've provided two methods so we can test the best way to extract the transform offsets for assembled parts (e.g. the propellers).

  • blueboat_chassis__ASSEMBLED_NODES.blend: This .blend file contains the blueboat_chassis and merged copies of the propellers aligned and offset on the model
image
  • blueboat_chassis__LINKED_COLLECTIONS.blend: This .blend file is set up similarly to the above blend, except the propellers are instances of the propeller in the included m200_weedless_prop.blend. This means that there is an active link between the prop and the chassis. So any changes to the prop would be reflected in the chassis file. The advantages to this method are we could determine the datum first for all parts, and then assemble them in a "main blend file," and the parts could then be modeled after the datum is determined.

@phfatmonkey
phfatmonkey requested a review from bsb808 October 16, 2026 17:13
@bsb808

bsb808 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

I was able to extract the positing information from the blend file. I actually exported the ASSEMBLED as a glb and then used the gltf-summary tool (from gtlf-robotics) to extract the transforms and hand jam them into the assembly.

Doing the assembly is going to be out of scope for gltf-robotics and this repo. it works well, and we'll keep doing it, just won't be captured for now.

So, please remove the blend files from the PR.

@bsb808

bsb808 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Also, as I said on slack, you can ignore the CI failures here - also out of scope for this PR.

@bsb808

bsb808 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

The two prop files (cw and ccw) are each contain both meshes and two scenes.  

When you have new glb files for the props, please update PR #83. I'll retest.

bsb808 added a commit that referenced this pull request Oct 18, 2026
Workflow step 1 for the gltf-robotics pilot (PR #83). The commission YAML
covers blueboat_chassis (base) and m200_weedless_prop_cw / _ccw
(components); the commission page and its three figures define the
chassis datum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@bsb808 bsb808 left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are very close.

  • Please rebase to lyrical to pickup the commission from #84

  • The only change is the discussed re-export of the prop glb models

  • You can ignore the CI. I'll fix it in #85

@bsb808
bsb808 merged commit 03155b3 into lyrical Oct 18, 2026
1 of 2 checks passed
@bsb808
bsb808 deleted the rslee/blueboat-source-assembly branch October 18, 2026 23:17
@bsb808

bsb808 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

I intentionally merged with CI slightly broken. The CI will be fixed in the assembly - #85

bsb808 added a commit that referenced this pull request Oct 18, 2026
…ified

The main result of this increment: base_link's frame is verified to follow
ISO 9787 / REP 103 (x forward, y left, z up) against the PR #83 chassis
geometry in Gazebo. The check was visual, in a visuals only spike world
(~/maritime_ws/spike/blueboat_frames, not in the repo) generated from the
real Gazebo flavoured expansion: one link, one visual, an ISO reference
triad beside the boat, View > Frames showing just the link and glTF frames
as in gltf-robotics docs/walkthroughs/coordinate_orientation_demo.md.

- parts.xacro: part_visual takes axes:=gltf for deliveries in the Honu glTF
  Asset Profile's axes (+x left, +y up, +z forward): rpy 1.5708 0 1.5708 for
  Gazebo, 0 0 1.5708 for RViz from Lyrical on (it adds the roll itself), as
  the walkthrough sets. axes:=legacy (default) keeps the old rotation for
  the earlier exports.
- blueboat_chassis, m200_weedless_prop_ccw/_cw opt in with axes="gltf".
  Rotated into base_link, the chassis mesh is 1.19 m along x and 0.93 m
  along y, on the colliders. Prop slot poses are unchanged.
- The two tests that pinned one visual rotation per flavour accept both.
- worlds/parts_check.sdf regenerated: the three parts' visual poses only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bsb808 added a commit that referenced this pull request Oct 18, 2026
The prop_port / prop_stbd slot poses now come from the glTF export of the
Blender assembly (source_files/blueboat_assembly/
blueboat_chassis__ASSEMBLED_NODES.glb, PR #83): the prop nodes relative to
the chassis node, mapped from glTF axes to base_link's.

  prop_port  -0.52  0.301 -0.117, rpy 0 0 0 -> -0.5196  0.3016 -0.1268, rpy 0 0 3.1416
  prop_stbd  -0.52 -0.301 -0.117, rpy 0 0 0 -> -0.5196 -0.3016 -0.1270, rpy 0 0 3.1416

The scene's 180 degree yaw points the prop's own +x (its spin axis) aft,
which drove the boat astern on positive thrust (measured ~2 m/s toward -X
at cmd 0.3). Slots can now declare `axis`, the occupant's joint axis in its
own frame (entry axis:, else the slot's, else the part's), and the two
BlueBoat prop slots set -1 0 0: thrust is ahead again (~2 m/s toward +X).
The correction is in the BlueBoat mounting, not the M200 parts; whether
the export should face aft at all is open on #83.

The source and the axis reasoning are recorded in a comment in
blueboat_chassis.urdf.xacro; the parts contract, assembly.py's ad hoc slot
keys and the configuration keys reference list `axis`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants