diff --git a/python/example_robot_data/robots_loader.py b/python/example_robot_data/robots_loader.py index 8eb0d6ec174fdc574ba8e74fbed337267a7df58b..90a1623213e17a945470d35113da3d5adc37492c 100644 --- a/python/example_robot_data/robots_loader.py +++ b/python/example_robot_data/robots_loader.py @@ -258,6 +258,14 @@ def loadHyQ(): return HyQLoader().robot +class BoltLoader(RobotLoader): + path = 'bolt_description' + urdf_filename = "bolt.urdf" + srdf_filename = "bolt.srdf" + ref_posture = "standing" + free_flyer = True + + class Solo8Loader(RobotLoader): path = 'solo_description' urdf_filename = "solo.urdf" @@ -504,6 +512,7 @@ ROBOTS = { 'romeo': RomeoLoader, 'simple_humanoid': SimpleHumanoidLoader, 'simple_humanoid_classical': SimpleHumanoidClassicalLoader, + 'bolt': BoltLoader, 'solo': SoloLoader, 'solo8': Solo8Loader, 'solo12': Solo12Loader, diff --git a/robots/bolt_description/meshes/stl/bolt_body.stl b/robots/bolt_description/meshes/stl/bolt_body.stl new file mode 100644 index 0000000000000000000000000000000000000000..bd1b67e9ff25b56ab7d8a10eb9358857c84f2e32 Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_body.stl differ diff --git a/robots/bolt_description/meshes/stl/bolt_foot.stl b/robots/bolt_description/meshes/stl/bolt_foot.stl new file mode 100644 index 0000000000000000000000000000000000000000..4f51e3599141c29bdb7b32fb168d3e172608bc67 Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_foot.stl differ diff --git a/robots/bolt_description/meshes/stl/bolt_hip_fe_left_side.stl b/robots/bolt_description/meshes/stl/bolt_hip_fe_left_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..6d64ceaa5c1fd13937a5950b7b2b62447e673522 Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_hip_fe_left_side.stl differ diff --git a/robots/bolt_description/meshes/stl/bolt_hip_fe_right_side.stl b/robots/bolt_description/meshes/stl/bolt_hip_fe_right_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..767ce85b127f859318e3e93bb93d4909432b6de1 Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_hip_fe_right_side.stl differ diff --git a/robots/bolt_description/meshes/stl/bolt_lower_leg_left_side.stl b/robots/bolt_description/meshes/stl/bolt_lower_leg_left_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..fe72c5604d42146391cc2cac2678e0ec4766eeec Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_lower_leg_left_side.stl differ diff --git a/robots/bolt_description/meshes/stl/bolt_lower_leg_right_side.stl b/robots/bolt_description/meshes/stl/bolt_lower_leg_right_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..83c9179ec0da1683b2d8a3cbb66c676f0c9428bf Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_lower_leg_right_side.stl differ diff --git a/robots/bolt_description/meshes/stl/bolt_upper_leg_left_side.stl b/robots/bolt_description/meshes/stl/bolt_upper_leg_left_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..751f608820395cba4d004511c76a34010f10de95 Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_upper_leg_left_side.stl differ diff --git a/robots/bolt_description/meshes/stl/bolt_upper_leg_right_side.stl b/robots/bolt_description/meshes/stl/bolt_upper_leg_right_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..382dd255d22aaa7b475064326d3ad28a38faca77 Binary files /dev/null and b/robots/bolt_description/meshes/stl/bolt_upper_leg_right_side.stl differ diff --git a/robots/bolt_description/meshes/stl/lower_leg_200mm_left_side.stl b/robots/bolt_description/meshes/stl/lower_leg_200mm_left_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..35f276735ba572fb87fc0d0c4810b5793a0a29af Binary files /dev/null and b/robots/bolt_description/meshes/stl/lower_leg_200mm_left_side.stl differ diff --git a/robots/bolt_description/meshes/stl/lower_leg_200mm_right_side.stl b/robots/bolt_description/meshes/stl/lower_leg_200mm_right_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..58eb3b72ba17bee75d276f2ec2f4b80ed9825f09 Binary files /dev/null and b/robots/bolt_description/meshes/stl/lower_leg_200mm_right_side.stl differ diff --git a/robots/bolt_description/meshes/stl/upper_leg_200mm_left_side.stl b/robots/bolt_description/meshes/stl/upper_leg_200mm_left_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..9b76c2f7dd820d33d6f9e44a01999951e9a3be79 Binary files /dev/null and b/robots/bolt_description/meshes/stl/upper_leg_200mm_left_side.stl differ diff --git a/robots/bolt_description/meshes/stl/upper_leg_200mm_right_side.stl b/robots/bolt_description/meshes/stl/upper_leg_200mm_right_side.stl new file mode 100644 index 0000000000000000000000000000000000000000..39869035a01477d57f7d1c48c5ddb6aaa089164c Binary files /dev/null and b/robots/bolt_description/meshes/stl/upper_leg_200mm_right_side.stl differ diff --git a/robots/bolt_description/robots/bolt.urdf b/robots/bolt_description/robots/bolt.urdf new file mode 100644 index 0000000000000000000000000000000000000000..c584ba80384061bd75226ff8808f8557a20da521 --- /dev/null +++ b/robots/bolt_description/robots/bolt.urdf @@ -0,0 +1,416 @@ +<?xml version="1.0" ?> +<!-- =================================================================================== --> +<!-- | This document was autogenerated by xacro from /usr/local/lib/python3.9/site-packages/robot_properties_bolt/resources/xacro/bolt.urdf.xacro | --> +<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | --> +<!-- =================================================================================== --> +<robot name="bolt" xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller" xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface" xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor" xmlns:xacro="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"> + <!-- This file is based on: https://atlas.is.localnet/confluence/display/AMDW/Quadruped+URDF+Files --> + <link name="base_link"> + <!-- BASE LINK INERTIAL --> + <inertial> + <origin rpy="0 0 0" xyz="0 0 0"/> + <mass value="0.61436936"/> + <!-- The base is extremely symmetrical. --> + <inertia ixx="0.00578574" ixy="0.0" ixz="0.0" iyy="0.01938108" iyz="0.0" izz="0.02476124"/> + </inertial> + <!-- BASE LINK VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_body.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- BASE LINK COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_body.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="1.0"/> + <restitution value="0.5"/> + </contact> + </link> + <!-- END BASE LINK --> + <!--xacro:property name="base_2_HAA_x" value="${2.45656 * 0.001}" /> + <xacro:property name="base_2_HAA_y" value="${63.6 * 0.001}" /> + <xacro:property name="base_2_HAA_z" value="${33.0809 * 0.001}" /--> + <joint name="FL_HAA" type="revolute"> + <parent link="base_link"/> + <child link="FL_SHOULDER"/> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- joints rotates around the x-axis --> + <axis xyz="1 0 0"/> + <origin rpy="0 0 0" xyz="0.0 0.0636 0"/> + <!--xacro:unless value="${is_right}"> + <origin xyz="${base_2_HAA_x} ${base_2_HAA_y + 0.0007888} ${-base_2_HAA_z}" rpy="0 0 0" /> + </xacro:unless> + <xacro:if value="${is_right}"> + <origin xyz="${base_2_HAA_x} ${-base_2_HAA_y + 0.0007888} ${-base_2_HAA_z}" rpy="0 0 0" /> + </xacro:if--> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FL_SHOULDER"> + <!-- TODO: Update inertias and add visuals for link. --> + <!-- create a dummy shoulder link to join the two joints --> + <inertial> + <!-- Left upper leg inertia --> + <mass value="0.14004265"/> + <origin rpy="0 0 0" xyz="0.01708256 -0.00446892 -0.01095830"/> + <inertia ixx="0.00007443" ixy="0.00000148" ixz="0.00002154" iyy="0.00013847" iyz="-0.00001096" izz="0.00009002"/> + </inertial> + <!-- HIP LEG LINK VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_hip_fe_left_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- UPPER LEG LINK COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_hip_fe_left_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="1.0"/> + <restitution value="0.5"/> + </contact> + </link> + <joint name="FL_HFE" type="revolute"> + <parent link="FL_SHOULDER"/> + <child link="FL_UPPER_LEG"/> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- joints rotates around the y-axis --> + <axis xyz="0 1 0"/> + <origin rpy="0 0 0" xyz="0 0.0145 -0.0386"/> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FL_UPPER_LEG"> + <!-- Left upper leg inertia --> + <inertial> + <origin rpy="0 0 0" xyz="0.00001377 0.01935853 -0.11870700"/> + <mass value="0.14853845"/> + <inertia ixx="0.00041107" ixy="0.00000000" ixz="0.00000009" iyy="0.00041193" iyz="-0.00004671" izz="0.00003024"/> + </inertial> + <!-- UPPER LEG LINK VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/upper_leg_200mm_left_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- UPPER LEG LINK COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/upper_leg_200mm_left_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="1.0"/> + <restitution value="0.5"/> + </contact> + </link> + <!-- END UPPER LEG LINK --> + <!-- KFE: Joint between the upper leg and the lower leg --> + <joint name="FL_KFE" type="revolute"> + <parent link="FL_UPPER_LEG"/> + <child link="FL_LOWER_LEG"/> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- joints rotates around the y-axis --> + <axis xyz="0 1 0"/> + <origin rpy="0 0 0" xyz="0 0.0374 -0.2"/> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FL_LOWER_LEG"> + <!-- Left lower leg inertia --> + <inertial> + <origin rpy="0 0 0" xyz="0.0 0.00836718 -0.11591877"/> + <mass value="0.03117243"/> + <inertia ixx="0.00011487" ixy="0.00000000" ixz="0.00000000" iyy="0.00011556" iyz="-0.00000190" izz="0.00000220"/> + </inertial> + <!-- LOWER LEG LINK VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/lower_leg_200mm_left_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- LOWER LEG LINK COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/lower_leg_200mm_left_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="1.0"/> + <restitution value="0.5"/> + </contact> + </link> + <!-- END LOWER LEG LINK --> + <!-- KFE: Joint between the upper leg and the lower leg --> + <joint name="FL_ANKLE" type="fixed"> + <parent link="FL_LOWER_LEG"/> + <child link="FL_FOOT"/> + <origin rpy="0 0 0" xyz="0 0.008 -0.2"/> + <!-- Limits (usefull?) --> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FL_FOOT"> + <!-- FOOT INERTIAL --> + <!-- This link is symmetrical left or right --> + <inertial> + <origin rpy="0 0 0" xyz="0 0 0.00035767"/> + <mass value="0.00000000"/> + <inertia ixx="0.00000057" ixy="0.0" ixz="0.0" iyy="0.00000084" iyz="0.0" izz="0.00000053"/> + </inertial> + <!-- FOOT VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_foot.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- FOOT COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_foot.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="4.0"/> + <restitution value="0.0"/> + </contact> + </link> + <!-- END LOWER LEG LINK --> + <joint name="FR_HAA" type="revolute"> + <parent link="base_link"/> + <child link="FR_SHOULDER"/> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- joints rotates around the x-axis --> + <axis xyz="1 0 0"/> + <origin rpy="0 0 0" xyz="0.0 -0.0636 0"/> + <!--xacro:unless value="${is_right}"> + <origin xyz="${base_2_HAA_x} ${base_2_HAA_y + 0.0007888} ${-base_2_HAA_z}" rpy="0 0 0" /> + </xacro:unless> + <xacro:if value="${is_right}"> + <origin xyz="${base_2_HAA_x} ${-base_2_HAA_y + 0.0007888} ${-base_2_HAA_z}" rpy="0 0 0" /> + </xacro:if--> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FR_SHOULDER"> + <!-- TODO: Update inertias and add visuals for link. --> + <!-- create a dummy shoulder link to join the two joints --> + <inertial> + <!-- Right upper leg inertia --> + <mass value="0.14004412"/> + <origin rpy="0 0 0" xyz="0.01708233 0.00447099 -0.01095846"/> + <inertia ixx="0.00007442" ixy="-0.00000148" ixz="0.00002154" iyy="0.00013848" iyz="0.00001095" izz="0.00009001"/> + </inertial> + <!-- HIP LEG LINK VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_hip_fe_right_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- UPPER LEG LINK COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_hip_fe_right_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="1.0"/> + <restitution value="0.5"/> + </contact> + </link> + <joint name="FR_HFE" type="revolute"> + <parent link="FR_SHOULDER"/> + <child link="FR_UPPER_LEG"/> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- joints rotates around the y-axis --> + <axis xyz="0 1 0"/> + <origin rpy="0 0 0" xyz="0 -0.0145 -0.0386"/> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FR_UPPER_LEG"> + <!-- Right upper leg inertia --> + <inertial> + <origin rpy="0 0 0" xyz="-0.00001377 -0.01935853 -0.11870700"/> + <mass value="0.14853845"/> + <inertia ixx="0.00041107" ixy="0.00000000" ixz="-0.00000009" iyy="0.00041193" iyz="0.00004671" izz="0.00003024"/> + </inertial> + <!-- UPPER LEG LINK VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/upper_leg_200mm_right_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- UPPER LEG LINK COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/upper_leg_200mm_right_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="1.0"/> + <restitution value="0.5"/> + </contact> + </link> + <!-- END UPPER LEG LINK --> + <!-- KFE: Joint between the upper leg and the lower leg --> + <joint name="FR_KFE" type="revolute"> + <parent link="FR_UPPER_LEG"/> + <child link="FR_LOWER_LEG"/> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- joints rotates around the y-axis --> + <axis xyz="0 1 0"/> + <origin rpy="0 0 0" xyz="0 -0.0374 -0.2"/> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FR_LOWER_LEG"> + <!-- Right lower leg inertia --> + <inertial> + <origin rpy="0 0 0" xyz="0.0 -0.00836718 -0.11591877"/> + <mass value="0.03117243"/> + <inertia ixx="0.00011487" ixy="0.00000000" ixz="0.00000000" iyy="0.00011556" iyz="0.00000190" izz="0.00000220"/> + </inertial> + <!-- LOWER LEG LINK VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/lower_leg_200mm_right_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- LOWER LEG LINK COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/lower_leg_200mm_right_side.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="1.0"/> + <restitution value="0.5"/> + </contact> + </link> + <!-- END LOWER LEG LINK --> + <!-- KFE: Joint between the upper leg and the lower leg --> + <joint name="FR_ANKLE" type="fixed"> + <parent link="FR_LOWER_LEG"/> + <child link="FR_FOOT"/> + <origin rpy="0 0 0" xyz="0 -0.008 -0.2"/> + <!-- Limits (usefull?) --> + <limit effort="1000" lower="-10" upper="10" velocity="1000"/> + <!-- pybullet simulation parameters --> + <dynamics damping="0.0" friction="0.0"/> + </joint> + <link name="FR_FOOT"> + <!-- FOOT INERTIAL --> + <!-- This link is symmetrical left or right --> + <inertial> + <origin rpy="0 0 0" xyz="0 0 0.00035767"/> + <mass value="0.00000000"/> + <inertia ixx="0.00000057" ixy="0.0" ixz="0.0" iyy="0.00000084" iyz="0.0" izz="0.00000053"/> + </inertial> + <!-- FOOT VISUAL --> + <visual> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_foot.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </visual> + <!-- FOOT COLLISION --> + <collision> + <origin rpy="0 0 0" xyz="0 0 0"/> + <geometry> + <mesh filename="package://example-robot-data/robots/bolt/meshes/stl/bolt_foot.stl"/> + </geometry> + <material name="grey"> + <color rgba="0.8 0.8 0.8 1.0"/> + </material> + </collision> + <!-- Bullet specific paramters --> + <contact> + <lateral_friction value="4.0"/> + <restitution value="0.0"/> + </contact> + </link> + <!-- END LOWER LEG LINK --> +</robot> diff --git a/robots/bolt_description/srdf/bot.srdf b/robots/bolt_description/srdf/bot.srdf new file mode 100644 index 0000000000000000000000000000000000000000..bd9436b708eecf19ef61c7b311e9283b2c4e69c9 --- /dev/null +++ b/robots/bolt_description/srdf/bot.srdf @@ -0,0 +1,45 @@ +<?xml version="1.0" ?> +<robot name="finger_edu"> + + <!-- left leg --> + <group name="left_leg"> + <joint name="FL_HAA" /> + <joint name="FL_HFE" /> + <joint name="FL_KFE" /> + <chain base_link="base_link" tip_link="FL_FOOT" /> + </group> + <!-- right leg --> + <group name="right_leg"> + <joint name="FR_HAA" /> + <joint name="FR_HFE" /> + <joint name="FR_KFE" /> + <chain base_link="base_link" tip_link="FR_FOOT" /> + </group> + + <group name="all_legs"> + <group name="left_leg" /> + <group name="right_leg" /> + </group> + + <end_effector name="left_foot" parent_link="FL_FOOT" group="left_leg" /> + <end_effector name="right_foot" parent_link="FR_FOOT" group="right_leg" /> + + <group_state name="standing" group="all_legs"> + <joint name="root_joint" value="0. 0. 0.35487417 0. 0. 0. 1." /> + <joint name="FL_HAA" value="-0.3" /> + <joint name="FL_HFE" value="0.78539816" /> + <joint name="FL_KFE" value="-1.57079633" /> + <joint name="FR_HAA" value="0.3" /> + <joint name="FR_HFE" value="0.78539816" /> + <joint name="FR_KFE" value="-1.57079633" /> + </group_state> + + <disable_collisions link1="FL_SHOULDER" link2="base_link" reason="Adjacent" /> + <disable_collisions link1="FR_SHOULDER" link2="base_link" reason="Adjacent" /> + + <disable_collisions link1="FL_UPPER_LEG" link2="FL_SHOULDER" reason="Adjacent" /> + <disable_collisions link1="FR_UPPER_LEG" link2="FR_SHOULDER" reason="Adjacent" /> + + <disable_collisions link1="FL_LOWER_LEG" link2="FL_UPPER_LEG" reason="Adjacent" /> + <disable_collisions link1="FR_LOWER_LEG" link2="FR_UPPER_LEG" reason="Adjacent" /> +</robot> diff --git a/unittest/test_load.py b/unittest/test_load.py index fa0625a30d07d71707e2d2c64d74c1be4b77e51b..9cb09e32069ff4f8a0828cb31e187448650fe287 100755 --- a/unittest/test_load.py +++ b/unittest/test_load.py @@ -73,6 +73,9 @@ class RobotTestCase(unittest.TestCase): def test_simple_humanoid_classical(self): self.check('simple_humanoid_classical', 36, 35, one_kg_bodies=['LARM_LINK3', 'RARM_LINK3']) + def test_bolt(self): + self.check('bolt', 13, 12) + def test_solo8(self): self.check('solo8', 15, 14)