fix some urdf inertias
[ros_wild_thumper.git] / urdf / wild_thumper.urdf.xacro
index 30d509d31b42ca2245add9e6a40dafdd0a33fb8e..fd005afa5d7308fe564d8ab3d91d2489abc88414 100644 (file)
 <?xml version="1.0"?>
-<robot name="r2" xmlns:xacro="http://ros.org/wiki/xacro">
+<robot name="wild_thumper" xmlns:xacro="http://ros.org/wiki/xacro">
        <xacro:property name="PI" value="3.1415926535897931" />
-       <xacro:include filename="$(find hector_sensors_description)/urdf/asus_camera.urdf.xacro" />
+
+       <material name="wtgrey">
+               <color rgba="0.5 0.5 0.5 0.5"/>
+       </material>
+       <material name="wtred">
+               <color rgba="1 0 0 1"/>
+       </material>
+       <material name="wtblack">
+               <color rgba="0 0 0 1"/>
+       </material>
+       <material name="wtgreen">
+               <color rgba="0 1 0 0.8"/>
+       </material>
+
+       <link name="base_footprint">
+               <visual>
+                       <geometry>
+                               <box size="0.28 0.31 0.000001"/>
+                       </geometry>
+                       <material name="wtgrey"/>
+               </visual>
+       </link>
 
        <link name="base_link">
+               <collision>
+                       <geometry>
+                               <box size="0.23 0.12 0.09"/>
+                       </geometry>
+               </collision>
+               <visual>
+                       <origin xyz="-0.00275 0 0" rpy="0 0 0"/>
+                       <geometry>
+                               <mesh filename="package://wild_thumper/meshes/wild_thumper_4wd.stl" />
+                       </geometry>
+               </visual>
+               <inertial>
+                       <origin xyz="-0.00275 0 0" rpy="0 0 0"/>
+                       <mass value="2.5"/>
+                       <inertia izz="0.014021" ixy="0.0" ixz="0.0" iyy="0.012708" iyz="0.0" ixx="0.0046875"/>
+               </inertial>
+       </link>
+
+       <link name="base_imu_link">
+               <visual>
+                       <geometry>
+                               <box size="0.041 0.028 0.002"/>
+                       </geometry>
+                       <material name="wtred"/>
+               </visual>
+       </link>
+
+       <link name="mounting_plate">
+               <visual>
+                       <geometry>
+                               <box size="0.23 0.12 0.001"/>
+                       </geometry>
+               </visual>
+       </link>
+
+       <link name="lidar">
+               <visual>
+                       <geometry>
+                               <mesh filename="package://wild_thumper/meshes/rplidar_a2.stl" scale="0.001 0.001 0.001"/>
+                       </geometry>
+                       <origin xyz="0.0 0.0 0" rpy="0 0 0"/>
+                       <material name="wtblack"/>
+               </visual>
+       </link>
+
+       <link name="sonar_forward_left">
+               <visual>
+                       <geometry>
+                               <box size="0.016 0.044 0.02"/>
+                       </geometry>
+                       <origin xyz="${0.016/2} 0 0" rpy="0 0 0"/>
+                       <material name="wtgreen"/>
+               </visual>
+       </link>
+
+       <link name="sonar_forward_right">
+               <visual>
+                       <geometry>
+                               <box size="0.016 0.044 0.02"/>
+                       </geometry>
+                       <origin xyz="${0.016/2} 0 0" rpy="0 0 0"/>
+                       <material name="wtgreen"/>
+               </visual>
+       </link>
+
+       <link name="sonar_backward">
                <visual>
-                       <origin xyz="0.02 0.165 0.2" rpy="${PI} 0 0"/>
                        <geometry>
-                               <mesh filename="package://wild_thumper/meshes/wild_thumper_assembly_corrected.stl" scale="0.001 0.001 0.001" />
+                               <box size="0.016 0.044 0.02"/>
                        </geometry>
+                       <origin xyz="${0.016/2} 0 0" rpy="0 0 0"/>
+                       <material name="wtgreen"/>
                </visual>
        </link>
 
-       <xacro:asus_camera name="camera" parent="base_link">
-               <origin xyz="0 0.19 0.15" rpy="0 0 ${PI/2}"/>
-       </xacro:asus_camera>
+       <link name="antenna">
+               <visual>
+                       <geometry>
+                               <cylinder radius="0.006" length="0.165"/>
+                       </geometry>
+                       <origin xyz="0 0 0.0825" rpy="0 0 0"/>
+                       <material name="wtblack"/>
+               </visual>
+               <collision>
+                       <geometry>
+                               <cylinder radius="0.008" length="0.17"/>
+                       </geometry>
+                       <origin xyz="0 0 0.085" rpy="0 0 0"/>
+               </collision>
+       </link>
+
+       <joint name="base_link_joint" type="fixed">
+               <parent link="base_footprint"/>
+               <child link="base_link"/>
+               <origin xyz="0.0 0.0 0.082" rpy="0 0 0"/>
+       </joint>
+
+       <joint name="mounting_plate_joint" type="fixed">
+               <parent link="base_link"/>
+               <child link="mounting_plate"/>
+               <origin xyz="0.0 0.0 0.044" rpy="0 0 0"/>
+       </joint>
+
+       <joint name="imu_joint" type="fixed">
+               <parent link="mounting_plate"/>
+               <child link="base_imu_link"/>
+               <origin xyz="0.06 -0.03 0.058" rpy="0 0 0"/>
+       </joint>
+
+       <joint name="sonar_forward_left_joint" type="fixed">
+               <parent link="mounting_plate"/>
+               <child link="sonar_forward_left"/>
+               <origin xyz="0.115 0.05 -0.012" rpy="0 ${-5*PI/180} 0"/>
+       </joint>
+
+       <joint name="sonar_forward_right_joint" type="fixed">
+               <parent link="mounting_plate"/>
+               <child link="sonar_forward_right"/>
+               <origin xyz="0.115 -0.05 -0.012" rpy="0 ${-5*PI/180} 0"/>
+       </joint>
+
+       <joint name="sonar_backward_joint" type="fixed">
+               <parent link="mounting_plate"/>
+               <child link="sonar_backward"/>
+               <origin xyz="-0.115 0.0 -0.012" rpy="0 ${-175*PI/180} 0"/>
+       </joint>
+
+       <joint name="antenna_joint" type="fixed">
+               <parent link="mounting_plate"/>
+               <child link="antenna"/>
+               <origin xyz="0.011 0.05 0" rpy="0 0 0"/>
+       </joint>
+
+       <joint name="lidar_joint" type="fixed">
+               <parent link="mounting_plate"/>
+               <child link="lidar"/>
+               <origin xyz="0.075 0.01 ${0.0408/2}" rpy="0 0 ${-110*PI/180}"/>
+       </joint>
+
+       <xacro:macro name="wheel" params="pos side xyz rpy">   
+               <link name="${pos}_${side}_wheel">
+                       <visual>
+                               <origin xyz="0 0 0" rpy="0 0 0"/>
+                               <geometry>
+                                       <mesh filename="package://wild_thumper/meshes/wheel_${side}.stl" />
+                               </geometry>
+                       </visual>
+                       <collision>
+                               <origin xyz="0 0 0" rpy="${PI/2} 0 0"/>
+                               <geometry>
+                                       <cylinder radius="0.06" length="0.06"/>
+                               </geometry>
+                       </collision>
+                       <inertial>
+                               <origin xyz="0 0 0" rpy="0 0 0"/>
+                               <mass value="0.2"/>
+                               <inertia ixx="0.00024" ixy="0" ixz="0" iyy="0.00036" iyz="0" izz="0.00024"/>
+                       </inertial>
+               </link>
+
+               <gazebo reference="${pos}_${side}_wheel">
+                       <mu1 value="1.0"/>
+                       <mu2 value="0.2"/>
+                       <kp value="1000000000000.0" />
+                       <kd value="1.0" />
+                       <fdir1 value="0 1 0"/>
+                       <minDepth>0.005</minDepth>
+               </gazebo>
+
+               <joint name="${pos}_${side}_wheel_joint" type="continuous">
+                       <parent link="base_link"/>
+                       <child link="${pos}_${side}_wheel"/>
+                       <axis xyz="0 1 0"/>
+                       <origin xyz="${xyz}" rpy="${rpy}"/>
+               </joint>
+
+               <transmission name="${pos}_${side}_wheel_trans" type="SimpleTransmission">
+                       <type>transmission_interface/SimpleTransmission</type>
+                       <joint name="${pos}_${side}_wheel_joint">
+                               <hardwareInterface>VelocityJointInterface</hardwareInterface>
+                       </joint>
+                       <actuator name="{pos}_${side}_wheel_motor">
+                               <mechanicalReduction>1</mechanicalReduction>
+                       </actuator>
+               </transmission>
+       </xacro:macro>
+
+       <xacro:wheel pos="rear" side="left"   xyz="-0.07525  0.12 -0.025" rpy="${-5*PI/180} 0 0" />
+       <xacro:wheel pos="rear" side="right"  xyz="-0.07525 -0.12 -0.025" rpy="${5*PI/180} 0 0" />
+       <xacro:wheel pos="front" side="left"  xyz=" 0.07525  0.12 -0.025" rpy="${-5*PI/180} 0 0" />
+       <xacro:wheel pos="front" side="right" xyz=" 0.07525 -0.12 -0.025" rpy="${5*PI/180} 0 0" />
+
+       <gazebo>
+               <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
+                       <robotNamespace>/</robotNamespace>
+                       <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
+               </plugin>
+
+               <plugin name="imu_controller" filename="libgazebo_ros_imu.so">
+                       <alwaysOn>true</alwaysOn>
+                       <updateRate>20.0</updateRate>
+                       <bodyName>base_imu_link</bodyName>
+                       <topicName>imu</topicName>
+                       <gaussianNoise>0.05</gaussianNoise>
+                       <frameName>base_imu_link</frameName>
+                       <xyzOffsets>0 0 0</xyzOffsets>
+                       <rpyOffset>0 0 0</rpyOffset>
+                       <serviceName>/default_imu</serviceName>
+               </plugin>
+       </gazebo>
+
+       <xacro:macro name="range_sensor" params="name ros_topic update_rate minRange maxRange fov radiation">
+               <gazebo reference="${name}">
+                       <sensor type="ray" name="${name}_sensor">
+                               <pose>0 0 0 0 0 0</pose>
+                               <update_rate>${update_rate}</update_rate>
+                               <visualize>false</visualize>
+                               <ray>
+                                       <scan>
+                                               <horizontal>
+                                                       <samples>5</samples>
+                                                       <resolution>1</resolution>
+                                                       <min_angle>-${fov/2}</min_angle>
+                                                       <max_angle>${fov/2}</max_angle>
+                                               </horizontal>
+                                               <vertical>
+                                                       <samples>5</samples>
+                                                       <resolution>1</resolution>
+                                                       <min_angle>-${fov/2}</min_angle>
+                                                       <max_angle>${fov/2}</max_angle>
+                                               </vertical>
+                                       </scan>
+                                       <range>
+                                               <min>${minRange}</min>
+                                               <max>${maxRange}</max>
+                                               <resolution>0.01</resolution>
+                                       </range>
+                               </ray>
+                               <plugin filename="libgazebo_ros_range.so" name="gazebo_ros_range">
+                                       <gaussianNoise>0.005</gaussianNoise>
+                                       <alwaysOn>true</alwaysOn>
+                                       <updateRate>${update_rate}</updateRate>
+                                       <topicName>${ros_topic}</topicName>
+                                       <frameName>${name}</frameName>
+                                       <fov>${fov}</fov>
+                                       <radiation>${radiation}</radiation>
+                               </plugin>
+                       </sensor>
+               </gazebo>
+       </xacro:macro>
+
+       <xacro:range_sensor name="sonar_forward_left" ros_topic="range_forward_left" update_rate="10" minRange="0.04" maxRange="0.5" fov="${20*PI/180}" radiation="ultrasound" />
+       <xacro:range_sensor name="sonar_forward_right" ros_topic="range_forward_right" update_rate="10" minRange="0.04" maxRange="0.5" fov="${20*PI/180}" radiation="ultrasound" />
+       <xacro:range_sensor name="sonar_backward" ros_topic="range_backward" update_rate="10" minRange="0.04" maxRange="0.5" fov="${20*PI/180}" radiation="ultrasound" />
+
+       <gazebo reference="lidar">
+               <sensor type="ray" name="head_rplidar_a2_sensor">
+                       <pose>0 0 0 0 0 0</pose>
+                       <visualize>false</visualize>
+                       <update_rate>12</update_rate>
+                       <ray>
+                               <scan>
+                                       <horizontal>
+                                               <samples>360</samples>
+                                               <resolution>1</resolution>
+                                               <min_angle>-3.12413907051</min_angle>
+                                               <max_angle>3.14159274101</max_angle>
+                                       </horizontal>
+                               </scan>
+                               <range>
+                                       <min>0.20</min>
+                                       <max>16.0</max>
+                                       <resolution>0.01</resolution>
+                               </range>
+                               <noise>
+                                       <type>gaussian</type>
+                                       <mean>0.0</mean>
+                                       <stddev>0.01</stddev>
+                               </noise>
+                       </ray>
+                       <plugin name="gazebo_ros_head_rplidar_a2_controller" filename="libgazebo_ros_laser.so">
+                               <topicName>/scan</topicName>
+                               <frameName>lidar</frameName>
+                       </plugin>
+               </sensor>
+       </gazebo>
 </robot>