Integration of Articutool System and Dockerized Workflow (Jose's Master's Thesis)#219
Merged
eddienini merged 552 commits intoros2-develfrom Feb 3, 2026
Merged
Integration of Articutool System and Dockerized Workflow (Jose's Master's Thesis)#219eddienini merged 552 commits intoros2-develfrom
eddienini merged 552 commits intoros2-develfrom
Conversation
… tool tip to level, and vertically offset from the plate
… tool tip to level, and vertically offset from the plate
…n constraint, and increase granularity of Jaco EE pitch candidates
The 'Resting' stage was the primary bottleneck in the benchmark, with a high rate of immediate planning failures. Diagnostics revealed this was caused by using a static orientation path constraint with a fixed yaw. If the robot's starting orientation had a different yaw, the error calculation (when converted to Euler angles) would produce large, non-intuitive pitch and roll errors, causing the start state to violate the constraint and the planner to fail. This commit resolves the issue by implementing a dynamic, yaw-aware path constraint for the transport stages: - Before planning, the robot's current end-effector orientation and yaw are calculated using Forward Kinematics. - A new target orientation for the path constraint is constructed on the fly. This new target is perfectly level (zero pitch/roll) but has the *exact same yaw* as the robot's starting pose. - This dynamic constraint ensures the start state is always valid from the planner's perspective, eliminating the immediate failures. Additionally, this commit adds a `compute_moveit_orientation_error` helper function to provide detailed logging and analysis of constraint satisfaction, which was instrumental in diagnosing this issue.
…ld choose a solution where the tool tip was pointing up or down, instead of just up
Extracted monolithic internal sequences from `AcquireFoodTree` into reusable idioms in `ada_feeding/idioms/acquisition.py`. This refactor aligns the code structure with the "High-Level Task Orchestration" architecture. Key Changes: - **Plan-Then-Verify Abstraction**: Moved the robust transport planning logic into `get_robust_move_above_sequence`, encapsulating the IK and dynamic feasibility checks. - **Articutool Primitives**: Abstracted localized primitive execution into `get_articutool_move_into_sequence` and `get_post_retract_primitive_sequence`. - **Active Leveling**: Moved the post-acquisition leveling logic (FK -> IK -> Plan) into `get_post_acquisition_leveling_sequence`. - **Tree Orchestration**: Cleaned up `acquire_food_tree.py` to function as a high-level orchestrator, improving readability and maintainability.
…nt an optional time sync property
eddienini
approved these changes
Feb 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description:
This merge integrates the complete software stack for the Articutool, representing the culmination of my Master's thesis work. It significantly updates the system architecture to support the new hardware capabilities while improving reproducibility for new researchers.
Key Changes:
Dockerized Workflow: Replaced manual host installation with a standardized Docker container (articutool-dev). This ensures the code "just works" on lab machines and drastically reduces onboarding time.
Articutool Behaviors: Added a suite of Behavior Tree nodes for Articutool control, including orientation locking, active leveling, and controller switching.
Robust Planning: Implemented a "Plan-Then-Verify" idiom. The system now validates Articutool kinematics, dynamic feasibility, and "elbow-up" configurations before attempting movement.
Analytic Solvers: Included custom analytic IK solvers for the Articutool's leveling tasks to ensure the food remains stable against gravity.
Note on Backward Compatibility: This update optimizes the system for the Articutool hardware.
For Articutool Users: Follow the new "New Researcher Workflow" in the updated README.md.
For Original ADA Users: If you need the pre-Articutool system, please checkout the release tag v1.0.0-hri25a.
Testing:
Tested extensively on Ubuntu 22.04 / ROS 2 Humble.
Verified with both mock simulation and real hardware execution.
System has been demoed successfully in person multiple times.
Before opening a pull request
pre-commit run --all-filespylint --recursive=y --rcfile=.pylintrc .. All warnings butfixmemust be addressed.Before Merging
Squash & Merge