diff --git a/launch/description.launch b/launch/description.launch index ecd3642dfcd5aca47fbb59e4978a639d911ceba2..f3efcecd3487484798d530cfaedf36c98ac03eb2 100644 --- a/launch/description.launch +++ b/launch/description.launch @@ -4,6 +4,7 @@ <arg name="ns" default="dabo"/> <arg name="model" default="dabo"/> <arg name="static_wheels" default="false" /> + <arg name="joint_state_pub" default="false"/> <group ns="$(arg ns)"> @@ -15,15 +16,14 @@ <param name="publish_frequency" type="double" value="20.0"/> </node> - <!-- <node pkg="joint_state_publisher" type="joint_state_publisher" - name="joint_state_publisher"> + name="joint_state_publisher" + if="$(arg joint_state_pub)"> <param name="use_gui" value="true"/> <remap from="$(arg ns)/joint_states" to="$(arg ns)/joint_states/"/> <remap from="$(arg ns)/robot_description" to="$(arg ns)/robot_description/"/> </node> - --> </group> diff --git a/urdf/dabo.xacro b/urdf/dabo.xacro index a89bd8983d0e50fc07216511cbfdef9cf50b889a..d8fea04c049c245b16b1594e8be6b74d9eaa3d0f 100644 --- a/urdf/dabo.xacro +++ b/urdf/dabo.xacro @@ -20,17 +20,20 @@ <xacro:include filename="$(find iri_dabo_description)/urdf/include/head.xacro" /> <xacro:head name="$(arg name)" parent="top_plate"> - <origin xyz="0 0 0.7" rpy="0 0 0" /> + <origin xyz="-0.03 0 0.57" rpy="0 0 0" /> </xacro:head> <xacro:include filename="$(find iri_dabo_description)/urdf/include/arm.xacro" /> <xacro:arm name="$(arg name)" prefix="left" parent="top_plate"> - <origin xyz="0 0.25 0.5" rpy="0.15 0 0" /> + <origin xyz="-0.05 0.17 0.5" rpy="0.0 0 0" /> </xacro:arm> <xacro:include filename="$(find iri_dabo_description)/urdf/include/arm.xacro" /> <xacro:arm name="$(arg name)" prefix="right" parent="top_plate"> - <origin xyz="0 -0.25 0.5" rpy="0.15 0 3.14159" /> + <origin xyz="-0.05 -0.17 0.5" rpy="0.0 0 3.14159" /> </xacro:arm> + <xacro:include filename="$(find iri_dabo_description)/urdf/include/control.gazebo" /> + <xacro:control name="$(arg name)"/> + </robot> \ No newline at end of file diff --git a/urdf/dabo_fixed.xacro b/urdf/dabo_fixed.xacro new file mode 100644 index 0000000000000000000000000000000000000000..53a2afa8ee83957a62b169ee45919217f319f1e5 --- /dev/null +++ b/urdf/dabo_fixed.xacro @@ -0,0 +1,36 @@ +<?xml version="1.0"?> + +<robot name="dabo" xmlns:xacro="http://ros.org/wiki/xacro"> + + <xacro:arg name="name" default="dabo"/> + + <xacro:include filename="$(find iri_segway_rmp200_description)/urdf/include/segway_rmp200.xacro" /> + <xacro:segway_rmp200 name="$(arg name)" sim_config="$(find iri_dabo_gazebo)/config/dabo_sim_config.yaml"/> + + <xacro:include filename="$(find iri_segway_rmp200_description)/urdf/include/caster_support_wheels.xacro" /> + <xacro:caster_support_wheels/> + + <xacro:include filename="$(find iri_dabo_description)/urdf/include/body.xacro" /> + <xacro:body name="$(arg name)" parent="top_plate"> + <origin xyz="0 0 0" rpy="0 0 0" /> + </xacro:body> + + <xacro:include filename="$(find iri_dabo_description)/urdf/include/sensors.xacro" /> + <xacro:sensors name="$(arg name)" parent="base_link"/> + + <xacro:include filename="$(find iri_dabo_description)/urdf/include/head_fixed.xacro" /> + <xacro:head name="$(arg name)" parent="top_plate"> + <origin xyz="-0.03 0 0.57" rpy="0 0 0" /> + </xacro:head> + + <xacro:include filename="$(find iri_dabo_description)/urdf/include/arm_fixed.xacro" /> + <xacro:arm name="$(arg name)" prefix="left" parent="top_plate"> + <origin xyz="-0.05 0.17 0.5" rpy="0.0 0 0" /> + </xacro:arm> + + <xacro:include filename="$(find iri_dabo_description)/urdf/include/arm_fixed.xacro" /> + <xacro:arm name="$(arg name)" prefix="right" parent="top_plate"> + <origin xyz="-0.05 -0.17 0.5" rpy="0.0 0 3.14159" /> + </xacro:arm> + +</robot> \ No newline at end of file diff --git a/urdf/include/arm.xacro b/urdf/include/arm.xacro index 097e6c6fef87715615cad830b5c310841cd7472c..bc8008e05020819f7d36756ef0970953f27ff79d 100644 --- a/urdf/include/arm.xacro +++ b/urdf/include/arm.xacro @@ -2,17 +2,64 @@ <root xmlns:xacro="http://ros.org/wiki/xacro"> + <xacro:include filename="$(find iri_joint_trajectory_gazebo)/urdf/servo.xacro"/> + + <xacro:property name="PI" value="3.1415926535897931" /> + <xacro:property name="servo1_name" value="arm_servo1" /> + <xacro:property name="servo2_name" value="arm_servo2" /> + <xacro:property name="load_name" value="arm" /> + <xacro:property name="joint1_name" value="arm_pan" /> + <xacro:property name="joint2_name" value="arm_tilt" /> + <xacro:macro name="arm" params="prefix name parent *origin"> + + <joint name="${parent}2${prefix}_${servo1_name}_joint" type="fixed" > + <parent link="${parent}"/> + <child link="${prefix}_${servo1_name}"/> + <xacro:insert_block name="origin"/> + </joint> + + <xacro:servo name="${prefix}_${servo1_name}"> + <container> + <geometry> + <box size="0.08 0.05 0.1"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="0 0 0"/> + </container> + </xacro:servo> - <link name="${prefix}_arm"> - <visual> + <xacro:servo name="${prefix}_${servo2_name}"> + <container> + <geometry> + <box size="0.1 0.05 0.05"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> <origin rpy="0 0 0" xyz="0 0 0"/> + </container> + </xacro:servo> + + <link name="${prefix}_${load_name}"> + <visual> + <origin xyz="0 0 0" rpy="0 -${PI/2} -${PI}"/> <geometry> <mesh filename="package://iri_dabo_description/meshes/arm_low.dae"/> </geometry> </visual> <collision> - <origin xyz="0 0.025 -0.15" rpy="0 0 0"/> + <origin xyz="-0.15 -0.025 0" rpy="0 -${PI/2} -${PI}"/> <geometry> <cylinder length="0.4" radius="0.07"/> </geometry> @@ -26,12 +73,51 @@ izz="0.0001"/> </inertial> </link> + + + <xacro:servo_joint name ="${prefix}_${joint1_name}" + parent="${prefix}_${servo1_name}" + child ="${prefix}_${servo2_name}"> + <container> + <origin rpy="-${PI/2} -${PI/2} 0" xyz="0 0.05 0"/> + </container> + <container> + <limit effort="25.0" lower="-${PI}" upper="${PI}" velocity="0.5"/> + </container> + </xacro:servo_joint> + + <xacro:servo_transmission name="${prefix}_${joint1_name}" + joint_interface="EffortJointInterface" + reduction="1"> + </xacro:servo_transmission> - <joint name="${parent}2${prefix}_arm_joint" type="fixed" > - <parent link="${parent}"/> - <child link="${prefix}_arm"/> - <xacro:insert_block name="origin"/> - </joint> + <xacro:servo_joint name ="${prefix}_${joint2_name}" + parent="${prefix}_${servo2_name}" + child ="${prefix}_${load_name}"> + <container> + <origin rpy="-${PI/2} 0 0" xyz="0 0 0.025"/> + </container> + <container> + <limit effort="25.0" lower="0" upper="${PI/2}" velocity="0.5"/> + </container> + </xacro:servo_joint> + + <xacro:servo_transmission name="${prefix}_${joint2_name}" + joint_interface="EffortJointInterface" + reduction="1"> + </xacro:servo_transmission> + + <gazebo reference="${prefix}_${servo1_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + <gazebo reference="${prefix}_${servo2_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> </xacro:macro> diff --git a/urdf/include/arm_fixed.xacro b/urdf/include/arm_fixed.xacro new file mode 100644 index 0000000000000000000000000000000000000000..e1196c163f286cf03036e9f849af03e305581aff --- /dev/null +++ b/urdf/include/arm_fixed.xacro @@ -0,0 +1,107 @@ +<?xml version="1.0"?> + +<root xmlns:xacro="http://ros.org/wiki/xacro"> + + <xacro:include filename="$(find iri_joint_trajectory_gazebo)/urdf/servo.xacro"/> + + <xacro:property name="PI" value="3.1415926535897931" /> + <xacro:property name="servo1_name" value="arm_servo1" /> + <xacro:property name="servo2_name" value="arm_servo2" /> + <xacro:property name="load_name" value="arm" /> + <xacro:property name="joint1_name" value="arm_pan" /> + <xacro:property name="joint2_name" value="arm_tilt" /> + + <xacro:macro name="arm" params="prefix name parent *origin"> + + <joint name="${parent}2${prefix}_${servo1_name}_joint" type="fixed" > + <parent link="${parent}"/> + <child link="${prefix}_${servo1_name}"/> + <xacro:insert_block name="origin"/> + </joint> + + <xacro:servo name="${prefix}_${servo1_name}"> + <container> + <geometry> + <box size="0.08 0.05 0.1"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="0 0 0"/> + </container> + </xacro:servo> + + <xacro:servo name="${prefix}_${servo2_name}"> + <container> + <geometry> + <box size="0.1 0.05 0.05"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="0 0 0"/> + </container> + </xacro:servo> + + <link name="${prefix}_${load_name}"> + <visual> + <origin xyz="0 0 0" rpy="0 -${PI/2} -${PI}"/> + <geometry> + <mesh filename="package://iri_dabo_description/meshes/arm_low.dae"/> + </geometry> + </visual> + <collision> + <origin xyz="-0.15 -0.025 0" rpy="0 -${PI/2} -${PI}"/> + <geometry> + <cylinder length="0.4" radius="0.07"/> + </geometry> + </collision> + <inertial> + <origin xyz="0 0 0" rpy="0 0 0"/> + <mass value="1"/> + <inertia + ixx="0.0001" ixy="0.0" ixz="0.0" + iyy="0.0001" iyz="0.0" + izz="0.0001"/> + </inertial> + </link> + + <joint name="${prefix}_${joint1_name}_joint" + type="fixed"> + <parent link="${prefix}_${servo1_name}"/> + <child link="${prefix}_${servo2_name}"/> + <origin rpy="-${PI/2} -${PI/2} 0" xyz="0 0.05 0"/> + <axis xyz="0 0 1"/> + </joint> + + <joint name="${prefix}_${joint2_name}_joint" + type="fixed"> + <parent link="${prefix}_${servo2_name}"/> + <child link="${prefix}_${load_name}"/> + <origin rpy="-${PI/2} 0 0" xyz="0 0 0.025"/> + <axis xyz="0 0 1"/> + </joint> + + <gazebo reference="${prefix}_${servo1_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + <gazebo reference="${prefix}_${servo2_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + </xacro:macro> + +</root> diff --git a/urdf/include/body.xacro b/urdf/include/body.xacro index 0dbe0a7f6bcf53d6bcc7fd694ee455996b64d038..c2bacf14507432fbbdbae08ff77dd07137fd3243 100644 --- a/urdf/include/body.xacro +++ b/urdf/include/body.xacro @@ -11,6 +11,12 @@ <mesh filename="package://iri_dabo_description/meshes/body_low_dabo.dae"/> </geometry> </visual> + <collision> + <origin xyz="0 0.0 0.3" rpy="0 0 0"/> + <geometry> + <box size="0.3 0.4 0.6"/> + </geometry> + </collision> <inertial> <origin xyz="0 0 0" rpy="0 0 0"/> <mass value="1"/> diff --git a/urdf/include/control.gazebo b/urdf/include/control.gazebo new file mode 100644 index 0000000000000000000000000000000000000000..47400d2daa11cb4029e819bd541fe780e93afd58 --- /dev/null +++ b/urdf/include/control.gazebo @@ -0,0 +1,19 @@ +<?xml version="1.0"?> + +<root xmlns:xacro="http://ros.org/wiki/xacro"> + + <xacro:macro name="control" params="name"> + + <xacro:property name="ctrl_period" value="0.001"/> + + <gazebo> + <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> + <robotNamespace>${name}</robotNamespace> + <controlPeriod>${ctrl_period}</controlPeriod> + <legacyModeNS>true</legacyModeNS> + </plugin> + </gazebo> + + </xacro:macro> + +</root> \ No newline at end of file diff --git a/urdf/include/head.xacro b/urdf/include/head.xacro index 3e5cb4ebe343807d6d22a64135cd064b8cde947d..9cbbe8b433385aacc2d37cb6ecf5bc5bf45fa34d 100644 --- a/urdf/include/head.xacro +++ b/urdf/include/head.xacro @@ -2,17 +2,82 @@ <root xmlns:xacro="http://ros.org/wiki/xacro"> + <xacro:include filename="$(find iri_joint_trajectory_gazebo)/urdf/servo.xacro"/> + + <xacro:property name="PI" value="3.1415926535897931" /> + <xacro:property name="servo1_name" value="head_servo1" /> + <xacro:property name="servo2_name" value="head_servo2" /> + <xacro:property name="servo3_name" value="head_servo3" /> + <xacro:property name="load_name" value="head" /> + <xacro:property name="joint1_name" value="head_pan" /> + <xacro:property name="joint2_name" value="head_roll" /> + <xacro:property name="joint3_name" value="head_tilt" /> + <xacro:macro name="head" params="name parent *origin"> + + <joint name="${parent}2${servo1_name}_joint" type="fixed"> + <parent link="${parent}"/> + <child link="${servo1_name}"/> + <xacro:insert_block name="origin"/> + </joint> - <link name="head"> + <xacro:servo name="${servo1_name}"> + <container> + <geometry> + <box size="0.054 0.032 0.04"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="0 0 0"/> + </container> + </xacro:servo> + + <xacro:servo name="${servo2_name}"> + <container> + <geometry> + <box size="0.04 0.032 0.054"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="-0.02 0 0.05"/> + </container> + </xacro:servo> + + <xacro:servo name="${servo3_name}"> + <container> + <geometry> + <box size="0.032 0.04 0.054"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="0 -0.02 -0.027"/> + </container> + </xacro:servo> + + <link name="${load_name}"> <visual> - <origin rpy="1.5707 0 0" xyz="0 0 0"/> + <origin xyz="-0.05 0.01 0" rpy="0 0 -${PI/2}"/> <geometry> <mesh filename="package://iri_dabo_description/meshes/head_low_dabo.dae"/> </geometry> </visual> <collision> - <origin xyz="0 0 0.05" rpy="0 0 0"/> + <origin xyz="0 0.01 0" rpy="0 0 0"/> <geometry> <sphere radius="0.15"/> </geometry> @@ -26,13 +91,72 @@ izz="0.00750394"/> </inertial> </link> + + <xacro:servo_joint name="${joint1_name}" + parent="${servo1_name}" + child="${servo2_name}"> + <container> + <origin rpy="0 0 0" xyz="0.01722 0 0.0"/> + </container> + <container> + <limit effort="25.0" lower="-${PI/2}" upper="${PI/2}" velocity="5"/> + </container> + </xacro:servo_joint> - <joint name="${parent}2head_joint" type="fixed"> - <parent link="${parent}"/> - <child link="head"/> - <xacro:insert_block name="origin"/> - <axis xyz="0 0 1"/> - </joint> + <xacro:servo_transmission name="${joint1_name}" + joint_interface="EffortJointInterface" + reduction="1"> + </xacro:servo_transmission> + + <xacro:servo_joint name="${joint2_name}" + parent="${servo2_name}" + child="${servo3_name}"> + <container> + <origin rpy="-${PI/2} 0 -${PI/2}" xyz="0 0 0.08293"/> + </container> + <container> + <limit effort="25.0" lower="-0.7" upper="0.7" velocity="5"/> + </container> + </xacro:servo_joint> + + <xacro:servo_transmission name="${joint2_name}" + joint_interface="EffortJointInterface" + reduction="1"> + </xacro:servo_transmission> + + <xacro:servo_joint name="${joint3_name}" + parent="${servo3_name}" + child="${load_name}"> + <container> + <origin rpy="-${PI/2} 0 -${PI/2}" xyz="0 -0.060 0.007"/> + </container> + <container> + <limit effort="25.0" lower="-0.49" upper="0.11" velocity="5"/> + </container> + </xacro:servo_joint> + + <xacro:servo_transmission name="${joint3_name}" + joint_interface="EffortJointInterface" + reduction="1"> + </xacro:servo_transmission> + + <gazebo reference="${servo1_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + <gazebo reference="${servo2_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + <gazebo reference="${servo3_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> </xacro:macro> diff --git a/urdf/include/head_fixed.xacro b/urdf/include/head_fixed.xacro new file mode 100644 index 0000000000000000000000000000000000000000..9cc1228b3aef864a5ab7603b4d5894b6d5562496 --- /dev/null +++ b/urdf/include/head_fixed.xacro @@ -0,0 +1,136 @@ +<?xml version="1.0"?> + +<root xmlns:xacro="http://ros.org/wiki/xacro"> + + <xacro:include filename="$(find iri_joint_trajectory_gazebo)/urdf/servo.xacro"/> + + <xacro:property name="PI" value="3.1415926535897931" /> + <xacro:property name="servo1_name" value="head_servo1" /> + <xacro:property name="servo2_name" value="head_servo2" /> + <xacro:property name="servo3_name" value="head_servo3" /> + <xacro:property name="load_name" value="head" /> + <xacro:property name="joint1_name" value="head_pan" /> + <xacro:property name="joint2_name" value="head_roll" /> + <xacro:property name="joint3_name" value="head_tilt" /> + + <xacro:macro name="head" params="name parent *origin"> + + <joint name="${parent}2${servo1_name}_joint" type="fixed"> + <parent link="${parent}"/> + <child link="${servo1_name}"/> + <xacro:insert_block name="origin"/> + </joint> + + <xacro:servo name="${servo1_name}"> + <container> + <geometry> + <box size="0.054 0.032 0.04"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="0 0 0"/> + </container> + </xacro:servo> + + <xacro:servo name="${servo2_name}"> + <container> + <geometry> + <box size="0.04 0.032 0.054"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="-0.02 0 0.05"/> + </container> + </xacro:servo> + + <xacro:servo name="${servo3_name}"> + <container> + <geometry> + <box size="0.032 0.04 0.054"/> + </geometry> + </container> + <container> + <material name="black"> + <color rgba="0 0 0 1"/> + </material> + </container> + <container> + <origin rpy="0 0 0" xyz="0 -0.02 -0.027"/> + </container> + </xacro:servo> + + <link name="${load_name}"> + <visual> + <origin xyz="-0.05 0.01 0" rpy="0 0 -${PI/2}"/> + <geometry> + <mesh filename="package://iri_dabo_description/meshes/head_low_dabo.dae"/> + </geometry> + </visual> + <collision> + <origin xyz="0 0.05 0.05" rpy="0 0 0"/> + <geometry> + <sphere radius="0.15"/> + </geometry> + </collision> + <inertial> + <origin xyz="0.07366358 0.00094968 -0.00868937" rpy="0 0 0"/> + <mass value="1.0"/> + <inertia + ixx="0.00966943" ixy="-0.00004500" ixz="-0.00064634" + iyy="0.00845836" iyz="0.00001799" + izz="0.00750394"/> + </inertial> + </link> + + <joint name="${joint1_name}" type="fixed"> + <parent link="${servo1_name}"/> + <child link="${servo2_name}"/> + <origin rpy="0 0 0" xyz="0.01722 0 0.0"/> + <axis xyz="0 0 1"/> + </joint> + + <joint name="${joint2_name}" type="fixed"> + <parent link="${servo2_name}"/> + <child link="${servo3_name}"/> + <origin rpy="-${PI/2} 0 -${PI/2}" xyz="0 0 0.08293"/> + <axis xyz="0 0 1"/> + </joint> + + <joint name="${joint3_name}" type="fixed"> + <parent link="${servo3_name}"/> + <child link="${load_name}"/> + <origin rpy="-${PI/2} 0 -${PI/2}" xyz="0 -0.060 0.007"/> + <axis xyz="0 0 1"/> + </joint> + + <gazebo reference="${servo1_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + <gazebo reference="${servo2_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + <gazebo reference="${servo3_name}"> + <mu1>0.2</mu1> + <mu2>0.2</mu2> + <material>Gazebo/Black</material> + </gazebo> + + </xacro:macro> + +</root> \ No newline at end of file