diff --git a/tor_description/meshes/arm/arm_1.STL b/tor_description/meshes/arm/arm_1.STL new file mode 100644 index 0000000000000000000000000000000000000000..cefd0c8069c2dff48ad5f8213ba88c468602c937 Binary files /dev/null and b/tor_description/meshes/arm/arm_1.STL differ diff --git a/tor_description/meshes/arm/arm_1_collision.STL b/tor_description/meshes/arm/arm_1_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..dfc4f0caca4445f062a4fb30e70208825592c499 Binary files /dev/null and b/tor_description/meshes/arm/arm_1_collision.STL differ diff --git a/tor_description/meshes/arm/arm_2.STL b/tor_description/meshes/arm/arm_2.STL new file mode 100644 index 0000000000000000000000000000000000000000..5fae3cd5f3644d1411a2651e05bc5dbef0014413 Binary files /dev/null and b/tor_description/meshes/arm/arm_2.STL differ diff --git a/tor_description/meshes/arm/arm_2_collision.STL b/tor_description/meshes/arm/arm_2_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..5e25baabe3429017fcb0dec6e7a23170425a3623 Binary files /dev/null and b/tor_description/meshes/arm/arm_2_collision.STL differ diff --git a/tor_description/meshes/arm/arm_3.STL b/tor_description/meshes/arm/arm_3.STL new file mode 100644 index 0000000000000000000000000000000000000000..a820970cc69181066f384e143c197659b610f76c Binary files /dev/null and b/tor_description/meshes/arm/arm_3.STL differ diff --git a/tor_description/meshes/arm/arm_3_collision.STL b/tor_description/meshes/arm/arm_3_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..e979eca31bf22c75f6570fe8e196b1c9ee69267b Binary files /dev/null and b/tor_description/meshes/arm/arm_3_collision.STL differ diff --git a/tor_description/meshes/arm/arm_4.STL b/tor_description/meshes/arm/arm_4.STL new file mode 100644 index 0000000000000000000000000000000000000000..3cda3f75c158007ea1526679f9f3a1d036eb77ad Binary files /dev/null and b/tor_description/meshes/arm/arm_4.STL differ diff --git a/tor_description/meshes/arm/arm_4_collision.STL b/tor_description/meshes/arm/arm_4_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..ed30028a8751ea59cd32a5a3e6118bd6f605d3ce Binary files /dev/null and b/tor_description/meshes/arm/arm_4_collision.STL differ diff --git a/tor_description/meshes/arm/arm_5.STL b/tor_description/meshes/arm/arm_5.STL new file mode 100644 index 0000000000000000000000000000000000000000..a592f22c03560db57da2c506a5e664b4a670c06c Binary files /dev/null and b/tor_description/meshes/arm/arm_5.STL differ diff --git a/tor_description/meshes/arm/arm_5_collision.STL b/tor_description/meshes/arm/arm_5_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..0b64df3b66f3ba5ec3b3c6aa1cc2e4efffe4ae0e Binary files /dev/null and b/tor_description/meshes/arm/arm_5_collision.STL differ diff --git a/tor_description/meshes/arm/arm_6.STL b/tor_description/meshes/arm/arm_6.STL new file mode 100644 index 0000000000000000000000000000000000000000..43ea7b8c75c430f5e1bcd0992d2046435b9948b1 Binary files /dev/null and b/tor_description/meshes/arm/arm_6.STL differ diff --git a/tor_description/meshes/arm/arm_6_collision.STL b/tor_description/meshes/arm/arm_6_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..6a992dde6b109c914af07543bd4110fefa191fb9 Binary files /dev/null and b/tor_description/meshes/arm/arm_6_collision.STL differ diff --git a/tor_description/meshes/arm/arm_7.STL b/tor_description/meshes/arm/arm_7.STL new file mode 100644 index 0000000000000000000000000000000000000000..a53b22fd80c4cd3d98e33f2fcea9899b7e9af4e6 Binary files /dev/null and b/tor_description/meshes/arm/arm_7.STL differ diff --git a/tor_description/meshes/arm/arm_7_collision.STL b/tor_description/meshes/arm/arm_7_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..945e0d1c4c6b533e982b91d6b4b413fb653b4eb3 Binary files /dev/null and b/tor_description/meshes/arm/arm_7_collision.STL differ diff --git a/tor_description/meshes/gripper/gripper.STL b/tor_description/meshes/gripper/gripper.STL new file mode 100644 index 0000000000000000000000000000000000000000..5f6780a05702855efebdec7e06dae8129304d578 Binary files /dev/null and b/tor_description/meshes/gripper/gripper.STL differ diff --git a/tor_description/meshes/gripper/gripper_collision.STL b/tor_description/meshes/gripper/gripper_collision.STL new file mode 100644 index 0000000000000000000000000000000000000000..a51b53796f5e0028998d92e8f142f4d1dd2a9cda Binary files /dev/null and b/tor_description/meshes/gripper/gripper_collision.STL differ diff --git a/tor_description/robots/tor_arm.urdf.xacro b/tor_description/robots/tor_arm.urdf.xacro new file mode 100644 index 0000000000000000000000000000000000000000..a47029af9523416e28d4562810e3b5152b889ab1 --- /dev/null +++ b/tor_description/robots/tor_arm.urdf.xacro @@ -0,0 +1,55 @@ +<?xml version="1.0"?> +<!-- + + Copyright (c) 2016, PAL Robotics, S.L. + All rights reserved. + + This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. + To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to + Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +--> +<robot name="tor" xmlns:xacro="http://www.ros.org/wiki/xacro" + xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor" + xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller" + xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"> + + <xacro:include filename="$(find tor_description)/urdf/arm/arm.urdf.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/gripper/gripper.urdf.xacro" /> + + <link name="torso_2_link"> + <inertial> + <origin xyz="-0.04551 -0.00053 0.16386" rpy="0.00000 0.00000 0.00000"/> + <mass value="17.55011"/> + <inertia ixx="0.37376900000" ixy="0.00063900000" ixz="0.01219600000" + iyy="0.24790200000" iyz="0.00000700000" + izz="0.28140400000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/torso/torso_2.STL" scale="1 1 1"/> + </geometry> + <material name="LightGrey" /> + </visual> + + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/torso/torso_2_collision.STL" scale="1 1 1"/> + </geometry> + </collision> + </link> + + <xacro:tor_arm name="arm" parent="torso_2_link" side="left" reflect="1"/> + <xacro:tor_arm name="arm" parent="torso_2_link" side="right" reflect="-1"/> + + <xacro:tor_gripper name="left_gripper" parent="arm_left_7_link"/> + <xacro:tor_gripper name="right_gripper" parent="arm_right_7_link"/> + + <!-- Generic simulator_gazebo plugins --> + <xacro:include filename="$(find tor_description)/gazebo/gazebo.urdf.xacro" /> + <!-- Materials for visualization --> + <xacro:include filename="$(find tor_description)/urdf/materials.urdf.xacro" /> + +</robot> diff --git a/tor_description/robots/tor_full.urdf.xacro b/tor_description/robots/tor_full.urdf.xacro new file mode 100644 index 0000000000000000000000000000000000000000..031461f2cb381eace1f3ba2e25883dfc24b6f09c --- /dev/null +++ b/tor_description/robots/tor_full.urdf.xacro @@ -0,0 +1,40 @@ +<?xml version="1.0"?> +<!-- + + Copyright (c) 2016, PAL Robotics, S.L. + All rights reserved. + + This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. + To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to + Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +--> +<robot name="tor" xmlns:xacro="http://www.ros.org/wiki/xacro" + xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor" + xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller" + xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"> + + <xacro:include filename="$(find tor_description)/urdf/torso/torso.urdf.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/head/head.urdf.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/arm/arm.urdf.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/gripper/gripper.urdf.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/leg/leg_v2.urdf.xacro" /> + + <xacro:tor_torso name="torso" /> + + <xacro:tor_head name="head" parent="torso_2_link"/> + + <xacro:tor_arm name="arm" parent="torso_2_link" side="left" reflect="1"/> + <xacro:tor_arm name="arm" parent="torso_2_link" side="right" reflect="-1"/> + + <xacro:tor_gripper name="left_gripper" parent="arm_left_7_link"/> + <xacro:tor_gripper name="right_gripper" parent="arm_right_7_link"/> + + <xacro:tor_leg prefix="left" reflect="1" /> + <xacro:tor_leg prefix="right" reflect="-1" /> + + <!-- Generic simulator_gazebo plugins --> + <xacro:include filename="$(find tor_description)/gazebo/gazebo.urdf.xacro" /> + <!-- Materials for visualization --> + <xacro:include filename="$(find tor_description)/urdf/materials.urdf.xacro" /> + +</robot> diff --git a/tor_description/robots/upload_arm.launch b/tor_description/robots/upload_arm.launch new file mode 100644 index 0000000000000000000000000000000000000000..5045dd96d08540868347948ec4cd3d56003df4e7 --- /dev/null +++ b/tor_description/robots/upload_arm.launch @@ -0,0 +1,6 @@ +<launch> + + <!-- Robot description --> + <param name="robot_description" command="$(find xacro)/xacro.py '$(find tor_description)/robots/tor_arm.urdf.xacro'" /> + +</launch> diff --git a/tor_description/robots/upload_full.launch b/tor_description/robots/upload_full.launch new file mode 100644 index 0000000000000000000000000000000000000000..7253b43104e9255e3d44cac8de5ac95164118c11 --- /dev/null +++ b/tor_description/robots/upload_full.launch @@ -0,0 +1,6 @@ +<launch> + + <!-- Robot description --> + <param name="robot_description" command="$(find xacro)/xacro.py '$(find tor_description)/robots/tor_full.urdf.xacro'" /> + +</launch> diff --git a/tor_description/urdf/arm/arm.transmission.xacro b/tor_description/urdf/arm/arm.transmission.xacro new file mode 100644 index 0000000000000000000000000000000000000000..558cd993bc96bb6ec29fe236f0779131cfae368a --- /dev/null +++ b/tor_description/urdf/arm/arm.transmission.xacro @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<!-- + + Copyright (c) 2016, PAL Robotics, S.L. + All rights reserved. + + This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. + To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to + Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +--> +<robot xmlns:xacro="http://ros.org/wiki/xacro"> + + <xacro:macro name="tor_arm_simple_transmission" params="name side number reduction" > + <transmission name="${name}_${side}_${number}_trans"> + <type>transmission_interface/SimpleTransmission</type> + <actuator name="${name}_${side}_${number}_motor" > + <mechanicalReduction>${reduction}</mechanicalReduction> + </actuator> + <joint name="${name}_${side}_${number}_joint"> + <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface> + <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface> + </joint> + </transmission> + </xacro:macro> + +</robot> diff --git a/tor_description/urdf/arm/arm.urdf.xacro b/tor_description/urdf/arm/arm.urdf.xacro new file mode 100644 index 0000000000000000000000000000000000000000..3db908ad3cd66f4e6b1b9b89f4367262134fde64 --- /dev/null +++ b/tor_description/urdf/arm/arm.urdf.xacro @@ -0,0 +1,279 @@ +<?xml version="1.0"?> +<!-- + + Copyright (c) 2016, PAL Robotics, S.L. + All rights reserved. + + This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. + To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to + Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +--> +<robot xmlns:xacro="http://ros.org/wiki/xacro"> + + <!--File includes--> + <xacro:include filename="$(find tor_description)/urdf/deg_to_rad.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/arm/wrist.urdf.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/arm/arm.transmission.xacro" /> + + <!--Constant parameters--> + <xacro:property name="arm_friction" value="1.0" /> + <xacro:property name="arm_damping" value="1.0" /> + <xacro:property name="arm_1_max_vel" value="2.7" /> + <xacro:property name="arm_2_max_vel" value="3.66" /> + <xacro:property name="arm_3_max_vel" value="4.58" /> + <xacro:property name="arm_4_max_vel" value="4.58" /> + <xacro:property name="arm_1_max_effort" value="44.64" /> + <xacro:property name="arm_2_max_effort" value="22.32" /> + <xacro:property name="arm_3_max_effort" value="17.86" /> + <xacro:property name="arm_4_max_effort" value="17.86" /> + <xacro:property name="arm_eps" value="0.02" /> + + + <xacro:macro name="tor_arm" params="name parent side reflect"> + + <!--************************--> + <!-- SHOULDER --> + <!--************************--> + <link name="${name}_${side}_1_link"> + <!-- TODO: Missing reflects of inertias --> + <inertial> + <origin xyz="-0.01346 0.09130 0.04812" rpy="0.00000 0.00000 0.00000"/> + <mass value="1.52896"/> + <inertia ixx="0.00555100000" ixy="-0.00073100000" ixz="0.00000800000" + iyy="0.00167300000" iyz="-0.00006000000" + izz="0.00582200000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_1.STL" scale="1 ${reflect} 1"/> + </geometry> + <material name="DarkGrey" /> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_1_collision.STL" scale="1 ${reflect} 1"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_1_joint" type="revolute"> + <parent link="${parent}" /> + <child link="${name}_${side}_1_link" /> + <origin xyz="0.00000 ${0.15750*reflect} 0.23200" + rpy="${0.0 * deg_to_rad} ${0.0 * deg_to_rad} ${0.0 * deg_to_rad}"/> + <axis xyz="0 0 1" /> + <xacro:if value="${reflect == 1}"> + <limit lower="${-90.0 * deg_to_rad}" upper="${30.0 * deg_to_rad}" effort="${arm_1_max_effort}" velocity="${arm_1_max_vel}" /> + </xacro:if> + <xacro:if value="${reflect == -1}"> + <limit lower="${-30.0 * deg_to_rad}" upper="${90.0 * deg_to_rad}" effort="${arm_1_max_effort}" velocity="${arm_1_max_vel}" /> + </xacro:if> + <dynamics friction="${arm_friction}" damping="${arm_damping}"/> +<!-- <safety_controller k_position="20" + k_velocity="20" + soft_lower_limit="${-90.00000 * deg_to_rad + arm_eps}" + soft_upper_limit="${30.00000 * deg_to_rad - arm_eps}" /> --> + </joint> + + <link name="${name}_${side}_2_link"> + <inertial> + <origin xyz="0.02607 0.00049 -0.05209" rpy="0.00000 0.00000 0.00000"/> + <mass value="1.77729"/> + <inertia ixx="0.00708700000" ixy="-0.00001400000" ixz="0.00214200000" + iyy="0.00793600000" iyz="0.00003000000" + izz="0.00378800000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_2.STL" scale="1 ${reflect} 1"/> + </geometry> + <material name="DarkGrey" /> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_2_collision.STL" scale="1 ${reflect} 1"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_2_joint" type="revolute"> + <parent link="${name}_${side}_1_link" /> + <child link="${name}_${side}_2_link" /> + <origin xyz="0.00493 ${0.13650*reflect} 0.04673" + rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/> + <axis xyz="1 0 0" /> + <xacro:if value="${reflect == 1}"> + <limit lower="${0.00000 * deg_to_rad}" upper="${165.00000 * deg_to_rad}" effort="${arm_2_max_effort}" velocity="${arm_2_max_vel}" /> + </xacro:if> + <xacro:if value="${reflect == -1}"> + <limit lower="${-165.00000 * deg_to_rad}" upper="${0.00000 * deg_to_rad}" effort="${arm_2_max_effort}" velocity="${arm_2_max_vel}" /> + </xacro:if> + <dynamics friction="${arm_friction}" damping="${arm_damping}"/> +<!-- <safety_controller k_position="20" + k_velocity="20" + soft_lower_limit="${0.00000 * deg_to_rad + arm_eps}" + soft_upper_limit="${165.00000 * deg_to_rad - arm_eps}" /> --> + + </joint> + + <link name="${name}_${side}_3_link"> + <inertial> + <origin xyz="0.00841 0.01428 -0.22291" rpy="0.00000 0.00000 0.00000"/> + <mass value="1.57029"/> + <inertia ixx="0.00433200000" ixy="0.00015300000" ixz="-0.00049600000" + iyy="0.00434000000" iyz="-0.00060900000" + izz="0.00254300000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_3.STL" scale="1 ${reflect} 1"/> + </geometry> + <material name="DarkGrey" /> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_3_collision.STL" scale="1 ${reflect} 1"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_3_joint" type="revolute"> + <parent link="${name}_${side}_2_link" /> + <child link="${name}_${side}_3_link" /> + <origin xyz="0.00000 0.00000 0.00000" + rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/> + <axis xyz="0 0 1" /> + <limit lower="${-140.0 * deg_to_rad}" upper="${140.0 * deg_to_rad}" effort="${arm_3_max_effort}" velocity="${arm_3_max_vel}" /> + <dynamics friction="${arm_friction}" damping="${arm_damping}"/> +<!-- <safety_controller k_position="20" + k_velocity="20" + soft_lower_limit="${-140.0 * deg_to_rad + arm_eps}" + soft_upper_limit="${140.0 * deg_to_rad - arm_eps}" /> --> + + </joint> + + <!--************************--> + <!-- ELBOW --> + <!--************************--> + <link name="${name}_${side}_4_link"> + <inertial> + <origin xyz="-0.00655 -0.02107 -0.02612" rpy="0.00000 0.00000 0.00000"/> + <mass value="1.20216"/> + <inertia ixx="0.00221700000" ixy="-0.00010100000" ixz="0.00028800000" + iyy="0.00241800000" iyz="-0.00039300000" + izz="0.00111500000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_4.STL" scale="1 ${reflect} 1"/> + </geometry> + <material name="DarkGrey" /> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_4_collision.STL" scale="1 ${reflect} 1"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_4_joint" type="revolute"> + <parent link="${name}_${side}_3_link" /> + <child link="${name}_${side}_4_link" /> + <origin xyz="0.02000 0.00000 -0.27300" + rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/> + <axis xyz="0 1 0" /> + <limit lower="${-135.0 * deg_to_rad}" upper="${0.0 * deg_to_rad}" effort="${arm_4_max_effort}" velocity="${arm_4_max_vel}" /> + <dynamics friction="${arm_friction}" damping="${arm_damping}"/> +<!-- <safety_controller k_position="20" + k_velocity="20" + soft_lower_limit="${-135.0 * deg_to_rad + arm_eps}" + soft_upper_limit="${0.0 * deg_to_rad - arm_eps}" /> --> + </joint> + + <gazebo reference="${name}_${side}_1_link"> + <mu1>0.9</mu1> + <mu2>0.9</mu2> + </gazebo> + <gazebo reference="${name}_${side}_2_link"> + <mu1>0.9</mu1> + <mu2>0.9</mu2> + </gazebo> + <gazebo reference="${name}_${side}_3_link"> + <mu1>0.9</mu1> + <mu2>0.9</mu2> + </gazebo> + <gazebo reference="${name}_${side}_4_link"> + <mu1>0.9</mu1> + <mu2>0.9</mu2> + </gazebo> + + <gazebo reference="${name}_${side}_1_joint"> + <implicitSpringDamper>1</implicitSpringDamper> + </gazebo> + <gazebo reference="${name}_${side}_2_joint"> + <implicitSpringDamper>1</implicitSpringDamper> + </gazebo> + <gazebo reference="${name}_${side}_3_joint"> + <implicitSpringDamper>1</implicitSpringDamper> + </gazebo> + <gazebo reference="${name}_${side}_4_joint"> + <implicitSpringDamper>1</implicitSpringDamper> + </gazebo> + + + <!--************************--> + <!-- WRIST --> + <!--************************--> + <xacro:tor_wrist name="arm" parent="${name}_${side}_4_link" side="${side}" reflect="${reflect}" /> + + <!--***********************--> + <!-- TOOL --> + <!--***********************--> + <link name="${name}_${side}_tool_link"> + <inertial> + <mass value="0.1" /> + <inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0" /> + </inertial> + <visual> + <origin xyz="0.001 0 0" rpy="0 ${90.0 * deg_to_rad} 0" /> + <geometry> + <cylinder radius="0.005" length="0.005"/> + </geometry> + <material name="LightGrey" /> + </visual> + <collision> + <origin xyz="0.001 0 0" rpy="0 ${90.0 * deg_to_rad} 0" /> + <geometry> + <cylinder radius="0.005" length="0.005"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_tool_joint" type="fixed"> + <parent link="${name}_${side}_7_link" /> + <child link="${name}_${side}_tool_link" /> + <origin xyz="0 0 ${reflect * 0.046}" rpy="${90.0 * deg_to_rad} ${-90.0 * reflect * deg_to_rad} 0" /> + </joint> + + + <!-- extensions --> + <xacro:tor_arm_simple_transmission name="${name}" side="${side}" number="1" reduction="1.0" /> + <xacro:tor_arm_simple_transmission name="${name}" side="${side}" number="2" reduction="1.0" /> + <xacro:tor_arm_simple_transmission name="${name}" side="${side}" number="3" reduction="1.0" /> + <xacro:tor_arm_simple_transmission name="${name}" side="${side}" number="4" reduction="1.0" /> + + </xacro:macro> + +</robot> diff --git a/tor_description/urdf/arm/wrist.transmission.xacro b/tor_description/urdf/arm/wrist.transmission.xacro new file mode 100644 index 0000000000000000000000000000000000000000..38e3b4b234a29174b575b5f35523533143d035f6 --- /dev/null +++ b/tor_description/urdf/arm/wrist.transmission.xacro @@ -0,0 +1,52 @@ +<?xml version="1.0"?> +<!-- + + Copyright (c) 2016, PAL Robotics, S.L. + All rights reserved. + + This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. + To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to + Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +--> +<robot xmlns:xacro="http://ros.org/wiki/xacro"> + + <xacro:macro name="tor_wrist_simple_transmission" params="name side number reduction" > + <transmission name="${name}_${side}_${number}_trans"> + <type>transmission_interface/SimpleTransmission</type> + <actuator name="${name}_${side}_${number}_motor" > + <mechanicalReduction>${reduction}</mechanicalReduction> + </actuator> + <joint name="${name}_${side}_${number}_joint"> + <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface> + </joint> + </transmission> + </xacro:macro> + + <xacro:macro name="tor_wrist_differential_transmission" + params="name side number_1 number_2 act_reduction_1 act_reduction_2 jnt_reduction_1 jnt_reduction_2" > + <transmission name="wrist_${side}_trans"> + <type>transmission_interface/DifferentialTransmission</type> + <actuator name="${name}_${side}_${number_1}_motor"> + <role>actuator1</role> + <mechanicalReduction>${act_reduction_1}</mechanicalReduction> + </actuator> + <actuator name="${name}_${side}_${number_2}_motor"> + <role>actuator2</role> + <mechanicalReduction>${act_reduction_2}</mechanicalReduction> + </actuator> + <joint name="${name}_${side}_${number_1}_joint"> + <role>joint1</role> + <offset>0.0</offset> + <mechanicalReduction>${jnt_reduction_1}</mechanicalReduction> + <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface> + </joint> + <joint name="${name}_${side}_${number_2}_joint"> + <role>joint2</role> + <offset>0.0</offset> + <mechanicalReduction>${jnt_reduction_2}</mechanicalReduction> + <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface> + </joint> + </transmission> + </xacro:macro> + +</robot> diff --git a/tor_description/urdf/arm/wrist.urdf.xacro b/tor_description/urdf/arm/wrist.urdf.xacro new file mode 100644 index 0000000000000000000000000000000000000000..f7c8fe422e063e2f5814c0e4da905ca789925b5a --- /dev/null +++ b/tor_description/urdf/arm/wrist.urdf.xacro @@ -0,0 +1,191 @@ +<?xml version="1.0"?> +<!-- + + Copyright (c) 2016, PAL Robotics, S.L. + All rights reserved. + + This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. + To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to + Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +--> +<robot xmlns:xacro="http://ros.org/wiki/xacro"> + + <!--File includes--> + <xacro:include filename="$(find tor_description)/urdf/deg_to_rad.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/arm/wrist.transmission.xacro" /> + + <!--Constant parameters--> + <xacro:property name="wrist_friction" value="1.0" /> + <xacro:property name="wrist_damping" value="1.0" /> + <xacro:property name="wrist_1_max_vel" value="1.95" /> + <xacro:property name="wrist_2_max_vel" value="1.76" /> + <xacro:property name="wrist_3_max_vel" value="1.76" /> + <xacro:property name="wrist_1_max_effort" value="3" /> + <xacro:property name="wrist_2_max_effort" value="6.6" /> + <xacro:property name="wrist_3_max_effort" value="6.6" /> + <xacro:property name="wrist_eps" value="0.02" /> + + + <xacro:macro name="tor_wrist" params="name parent side reflect"> + + <!--************************--> + <!-- WRIST --> + <!--************************--> + <link name="${name}_${side}_5_link"> + <inertial> + <origin xyz="-0.00006 0.00326 0.07963" rpy="0.00000 0.00000 0.00000"/> + <mass value="1.87792"/> + <inertia ixx="0.00349500000" ixy="-0.00001300000" ixz="-0.00001000000" + iyy="0.00436800000" iyz="0.00009700000" + izz="0.00228300000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_5.STL" scale="1 1 1"/> + </geometry> + <material name="LightGrey" /> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_5_collision.STL" scale="1 1 1"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_5_joint" type="revolute"> + <parent link="${parent}" /> + <child link="${name}_${side}_5_link" /> + <xacro:if value="${reflect == 1}"> + <origin xyz="-0.02000 0.00000 -0.26430" + rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/> + </xacro:if> + <xacro:if value="${reflect == -1}"> + <origin xyz="-0.02000 0.00000 -0.26430" + rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${180.00000 * deg_to_rad}"/> + </xacro:if> + <axis xyz="0 0 1" /> + <limit lower="${-145.0 * deg_to_rad}" upper="${145.0 * deg_to_rad}" effort="${wrist_1_max_effort}" velocity="${wrist_1_max_vel}" /> + <dynamics friction="${wrist_friction}" damping="${wrist_damping}"/> +<!-- <safety_controller k_position="20" + k_velocity="20" + soft_lower_limit="${-145.00000 * deg_to_rad + wrist_eps}" + soft_upper_limit="${145.00000 * deg_to_rad - wrist_eps}" /> --> + + </joint> + + <link name="${name}_${side}_6_link"> + <inertial> + <origin xyz="0.00002 -0.00197 -0.00059" rpy="0.00000 0.00000 0.00000"/> + <mass value="0.40931"/> + <inertia ixx="0.00010700000" ixy="0.00000000000" ixz="0.00000000000" + iyy="0.00014100000" iyz="-0.00000000000" + izz="0.00015400000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_6.STL" scale="1 ${reflect} 1"/> + </geometry> + <material name="LightGrey" /> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_6_collision.STL" scale="1 ${reflect} 1"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_6_joint" type="revolute"> + <parent link="${name}_${side}_5_link" /> + <child link="${name}_${side}_6_link" /> + <origin xyz="0.00000 0.00000 0.00000" + rpy="${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad} ${0.00000 * deg_to_rad}"/> + <axis xyz="1 0 0" /> + <limit lower="${-80.0 * deg_to_rad}" upper="${80.0 * deg_to_rad}" effort="${wrist_2_max_effort}" velocity="${wrist_2_max_vel}" /> + <dynamics friction="${wrist_friction}" damping="${wrist_damping}"/> +<!-- <safety_controller k_position="20" + k_velocity="20" + soft_lower_limit="${-80.00000 * deg_to_rad + eps_radians}" + soft_upper_limit="${80.00000 * deg_to_rad - eps_radians}" /> --> + + </joint> + + <link name="${name}_${side}_7_link"> + <inertial> + <origin xyz="-0.00089 0.00365 -0.07824" rpy="0.00000 0.00000 0.00000"/> + <mass value="1.02604"/> + <inertia ixx="0.00151400000" ixy="0.00000600000" ixz="0.00006600000" + iyy="0.00146400000" iyz="0.00001200000" + izz="0.00090300000"/> + </inertial> + + <visual> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_7.STL" scale="1 1 1"/> + </geometry> + <material name="DarkGrey" /> + </visual> + + <collision> + <origin xyz="0 0 0" rpy="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/arm/arm_7_collision.STL" scale="1 1 1"/> + </geometry> + </collision> + </link> + + <joint name="${name}_${side}_7_joint" type="revolute"> + <parent link="${name}_${side}_6_link" /> + <child link="${name}_${side}_7_link" /> + <origin xyz="0.0 0.0 0.0" + rpy="${0.0 * deg_to_rad} ${0.0 * deg_to_rad} ${0.0 * deg_to_rad}"/> + <axis xyz="0 1 0" /> + <limit lower="${-40.0 * deg_to_rad}" upper="${40.0 * deg_to_rad}" effort="${wrist_3_max_effort}" velocity="${wrist_3_max_vel}"/> + <dynamics friction="${wrist_friction}" damping="${wrist_damping}"/> +<!-- <safety_controller k_position="20" + k_velocity="20" + soft_lower_limit="${-40.00000 * deg_to_rad + eps_radians}" + soft_upper_limit="${40.00000 * deg_to_rad - eps_radians}" /> --> + + + </joint> + + <gazebo reference="${name}_${side}_5_link"> + <mu1>0.9</mu1> + <mu2>0.9</mu2> + </gazebo> + <gazebo reference="${name}_${side}_6_link"> + <mu1>0.9</mu1> + <mu2>0.9</mu2> + </gazebo> + <gazebo reference="${name}_${side}_7_link"> + <mu1>0.9</mu1> + <mu2>0.9</mu2> + </gazebo> + + <gazebo reference="${name}_${side}_5_joint"> + <implicitSpringDamper>1</implicitSpringDamper> + </gazebo> + <gazebo reference="${name}_${side}_6_joint"> + <implicitSpringDamper>1</implicitSpringDamper> + </gazebo> + <gazebo reference="${name}_${side}_7_joint"> + <implicitSpringDamper>1</implicitSpringDamper> + <provideFeedback>1</provideFeedback> + </gazebo> + + <!-- extensions --> + <xacro:tor_wrist_simple_transmission name="${name}" side="${side}" number="5" reduction="1.0" /> + <xacro:tor_wrist_differential_transmission name="${name}" side="${side}" number_1="6" number_2="7" + act_reduction_1="-1.0" act_reduction_2="1.0" + jnt_reduction_1="-1.0" jnt_reduction_2="${-reflect}" /> + + </xacro:macro> + +</robot> diff --git a/tor_description/urdf/gripper/gripper.urdf.xacro b/tor_description/urdf/gripper/gripper.urdf.xacro new file mode 100644 index 0000000000000000000000000000000000000000..098abe05f4df725b3737ac2f9c676b8b26fad74d --- /dev/null +++ b/tor_description/urdf/gripper/gripper.urdf.xacro @@ -0,0 +1,47 @@ +<?xml version="1.0"?> + +<robot xmlns:xacro="http://ros.org/wiki/xacro"> + + <!--File includes--> + <!-- <xacro:include filename="$(find tor_description)/urdf/deg_to_rad.urdf.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/gripper.transmission.xacro" /> + <xacro:include filename="$(find tor_description)/urdf/gripper.gazebo.xacro" /> --> + + + <xacro:macro name="tor_gripper" params="name parent"> + + <link name="${name}_link"> + <inertial> + <origin xyz="0.01507 -0.01177 -0.02788" rpy="0.00000 0.00000 0.00000"/> + <mass value="0.66262"/> + <inertia ixx="0.00195600000" ixy="-0.00007300000" ixz="0.00026500000" + iyy="0.00139500000" iyz="-0.00015700000" + izz="0.00170400000"/> + </inertial> + <visual> + <origin rpy="0 0 0" xyz="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/gripper/gripper.STL"/> + </geometry> + <material name="Orange"/> + </visual> + <collision> + <origin rpy="0 0 0" xyz="0 0 0" /> + <geometry> + <mesh filename="package://tor_description/meshes/gripper/gripper_collision.STL"/> + </geometry> + </collision> + </link> + + <joint name="${name}_joint" type="fixed"> + <parent link="${parent}" /> + <child link="${name}_link" /> + <axis xyz="0 0 0" /> + <origin xyz="0 0.02 -0.10975" rpy="0 0 0" /> + </joint> + + + + </xacro:macro> + +</robot> diff --git a/tor_description/urdf/head/head.urdf.xacro b/tor_description/urdf/head/head.urdf.xacro index 9b5935a2f557e9af25485f8fc020fcc2434a5e83..ea56e823638639adc41154868d77ec9a6c97fc66 100644 --- a/tor_description/urdf/head/head.urdf.xacro +++ b/tor_description/urdf/head/head.urdf.xacro @@ -39,7 +39,7 @@ <geometry> <mesh filename="package://tor_description/meshes/head/head_1.stl" scale="1 1 1"/> </geometry> - <material name="LightGrey" /> + <material name="DarkGrey" /> </visual> <collision> diff --git a/tor_description/urdf/materials.urdf.xacro b/tor_description/urdf/materials.urdf.xacro index ea8e914a862a0a683f346d40b0a40e5e32983fbf..514e9ec8c420e87736e0491a2ea9a8b17a6f29a6 100644 --- a/tor_description/urdf/materials.urdf.xacro +++ b/tor_description/urdf/materials.urdf.xacro @@ -37,4 +37,8 @@ <material name="White"> <color rgba="1.0 1.0 1.0 1.0"/> </material> + + <material name="Orange"> + <color rgba="1.0 0.5 0.0 1.0"/> + </material> </robot>