Skip to content

Commit f0a57ce

Browse files
committed
Pass poses from config with arm_id on Franka
1 parent 7a08e46 commit f0a57ce

File tree

2 files changed

+42
-23
lines changed

2 files changed

+42
-23
lines changed

clearpath_generator_common/clearpath_generator_common/semantic_description/generator.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ def generate_arms(self) -> None:
7979
for pose in arm.poses:
8080
pose_macro = ManipulatorPoseMacro(arm, pose)
8181
self.xacro_writer.write_macro(
82-
macro=pose_macro.macro(),
83-
parameters=pose_macro.parameters(),
84-
blocks=pose_macro.blocks(),
82+
macro=pose_macro.macro,
83+
parameters=pose_macro.parameters,
84+
blocks=pose_macro.blocks,
8585
)
8686

8787
self.xacro_writer.write_macro(
@@ -113,9 +113,9 @@ def generate_grippers(self) -> None:
113113
for pose in arm.gripper.poses:
114114
pose_macro = ManipulatorPoseMacro(arm.gripper, pose)
115115
self.xacro_writer.write_macro(
116-
macro=pose_macro.macro(),
117-
parameters=pose_macro.parameters(),
118-
blocks=pose_macro.blocks(),
116+
macro=pose_macro.macro,
117+
parameters=pose_macro.parameters,
118+
blocks=pose_macro.blocks,
119119
)
120120

121121
self.xacro_writer.write_macro(

clearpath_generator_common/clearpath_generator_common/semantic_description/manipulators.py

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,42 @@
3939

4040
class ManipulatorPoseMacro():
4141

42-
def __init__(self, manipulator: BaseManipulator, pose: ManipulatorPose) -> None:
43-
self.manipulator = manipulator
44-
self.pose = pose
45-
46-
def macro(self) -> str:
47-
return f'{self.manipulator.MANIPULATOR_MODEL}_group_state'
48-
49-
def parameters(self) -> dict:
50-
str_joints = [f'{joint:.4f}' for joint in self.pose.joints]
51-
return {
52-
'name': self.manipulator.name,
53-
'group_state': self.pose.name,
54-
'joint_positions': f'${{[{", ".join(str_joints)}]}}'
55-
}
56-
57-
def blocks(self) -> str:
58-
return None
42+
class BasePoseMacro():
43+
NAME = 'name'
44+
GROUP_STATE = 'group_state'
45+
JOINT_POSITIONS = 'joint_positions'
46+
47+
def __init__(self, manipulator: BaseManipulator, pose: ManipulatorPose) -> None:
48+
self.manipulator = manipulator
49+
self.pose = pose
50+
# Extract Joint Values
51+
joints_string = [f'{joint:.4f}' for joint in self.pose.joints]
52+
# Macro
53+
self.macro = f'{self.manipulator.MANIPULATOR_MODEL}_group_state'
54+
# Parameters
55+
self.parameters = {
56+
self.NAME: self.manipulator.name,
57+
self.GROUP_STATE: self.pose.name,
58+
self.JOINT_POSITIONS: f'${{[{", ".join(joints_string)}]}}'
59+
}
60+
# Blocks
61+
self.blocks = None
62+
63+
class FrankaPoseMacro(BasePoseMacro):
64+
65+
def __init__(self, manipulator, pose):
66+
super().__init__(manipulator, pose)
67+
self.parameters[Franka.ARM_ID] = self.manipulator.arm_id
68+
69+
MODEL = {
70+
Franka.MANIPULATOR_MODEL: FrankaPoseMacro,
71+
FrankaGripper.MANIPULATOR_MODEL: FrankaPoseMacro
72+
}
73+
74+
def __new__(cls, manipulator: BaseManipulator, pose: ManipulatorPose) -> BaseManipulator:
75+
return ManipulatorPoseMacro.MODEL.setdefault(
76+
manipulator.MANIPULATOR_MODEL,
77+
ManipulatorPoseMacro.BasePoseMacro)(manipulator, pose)
5978

6079

6180
class ManipulatorSemanticDescription():

0 commit comments

Comments
 (0)