]> defiant.homedns.org Git - ros_wild_thumper.git/blob - urdf/wild_thumper.urdf.xacro
urdf: added antenna
[ros_wild_thumper.git] / urdf / wild_thumper.urdf.xacro
1 <?xml version="1.0"?>
2 <robot name="wild_thumper" xmlns:xacro="http://ros.org/wiki/xacro">
3         <xacro:property name="PI" value="3.1415926535897931" />
4
5         <material name="wtgrey">
6                 <color rgba="0.5 0.5 0.5 0.5"/>
7         </material>
8         <material name="wtred">
9                 <color rgba="1 0 0 1"/>
10         </material>
11         <material name="wtblack">
12                 <color rgba="0 0 0 1"/>
13         </material>
14         <material name="wtgreen">
15                 <color rgba="0 1 0 0.8"/>
16         </material>
17
18         <link name="base_footprint">
19                 <visual>
20                         <geometry>
21                                 <box size="0.28 0.31 0.000001"/>
22                         </geometry>
23                         <material name="wtgrey"/>
24                 </visual>
25         </link>
26
27         <link name="base_link">
28                 <collision>
29                         <geometry>
30                                 <box size="0.23 0.12 0.09"/>
31                         </geometry>
32                 </collision>
33                 <visual>
34                         <origin xyz="-0.00275 0 0" rpy="0 0 0"/>
35                         <geometry>
36                                 <mesh filename="package://wild_thumper/meshes/wild_thumper_4wd.stl" />
37                         </geometry>
38                 </visual>
39                 <inertial>
40                         <origin xyz="-0.00275 0 -0.02" rpy="0 0 0"/>
41                         <mass value="2.5"/>
42                         <inertia ixx="0.012708" ixy="0.0" ixz="0.0" iyy="0.0084375" iyz="0.0" izz="0.017771"/>
43                 </inertial>
44         </link>
45
46         <link name="base_imu_link">
47                 <visual>
48                         <geometry>
49                                 <box size="0.041 0.028 0.002"/>
50                         </geometry>
51                         <material name="wtred"/>
52                 </visual>
53         </link>
54
55         <link name="mounting_plate">
56                 <visual>
57                         <geometry>
58                                 <box size="0.23 0.12 0.001"/>
59                         </geometry>
60                 </visual>
61         </link>
62
63         <link name="lidar">
64                 <visual>
65                         <geometry>
66                                 <mesh filename="package://wild_thumper/meshes/rplidar_a2.stl" scale="0.001 0.001 0.001"/>
67                         </geometry>
68                         <origin xyz="0.0 0.0 0" rpy="0 0 0"/>
69                         <material name="wtblack"/>
70                 </visual>
71         </link>
72
73         <link name="sonar_forward_left">
74                 <visual>
75                         <geometry>
76                                 <box size="0.016 0.044 0.02"/>
77                         </geometry>
78                         <origin xyz="${0.016/2} 0 0" rpy="0 0 0"/>
79                         <material name="wtgreen"/>
80                 </visual>
81         </link>
82
83         <link name="sonar_forward_right">
84                 <visual>
85                         <geometry>
86                                 <box size="0.016 0.044 0.02"/>
87                         </geometry>
88                         <origin xyz="${0.016/2} 0 0" rpy="0 0 0"/>
89                         <material name="wtgreen"/>
90                 </visual>
91         </link>
92
93         <link name="sonar_backward">
94                 <visual>
95                         <geometry>
96                                 <box size="0.016 0.044 0.02"/>
97                         </geometry>
98                         <origin xyz="${0.016/2} 0 0" rpy="0 0 0"/>
99                         <material name="wtgreen"/>
100                 </visual>
101         </link>
102
103         <link name="antenna">
104                 <visual>
105                         <geometry>
106                                 <cylinder radius="0.006" length="0.165"/>
107                         </geometry>
108                         <origin xyz="0 0 0.0825" rpy="0 0 0"/>
109                         <material name="wtblack"/>
110                 </visual>
111         </link>
112
113         <joint name="base_link_joint" type="fixed">
114                 <parent link="base_footprint"/>
115                 <child link="base_link"/>
116                 <origin xyz="0.0 0.0 0.082" rpy="0 0 0"/>
117         </joint>
118
119         <joint name="mounting_plate_joint" type="fixed">
120                 <parent link="base_link"/>
121                 <child link="mounting_plate"/>
122                 <origin xyz="0.0 0.0 0.044" rpy="0 0 0"/>
123         </joint>
124
125         <joint name="imu_joint" type="fixed">
126                 <parent link="mounting_plate"/>
127                 <child link="base_imu_link"/>
128                 <origin xyz="0.06 -0.03 0.058" rpy="0 0 0"/>
129         </joint>
130
131         <joint name="sonar_forward_left_joint" type="fixed">
132                 <parent link="mounting_plate"/>
133                 <child link="sonar_forward_left"/>
134                 <origin xyz="0.115 0.05 -0.012" rpy="0 ${-5*PI/180} 0"/>
135         </joint>
136
137         <joint name="sonar_forward_right_joint" type="fixed">
138                 <parent link="mounting_plate"/>
139                 <child link="sonar_forward_right"/>
140                 <origin xyz="0.115 -0.05 -0.012" rpy="0 ${-5*PI/180} 0"/>
141         </joint>
142
143         <joint name="sonar_backward_joint" type="fixed">
144                 <parent link="mounting_plate"/>
145                 <child link="sonar_backward"/>
146                 <origin xyz="-0.115 0.0 -0.012" rpy="0 ${-175*PI/180} 0"/>
147         </joint>
148
149         <joint name="antenna_joint" type="fixed">
150                 <parent link="mounting_plate"/>
151                 <child link="antenna"/>
152                 <origin xyz="0.011 0.0588 0" rpy="0 0 0"/>
153         </joint>
154
155         <joint name="lidar_joint" type="fixed">
156                 <parent link="mounting_plate"/>
157                 <child link="lidar"/>
158                 <origin xyz="0.075 0.01 ${0.0408/2}" rpy="0 0 ${-110*PI/180}"/>
159         </joint>
160
161         <xacro:macro name="wheel" params="pos side xyz rpy">   
162                 <link name="${pos}_${side}_wheel">
163                         <visual>
164                                 <origin xyz="0 0 0" rpy="0 0 0"/>
165                                 <geometry>
166                                         <mesh filename="package://wild_thumper/meshes/wheel_${side}.stl" />
167                                 </geometry>
168                         </visual>
169                         <collision>
170                                 <origin xyz="0 0 0" rpy="${PI/2} 0 0"/>
171                                 <geometry>
172                                         <cylinder radius="0.06" length="0.06"/>
173                                 </geometry>
174                         </collision>
175                         <inertial>
176                                 <origin xyz="0 0 0" rpy="0 0 0"/>
177                                 <mass value="0.2"/>
178                                 <inertia ixx="0.00024" ixy="0" ixz="0" iyy="0.00036" iyz="0" izz="0.00024"/>
179                         </inertial>
180                 </link>
181
182                 <gazebo reference="${pos}_${side}_wheel">
183                         <mu1 value="1.0"/>
184                         <mu2 value="0.2"/>
185                         <kp value="1000000000000.0" />
186                         <kd value="0.0" />
187                         <fdir1 value="0 1 0"/>
188                         <minDepth>0.005</minDepth>
189                 </gazebo>
190
191                 <joint name="${pos}_${side}_wheel_joint" type="continuous">
192                         <parent link="base_link"/>
193                         <child link="${pos}_${side}_wheel"/>
194                         <axis xyz="0 1 0"/>
195                         <origin xyz="${xyz}" rpy="${rpy}"/>
196                 </joint>
197
198                 <transmission name="${pos}_${side}_wheel_trans" type="SimpleTransmission">
199                         <type>transmission_interface/SimpleTransmission</type>
200                         <joint name="${pos}_${side}_wheel_joint">
201                                 <hardwareInterface>VelocityJointInterface</hardwareInterface>
202                         </joint>
203                         <actuator name="{pos}_${side}_wheel_motor">
204                                 <mechanicalReduction>1</mechanicalReduction>
205                         </actuator>
206                 </transmission>
207         </xacro:macro>
208
209         <xacro:wheel pos="rear" side="left"   xyz="-0.07525  0.12 -0.025" rpy="${-5*PI/180} 0 0" />
210         <xacro:wheel pos="rear" side="right"  xyz="-0.07525 -0.12 -0.025" rpy="${5*PI/180} 0 0" />
211         <xacro:wheel pos="front" side="left"  xyz=" 0.07525  0.12 -0.025" rpy="${-5*PI/180} 0 0" />
212         <xacro:wheel pos="front" side="right" xyz=" 0.07525 -0.12 -0.025" rpy="${5*PI/180} 0 0" />
213
214         <gazebo>
215                 <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
216                         <robotNamespace>/</robotNamespace>
217                         <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
218                 </plugin>
219
220                 <plugin name="imu_controller" filename="libgazebo_ros_imu.so">
221                         <alwaysOn>true</alwaysOn>
222                         <updateRate>20.0</updateRate>
223                         <bodyName>base_imu_link</bodyName>
224                         <topicName>imu</topicName>
225                         <gaussianNoise>0.05</gaussianNoise>
226                         <frameName>base_imu_link</frameName>
227                         <xyzOffsets>0 0 0</xyzOffsets>
228                         <rpyOffset>0 0 0</rpyOffset>
229                         <serviceName>/default_imu</serviceName>
230                 </plugin>
231         </gazebo>
232
233         <xacro:macro name="range_sensor" params="name ros_topic update_rate minRange maxRange fov radiation">
234                 <gazebo reference="${name}">
235                         <sensor type="ray" name="${name}_sensor">
236                                 <pose>0 0 0 0 0 0</pose>
237                                 <update_rate>${update_rate}</update_rate>
238                                 <visualize>false</visualize>
239                                 <ray>
240                                         <scan>
241                                                 <horizontal>
242                                                         <samples>5</samples>
243                                                         <resolution>1</resolution>
244                                                         <min_angle>-${fov/2}</min_angle>
245                                                         <max_angle>${fov/2}</max_angle>
246                                                 </horizontal>
247                                                 <vertical>
248                                                         <samples>5</samples>
249                                                         <resolution>1</resolution>
250                                                         <min_angle>-${fov/2}</min_angle>
251                                                         <max_angle>${fov/2}</max_angle>
252                                                 </vertical>
253                                         </scan>
254                                         <range>
255                                                 <min>${minRange}</min>
256                                                 <max>${maxRange}</max>
257                                                 <resolution>0.01</resolution>
258                                         </range>
259                                 </ray>
260                                 <plugin filename="libgazebo_ros_range.so" name="gazebo_ros_range">
261                                         <gaussianNoise>0.005</gaussianNoise>
262                                         <alwaysOn>true</alwaysOn>
263                                         <updateRate>${update_rate}</updateRate>
264                                         <topicName>${ros_topic}</topicName>
265                                         <frameName>${name}</frameName>
266                                         <fov>${fov}</fov>
267                                         <radiation>${radiation}</radiation>
268                                 </plugin>
269                         </sensor>
270                 </gazebo>
271         </xacro:macro>
272
273         <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" />
274         <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" />
275         <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" />
276         <xacro:range_sensor name="ir_left" ros_topic="range_left" update_rate="10" minRange="0.04" maxRange="0.3" fov="${5*PI/180}" radiation="infrared" />
277         <xacro:range_sensor name="ir_right" ros_topic="range_right" update_rate="10" minRange="0.04" maxRange="0.3" fov="${5*PI/180}" radiation="infrared" />
278
279         <gazebo reference="lidar">
280                 <sensor type="ray" name="head_rplidar_a2_sensor">
281                         <pose>0 0 0 0 0 0</pose>
282                         <visualize>false</visualize>
283                         <update_rate>12</update_rate>
284                         <ray>
285                                 <scan>
286                                         <horizontal>
287                                                 <samples>360</samples>
288                                                 <resolution>1</resolution>
289                                                 <min_angle>-3.12413907051</min_angle>
290                                                 <max_angle>3.14159274101</max_angle>
291                                         </horizontal>
292                                 </scan>
293                                 <range>
294                                         <min>0.20</min>
295                                         <max>16.0</max>
296                                         <resolution>0.01</resolution>
297                                 </range>
298                                 <noise>
299                                         <type>gaussian</type>
300                                         <mean>0.0</mean>
301                                         <stddev>0.01</stddev>
302                                 </noise>
303                         </ray>
304                         <plugin name="gazebo_ros_head_rplidar_a2_controller" filename="libgazebo_ros_laser.so">
305                                 <topicName>/scan</topicName>
306                                 <frameName>lidar</frameName>
307                         </plugin>
308                 </sensor>
309         </gazebo>
310 </robot>