8000 Massive feature and bug fix dump: nested components, configuration file, attached joints, sliders, rotated origins, etc. by ANogin · Pull Request #49 · cadop/fusion360descriptor · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Massive feature and bug fix dump: nested components, configuration file, attached joints, sliders, rotated origins, etc. #49

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 118 commits into
base: main
Choose a base branch
from

Conversation

ANogin
Copy link
@ANogin ANogin commented Apr 29, 2025

This PR is a result of about 2 man-months worth of development, targeting an ability to export a very complex (100+ components) hierarchical model to ROS. It supersedes #47.

Here is a brief summary of what is included:

  • Bugfixes:
    • Will do the correct thing when occurrence origins are in complicated relationship to each other, including when they are rotated with respect to each other.
    • Will do the right thing with respect to picking the parent/child relationship for URDF
    • Correctly does the unit conversions (knows that some things in Fusion are always in cm, regardless of units used).
  • Features:
    • Supports complicates assembly / subassembly hierarchy
    • Supports slider joints (will do the correct thing with limits, orientation, etc)
    • When an URDF link is composed of multiple bodies, will export each body into a separate stl for the <vision> tag, while merging them into a single URDF for the <collision> tag. This is very important for making sure that collision checking (e.g. when using MoveIT) is fast enough.
    • Can use a prepared configuration .yaml file to avoid needing to specify some of the parameters on every export:
      • Name of the robot
      • Mesh output parameters (whether to output meshes, mesh resolution, etc)
      • Target units
      • Target platform
    • Additional Fusion -> URDF mapping can be specified in the same configuration file:
      • Which Fusion occurrence to map to URDF root link
      • Name mapping for links and joints
      • Link merging - can map several occurrences/subassemblies to a single URDF link. This is extremely helpful for creating a manageable URDF from a complex Fusion model with lots of pieces (remember that the export would only generate a single collision mesh for a URDF link - merging 100+ Fusion occurrences into 10 URDF links, basically merging everything connected with fixed joints / rigid groups into a single URDF link - is a huge speed up for collision checking).
      • "Extras" - specifies URDF links that should be exported as extras into a separate URDF, rather than being included in the main output URDF. We use this to create a configuration that we used as "attached components" in MoveIt, but not a part of the code robot.
    • Takes the units from the Fusion properties, does not require the user to specify
  • Also:
    • The code adds a lot of mypy type annotations, and tries to use more named tuples and less untyped dictionaries, to enable static analysis, and make it easier to keep things straight when developing.
    • The code tries its best to make the order of elements in the URDF repeatable (avoid random reordering of elements, so that when a slightly tweaked model is exported, one can diff the outputs to see what changed).
    • The code includes a bunch of sanity checking to ignore things like suppressed items in Fusion model, while making sure that Fusion model does not have things that the export does not know how to handle.

@apric0ts
Copy link
Collaborator

I'll slowly check out the PR over the next few days, you all did amazing work!

@ANogin
Copy link
Author
ANogin commented May 2, 2025

@apric0ts BTW please do not hesitate to let me know if you'd rather I do not mark comments I've addressed as "resolved" and leave them for you to double-check they are addressed to your satisfaction before resolving.

@apric0ts
Copy link
Collaborator
apric0ts commented May 2, 2025

@ANogin No worries! I can still look at them, thank you though

apric0ts
apric0ts previously approved these changes Jun 3, 2025
Copy link
Collaborator
@apric0ts apric0ts left a comment

Choose a reason for hiding this comment

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

LGTM, cc @cadop

@ANogin
Copy link
Author
ANogin commented Jun 6, 2025

@apric0ts I found and fixed a few minor issues that were flagged when a colleague of mine tried to use the code on a new Fusion model.

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.

4 participants
0