From e3d5cfa75112f44c6e3f661fefa44f9e2dff664b Mon Sep 17 00:00:00 2001 From: Rohan Budhiraja <12423606+proyan@users.noreply.github.com> Date: Fri, 1 Apr 2022 14:51:45 +0200 Subject: [PATCH] cassie/cassie_v2 sdf: remove first primatic joint, add color information (#121) * cassie/cassie_v2 sdf: remove first primatic joint, add color information * robots_loader: use updated sdf parser for pin version > 2.9.1 * cassie srdf: update joint info, add missing joints Co-authored-by: Rohan Budhiraja <proyan@users.noreply.github.com> --- python/example_robot_data/robots_loader.py | 37 +++++++-- robots/cassie_description/robots/cassie.sdf | 82 ++++++++++++++++--- .../cassie_description/robots/cassie_v2.sdf | 12 --- robots/cassie_description/srdf/cassie_v2.srdf | 80 ++++++++++++------ 4 files changed, 156 insertions(+), 55 deletions(-) diff --git a/python/example_robot_data/robots_loader.py b/python/example_robot_data/robots_loader.py index ca04140..15eabd6 100644 --- a/python/example_robot_data/robots_loader.py +++ b/python/example_robot_data/robots_loader.py @@ -43,6 +43,7 @@ def readParamsFromSrdf(model, SRDF_PATH, verbose=False, has_rotor_parameters=Tru q0 = pin.neutral(model) if referencePose is not None: q0 = model.referenceConfigurations[referencePose].copy() + q0 = pin.normalize(model, q0) return q0 @@ -51,6 +52,8 @@ class RobotLoader(object): urdf_filename = '' srdf_filename = '' sdf_filename = '' + sdf_root_link_name = '' + sdf_parent_guidance = [] urdf_subpath = 'robots' srdf_subpath = 'srdf' sdf_subpath = '' @@ -66,17 +69,30 @@ class RobotLoader(object): raise AttributeError("Please choose between URDF *or* SDF") df_path = join(self.path, self.urdf_subpath, self.urdf_filename) builder = RobotWrapper.BuildFromURDF + if self.model_path is None: + self.model_path = getModelPath(df_path, self.verbose) + self.df_path = join(self.model_path, df_path) + self.robot = builder(self.df_path, [join(self.model_path, '../..')], + pin.JointModelFreeFlyer() if self.free_flyer else None) else: df_path = join(self.path, self.sdf_subpath, self.sdf_filename) try: builder = RobotWrapper.BuildFromSDF + if self.model_path is None: + self.model_path = getModelPath(df_path, self.verbose) + self.df_path = join(self.model_path, df_path) + if tuple(int(i) for i in pin.__version__.split('.')) > (2, 9, 1): + self.robot = builder(self.df_path, + package_dirs=[join(self.model_path, '../..')], + root_joint=pin.JointModelFreeFlyer() if self.free_flyer else None, + root_link_name=self.sdf_root_link_name, + parent_guidance=self.sdf_parent_guidance) + else: + self.robot = builder(self.df_path, + package_dirs=[join(self.model_path, '../..')], + root_joint=pin.JointModelFreeFlyer() if self.free_flyer else None) except AttributeError: raise ImportError("Building SDF models require pinocchio >= 3.0.0") - if self.model_path is None: - self.model_path = getModelPath(df_path, self.verbose) - self.df_path = join(self.model_path, df_path) - self.robot = builder(self.df_path, [join(self.model_path, '../..')], - pin.JointModelFreeFlyer() if self.free_flyer else None) if self.srdf_filename: self.srdf_path = join(self.model_path, self.path, self.srdf_subpath, self.srdf_filename) @@ -161,11 +177,20 @@ def loadANYmal(withArm=None): class CassieLoader(RobotLoader): path = 'cassie_description' - sdf_filename = "cassie_v2.sdf" + if tuple(int(i) for i in pin.__version__.split('.')) > (2, 9, 1): + sdf_filename = "cassie.sdf" + else: + sdf_filename = "cassie_v2.sdf" sdf_subpath = 'robots' srdf_filename = "cassie_v2.srdf" ref_posture = "standing" free_flyer = True + sdf_root_link_name = "pelvis" + sdf_parent_guidance = [ + "left-roll-op", "left-yaw-op", "left-pitch-op", "left-knee-op", "left-tarsus-spring-joint", "left-foot-op", + "right-roll-op", "right-yaw-op", "right-pitch-op", "right-knee-op", "right-tarsus-spring-joint", + "right-foot-op" + ] class TalosLoader(RobotLoader): diff --git a/robots/cassie_description/robots/cassie.sdf b/robots/cassie_description/robots/cassie.sdf index 68ec25b..8436b9f 100644 --- a/robots/cassie_description/robots/cassie.sdf +++ b/robots/cassie_description/robots/cassie.sdf @@ -38,6 +38,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/pelvis.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> <collision name="pelvis_collision"> <pose frame="">0.02 0 0.04 0 0 0</pose> @@ -69,6 +72,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/hip-roll.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -156,6 +162,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/hip-yaw.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -243,6 +252,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/hip-pitch.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> <collision name="left-hip-pitch_collision"> <pose frame="">0.053 0.0 -0.0379 0 1.57 0</pose> @@ -339,6 +351,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/achilles-rod.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -374,6 +389,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/knee.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -493,6 +511,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/shin.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> <collision name="left-shin_collision"> <pose frame="">0.22 0.01 0.0 0 1.57 0</pose> @@ -543,6 +564,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/tarsus.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> <collision name="left-tarsus_collision"> <pose frame="">0.21 -0.03 0.0 0 1.57 0</pose> @@ -591,6 +615,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/heel-spring.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> </link> @@ -628,6 +655,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/foot-crank.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> </link> @@ -667,6 +697,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/plantar-rod.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -696,9 +729,13 @@ <visual name="left-foot_visual"> <geometry> <mesh> + <scale>1 1 1</scale> <uri>model://example-robot-data/robots/cassie_description/meshes/foot.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> <collision name="left-foot_collision"> <pose frame="">0.01 0.045 0 0 1.57 -0.695</pose> @@ -803,6 +840,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/hip-roll.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -891,6 +931,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/hip-yaw.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -979,6 +1022,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/hip-pitch.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> <collision name="right-hip-pitch_collision"> <pose frame="">0.053 0.0 0.0379 0 1.57 0</pose> @@ -1076,6 +1122,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/achilles-rod.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -1112,6 +1161,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/knee.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -1234,6 +1286,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/shin.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> <collision name="right-shin_collision"> <pose frame="">0.22 0.01 0.0 0 1.57 0</pose> @@ -1285,6 +1340,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/tarsus.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> <collision name="right-tarsus_collision"> <pose frame="">0.21 -0.03 0.0 0 1.57 0</pose> @@ -1334,6 +1392,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/heel-spring.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> </link> @@ -1371,6 +1432,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/foot-crank.stl</uri> </mesh> </geometry> + <material> + <ambient>0.35 0.35 0.35 1</ambient> + </material> </visual> </link> @@ -1411,6 +1475,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/plantar-rod.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> </link> @@ -1444,6 +1511,9 @@ <uri>model://example-robot-data/robots/cassie_description/meshes/foot.stl</uri> </mesh> </geometry> + <material> + <ambient>0.75 0.75 0.75 1</ambient> + </material> </visual> <collision name="right-foot_collision"> <pose frame="">0.01 0.045 0 0 1.57 -0.695</pose> @@ -1587,18 +1657,6 @@ </axis> </joint> - <joint name="static" type="prismatic"> - <parent>world</parent> - <child>pelvis</child> - <axis> - <xyz>0 0 1</xyz> - <limit> - <lower>0</lower> - <upper>0.2</upper> - </limit> - </axis> - </joint> - <!-- Attach the plugin to this model --> <plugin filename="libcassie_plugin.so" name="CassiePlugin"> </plugin> diff --git a/robots/cassie_description/robots/cassie_v2.sdf b/robots/cassie_description/robots/cassie_v2.sdf index 79d17b7..3c5c7f5 100644 --- a/robots/cassie_description/robots/cassie_v2.sdf +++ b/robots/cassie_description/robots/cassie_v2.sdf @@ -1067,18 +1067,6 @@ </axis> </joint> - <joint name="static" type="prismatic"> - <parent>world</parent> - <child>pelvis</child> - <axis> - <xyz>0 0 1</xyz> - <limit> - <lower>0</lower> - <upper>0.2</upper> - </limit> - </axis> - </joint> - <!-- Attach the plugin to this model --> <plugin filename="libcassie_plugin.so" name="CassiePlugin"> </plugin> diff --git a/robots/cassie_description/srdf/cassie_v2.srdf b/robots/cassie_description/srdf/cassie_v2.srdf index 22c20e5..53f843a 100644 --- a/robots/cassie_description/srdf/cassie_v2.srdf +++ b/robots/cassie_description/srdf/cassie_v2.srdf @@ -27,29 +27,59 @@ <joint name="right-foot-op" /> </group> - <group_state name="standing" group="whole_body"> - <joint name="root_joint" value="-0.00992617 -0.00004808 1.02458068 0.0 0.0 0.0 1.0" /> - <joint name="left-roll-op" value="-0.00513955" /> - <joint name="left-yaw-op" value="0.00459357" /> - <joint name="left-pitch-op" value="0.59575303" /> - <joint name="left-knee-op" value="0.03162615" /> - <joint name="left-knee-shin-joint" value="-0.51390881" /> - <joint name="left-shin-tarsus-joint" value="0.25810122" /> - <joint name="left-tarsus-spring-joint" value="0.53679290" /> - <joint name="left-achilles-spring-joint" value="-0.79073525" /> - <joint name="left-tarsus-crank-joint" value="-1.44545535" /> - <joint name="left-crank-rod-joint" value="1.44544632" /> - <joint name="left-foot-op" value="-1.44548599" /> - <joint name="right-roll-op" value="0.00529991" /> - <joint name="right-yaw-op" value=" 0.00443722" /> - <joint name="right-pitch-op" value="0.59614815" /> - <joint name="right-knee-op" value="0.03053357" /> - <joint name="right-knee-shin-joint" value="-0.51316503" /> - <joint name="right-shin-tarsus-joint" value="0.25804492" /> - <joint name="right-tarsus-spring-joint" value="0.53716726" /> - <joint name="right-achilles-spring-joint"value="-0.79113522" /> - <joint name="right-tarsus-crank-joint" value="-1.46635249" /> - <joint name="right-crank-rod-joint" value="1.46950485" /> - <joint name="right-foot-op" value="-1.44610592" /> - </group_state> + + +<group_state name="standing" group="whole_body"> + <joint name="root_joint" value="-5.27093838e-01 -2.76381629e-04 9.39151616e-01 9.61380040e-06 9.38217754e-04 2.14890379e-05 9.99999560e-01"/> + <joint name="left-roll-ip" value="-0.01295769"/> + <joint name="left-roll-joint" value="0.01295123"/> + <joint name="left-yaw-ip" value="0.01484168"/> + <joint name="left-yaw-joint" value="-0.01488228"/> + <joint name="left-pitch-ip" value="1.5890490074366923"/> + <joint name="left-pitch-joint" value="-1.39665541"/> + <joint name="left-pitch-rod-joint" value=" 0.00604391 0.00460982 -0.0835031 0.99647853"/> + <joint name="left-achilles-spring-joint" value="3.4570118e-08"/> + <joint name="left-knee-ip" value="1.40316539"/> + <joint name="left-knee-joint" value="-1.6305735"/> + <joint name="left-knee-spring-joint" value="-5.11663898e-06"/> + <joint name="left-knee-shin-joint" value="-5.11663898e-06"/> + <joint name="left-shin-tarsus-joint" value="0.6929022"/> + <joint name="left-tarsus-spring-joint" value="-0.63338278"/> + <joint name="left-tarsus-crank-joint" value="-1.75141719"/> + <joint name="left-crank-rod-joint" value="1.75140759"/> + <joint name="left-plantar-foot-joint" value=" 1.11717507e-13 -2.82102963e-06 -7.68002342e-01 6.40447034e-01"/> + <joint name="left-foot-ip" value="1.42120011"/> + <joint name="left-foot-joint" value="-3.17264196"/> + <joint name="left-foot-op" value="-1.75144185"/> + <joint name="left-shin-spring-joint" value="-1.79084209e-07"/> + <joint name="left-knee-op" value="-0.22740812"/> + <joint name="left-pitch-op" value="0.19239359743669127"/> + <joint name="left-yaw-op" value="-4.059968e-05"/> + <joint name="left-roll-op" value="-6.46156049e-06"/> + <joint name="right-roll-ip" value="-0.01295208"/> + <joint name="right-roll-joint" value="0.01317795"/> + <joint name="right-yaw-ip" value="0.01658614"/> + <joint name="right-yaw-joint" value="-0.0166263"/> + <joint name="right-pitch-ip" value="1.5912251274366866"/> + <joint name="right-pitch-joint" value="-1.39653428"/> + <joint name="right-pitch-rod-joint" value="-0.00604403 -0.0046093 -0.08350479 0.99647839"/> + <joint name="right-achilles-spring-joint" value="-1.63406124e-14"/> + <joint name="right-knee-ip" value="1.40275306"/> + <joint name="right-knee-joint" value="-1.63016464"/> + <joint name="right-knee-spring-joint" value="-7.87499336e-06"/> + <joint name="right-knee-shin-joint" value="-7.87499336e-06"/> + <joint name="right-shin-tarsus-joint" value="0.69293781"/> + <joint name="right-tarsus-spring-joint" value="-0.63341554"/> + <joint name="right-tarsus-crank-joint" value="-1.75391974"/> + <joint name="right-crank-rod-joint" value="1.75706331"/> + <joint name="right-plantar-foot-joint" value="-4.83732315e-14 -2.80375818e-06 -7.63300126e-01 6.46044053e-01"/> + <joint name="right-foot-ip" value="1.39961783"/> + <joint name="right-foot-joint" value="-3.13328631"/> + <joint name="right-foot-op" value="-1.73366848"/> + <joint name="right-shin-spring-joint" value="-2.75627693e-07"/> + <joint name="right-knee-op" value="-0.22741158"/> + <joint name="right-pitch-op" value="0.1946908474366893"/> + <joint name="right-yaw-op" value="-4.01635934e-05"/> + <joint name="right-roll-op" value="0.00022586"/> +</group_state> </robot> -- GitLab