Skip to content

Conversation

@gonzalocasas
Copy link
Member

@gonzalocasas gonzalocasas commented Nov 6, 2025

This very large Pull Request contains the work of @yck011522 during the Theseus project, which replaced large parts of compas_fab and introduced significant architectural changes. The work has been reviewed at different stages with different intensities, and now we're ready to merge to main.

What type of change is this?

  • Bug fix in a backwards-compatible manner.
  • New feature in a backwards-compatible manner.
  • Breaking change: bug fix or new feature that involve incompatible API changes.
  • Other (e.g. doc update, configuration, etc)

Checklist

Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

  • I added a line to the CHANGELOG.md file in the Unreleased section under the most fitting heading (e.g. Added, Changed, Removed).
  • I ran all tests on my computer and it's all green (i.e. invoke test).
  • I ran lint on my computer and there are no errors (i.e. invoke lint).
  • I added new functions/classes and made them available on a second-level import, e.g. compas_fab.robots.CollisionMesh.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have added necessary documentation (if appropriate)

gonzalocasas and others added 23 commits June 5, 2025 11:17
Ensures that the correct physics client is used when resetting joint states and retrieving link states in the inverse kinematics calculation, which is crucial for multi-client setups.
Adds a `verbose` parameter to the `PyBulletClient.connect()` and `PyBulletClient.disconnect()` methods, allowing users to control the verbosity of the PyBullet connection.
This helps in debugging and avoids potential errors related to stdout redirection.

Changes the `PyBulletClient._handle_concavity()` to avoid the `redirect_stdout` context manager to avoid the mysterious `WinError 6: The handle is invalid.` error.
…l state

This facilitates more accurate simulation of robot cell states, particularly when dealing with tools that have configurable joints.
Introduces an `enable_debug_gui` parameter to the `PyBulletBase.connect()` method, allowing users to enable or disable the GUI sidebar and parameter views. This update improves the flexibility of the PyBullet client for debugging and visualization purposes.
Corrects an index error in the inverse kinematics calculation that occurred when resetting joint states after each iteration. The loop variable `i` was incorrectly reused from the outer loop, leading to out-of-bounds access when `len(joint_ids_sorted)` differed from `max_iter`. This change ensures correct joint state updates during inverse kinematics solving.
… configuration

Replaces assignment of joint values with a merge operation to
incorporate all data from the trajectory point, ensuring that
the robot configuration is fully updated with the latest state.
@gonzalocasas gonzalocasas changed the title Make Fab Great Again Theseus project Nov 6, 2025
@jf---
Copy link

jf--- commented Nov 9, 2025

Stoked to see this commit, many issues I ran into were resolved in this branch. Many thanks for your efforts @yck011522 and thanks for taking initiative to merge this @gonzalocasas

If there's a way to help in this effort eager to help out.

@yck011522
Copy link
Contributor

Thanks @gonzalocasas for moving this forward.

@jf---
Copy link

jf--- commented Nov 11, 2025

the GH examples in main seem incompatible (ip2 vs py3 nodes?)
perhaps this checking the examples / updating the GH examples is a small contribution / QA i could make?

interestingly, now that compas_fab can be installed via the package manager (hallelujah) the module isnt installed at ipy2 but in the py3 interpreter:

image

@yck011522
Copy link
Contributor

Yes to the example files @jf--- . I have to admit that some of the example files are not screened.
Regarding installation, @yijiangh knows more than me, he has recently been using compas_fab and even pybullet directly from within Rhino 8 Grasshopper Py3 nodes.

@jf---
Copy link

jf--- commented Nov 13, 2025

Hi @yck011522 yeah with such a large merge QA is more challenging. So some scrutiny on the examples is probably a good idea.

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.

6 participants