-
Notifications
You must be signed in to change notification settings - Fork 9
Feature: Basic Agentic Pick and Place - reimplemented manipulation skills #1237
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
mustafab0
wants to merge
16
commits into
dev
Choose a base branch
from
feature/mustafa-reimplemnt-manipulation-skills
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
851a433
TF support on manipulation module and Object Input topic support
mustafab0 c695e1f
blueprint added for xarm7 and realsense robot
mustafab0 b925d1c
updated rrt planner to have error margins since real world encoder va…
mustafab0 ef72c57
coordinator client updated to use task invoke
mustafab0 22f9699
implemented pick and place skill with agentic pipeline
mustafab0 5490cfb
added xarm-perception-agent blueprint
mustafab0 da21c88
deprecated manipulation client
mustafab0 673c387
typo — get_status should be get_state. Fixed
mustafab0 c838e58
removed PoseArray which was unused as graspgen module is yet to be in…
mustafab0 e00823f
reclassified skills to single and multi step actions
mustafab0 1744af9
added standard types for JointState and Vector3
mustafab0 9dfa2a5
removed object datatype and replaced with Any to avoid confusion with…
mustafab0 63832e6
removed make pose helper
mustafab0 959b596
removed dead code for graspgen rpc call as graspgen isn't integrated …
mustafab0 e869963
replaced stray object to Object type
mustafab0 d918d9e
replaced SkillModule with Module
mustafab0 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,20 +16,20 @@ | |
| Blueprints for manipulation module integration with ControlCoordinator. | ||
|
|
||
| Usage: | ||
| # Start coordinator first, then planner: | ||
| coordinator = xarm7_planner_coordinator.build() | ||
| coordinator.loop() | ||
|
|
||
| # Plan and execute via RPC client: | ||
| from dimos.manipulation.planning.examples.manipulation_client import ManipulationClient | ||
| client = ManipulationClient() | ||
| client.plan_to_joints([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7]) | ||
| client.execute() | ||
| # Non-agentic (manual RPC): | ||
| dimos run coordinator-mock | ||
| dimos run xarm-perception | ||
|
|
||
| # Agentic (LLM agent with skills): | ||
| dimos run coordinator-mock | ||
| dimos run xarm-perception-agent | ||
| """ | ||
|
|
||
| import math | ||
| from pathlib import Path | ||
|
|
||
| from dimos.agents.agent import llm_agent | ||
| from dimos.agents.cli.human import human_input | ||
| from dimos.core.blueprints import autoconnect | ||
| from dimos.core.transport import LCMTransport | ||
| from dimos.hardware.sensors.camera.realsense import realsense_camera | ||
|
|
@@ -232,6 +232,8 @@ def _make_xarm7_config( | |
| coordinator_task_name=coordinator_task, | ||
| gripper_hardware_id=gripper_hardware_id, | ||
| tf_extra_links=tf_extra_links or [], | ||
| # Home configuration: arm extended forward, elbow up (safe observe pose) | ||
| home_joints=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hey, I think we need to add the |
||
| ) | ||
|
|
||
|
|
||
|
|
@@ -366,11 +368,43 @@ def _make_piper_config( | |
| ) | ||
|
|
||
|
|
||
| # XArm7 perception + LLM agent for agentic manipulation | ||
| # Skills (pick, place, move_to_pose, etc.) auto-register with the agent's SkillCoordinator. | ||
| # Usage: dimos run coordinator-mock, then dimos run xarm-perception-agent | ||
| _MANIPULATION_AGENT_SYSTEM_PROMPT = """\ | ||
| You are a robotic manipulation assistant controlling an xArm7 robot arm. | ||
|
|
||
| Use ONLY these ManipulationModule skills for manipulation tasks: | ||
| - scan_objects: Scan scene and list detected objects with 3D positions. Always call this first. | ||
| - pick: Pick up an object by name. Requires scan_objects first. | ||
| - place: Place a held object at x, y, z position. | ||
| - place_back: Place a held object back at its original pick position. | ||
| - pick_and_place: Pick an object and place it at a target location. | ||
| - move_to_pose: Move end-effector to x, y, z with optional roll, pitch, yaw. | ||
| - move_to_joints: Move to a joint configuration (comma-separated radians). | ||
| - open_gripper / close_gripper / set_gripper: Control the gripper. | ||
| - go_home: Move to the home/observe position. | ||
| - go_init: Return to the startup position. | ||
| - get_scene_info: Get full robot state, detected objects, and scene info. | ||
|
|
||
| Do NOT use the 'detect' or 'select' skills — use scan_objects instead. | ||
| For robot_name parameters, always omit or pass None (single-arm setup). | ||
| After pick or place, return to init with go_init unless another action follows immediately. | ||
| """ | ||
|
|
||
| xarm_perception_agent = autoconnect( | ||
| xarm_perception, | ||
| llm_agent(system_prompt=_MANIPULATION_AGENT_SYSTEM_PROMPT), | ||
| human_input(), | ||
| ) | ||
|
|
||
|
|
||
| __all__ = [ | ||
| "PIPER_GRIPPER_COLLISION_EXCLUSIONS", | ||
| "XARM_GRIPPER_COLLISION_EXCLUSIONS", | ||
| "dual_xarm6_planner", | ||
| "xarm6_planner_only", | ||
| "xarm7_planner_coordinator", | ||
| "xarm_perception", | ||
| "xarm_perception_agent", | ||
| ] | ||
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.