feat(robot): add FrankaPandaCfg and dual-arm coordinated placement tutorial#362
Open
yuecideng wants to merge 1 commit into
Open
feat(robot): add FrankaPandaCfg and dual-arm coordinated placement tutorial#362yuecideng wants to merge 1 commit into
yuecideng wants to merge 1 commit into
Conversation
…torial Add FrankaPandaCfg for Franka Emika Panda with PandaWithHand URDF, register it in the dual-arm framework, and create a coordinated placement tutorial script demonstrating dual-arm Franka operation with PytorchSolver. - Add FrankaPandaCfg: 7-DOF arm + 2 finger joints, PytorchSolverCfg with Franka TCP (45 deg Z-rotation, 0.1034m Z-offset) - Register 'franka' in DualArmRobotCfg._BASE_ROBOT_REGISTRY - Add coordinated_placement_franka.py tutorial script - Export FrankaPandaCfg from robots __init__.py
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds Franka Emika Panda support to EmbodiChain’s dual-arm robot composition framework and introduces a new dual-arm coordinated placement tutorial that mirrors the existing UR5 demo structure.
Changes:
- Added a new single-arm
FrankaPandaCfgrobot configuration using a Panda-with-hand URDF andPytorchSolverCfg. - Extended the dual-arm base robot registry to support
base_robot="franka"viaDualArmRobotCfg.from_dict(...). - Added a new tutorial script demonstrating dual-arm coordinated placement with Franka arms and bread/pan meshes, and exported
FrankaPandaCfgfrom the robots package.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| scripts/tutorials/atomic_action/coordinated_placement_franka.py | New tutorial/demo for dual-arm Franka coordinated placement planning/execution. |
| embodichain/lab/sim/robots/franka_panda.py | Introduces FrankaPandaCfg (URDF wiring, control parts, solver cfg, defaults). |
| embodichain/lab/sim/robots/dual_arm.py | Registers "franka" in _BASE_ROBOT_REGISTRY so dual-arm composition can resolve Franka. |
| embodichain/lab/sim/robots/init.py | Exports FrankaPandaCfg from the robots package. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+25
to
+30
| from embodichain.lab.sim.cfg import ( | ||
| JointDrivePropertiesCfg, | ||
| RigidBodyAttributesCfg, | ||
| RobotCfg, | ||
| URDFCfg, | ||
| ) |
Comment on lines
76
to
81
| #: Registry mapping a ``base_robot`` key to ``(single-arm cfg class, init dict)``. | ||
| #: Adding a new single-arm robot here is all that is needed to make it | ||
| #: dual-arm-able: e.g. ``"franka": (FrankaRobotCfg, {})``. | ||
| #: dual-arm-able: e.g. ``"franka": (FrankaPandaCfg, {"robot_type": "panda"})``. | ||
| _BASE_ROBOT_REGISTRY: Dict[str, tuple] = { | ||
| "franka": (FrankaPandaCfg, {"robot_type": "panda"}), | ||
| "ur3": (URRobotCfg, {"robot_type": "ur3"}), |
Comment on lines
+76
to
+90
| @configclass | ||
| class FrankaPandaCfg(RobotCfg): | ||
| """Configuration for the Franka Emika Panda robot with Panda hand. | ||
|
|
||
| The PandaWithHand URDF includes both the 7-DOF arm and the parallel-jaw | ||
| gripper in a single file. The solver defaults to | ||
| :class:`~embodichain.lab.sim.solvers.PytorchSolverCfg`. | ||
|
|
||
| Example: | ||
|
|
||
| cfg = FrankaPandaCfg.from_dict({"robot_type": "panda"}) | ||
| robot = sim.add_robot(cfg=cfg) | ||
| """ | ||
|
|
||
| robot_type: str = "panda" |
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 PR adds Franka Emika Panda robot support to the dual-arm framework and a coordinated placement tutorial demonstrating dual-arm Franka operation with PytorchSolver.
Changes
FrankaPandaCfg (
embodichain/lab/sim/robots/franka_panda.py): Single-arm Franka config with PandaWithHand URDF (7-DOF arm Joint1–Joint7 + 2 finger joints), using PytorchSolverCfg with Franka TCP (45° Z-rotation, 0.1034m Z-offset). Default init_qpos from Isaac Lab reference.Dual-arm registry (
embodichain/lab/sim/robots/dual_arm.py): Register"franka"in_BASE_ROBOT_REGISTRYsoDualArmRobotCfg.from_dict({"base_robot": "franka", ...})works.Coordinated placement tutorial (
scripts/tutorials/atomic_action/coordinated_placement_franka.py): Demonstrates dual-arm Franka coordinated placement with bread/pan meshes, following the same structure as the existing UR5 version.Exports (
embodichain/lab/sim/robots/__init__.py): ExportFrankaPandaCfg.Type of change
Checklist
black .command to format the code base.