drz_telemax_arm.urdf.xacro 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. <?xml version="1.0"?>
  2. <robot xmlns:xacro="http://www.ros.org/wiki/xacro">
  3. <xacro:include filename="$(find drz_telemax_description)/urdf/drz_telemax_arm.gazebo.xacro"/>
  4. <xacro:include filename="$(find drz_telemax_description)/urdf/drz_telemax_gripper_finger.urdf.xacro"/>
  5. <!-- <xacro:include filename="$(find drz_telemax_description)/urdf/materials.urdf.xacro"/> -->
  6. <xacro:include filename="$(find hector_xacro_tools)/urdf/joint_macros.urdf.xacro"/>
  7. <xacro:include filename="$(find hector_xacro_tools)/urdf/inertia_tensors.urdf.xacro" />
  8. <xacro:property name="M_PI" value="3.1415926535897931" />
  9. <xacro:property name="turretTurnLower" value="-210.0"/>
  10. <xacro:property name="upperArmTiltLower" value="-156.0"/>
  11. <xacro:property name="lowerArmTiltLower" value="-170.0"/>
  12. <xacro:property name="lowerArmTurnLower" value="-210.0"/>
  13. <xacro:property name="gripperTiltLower" value="-130.0"/><!--TODO wenn Kamera auf Handgelenk gesteckt wird, aendern sich die Werte-->
  14. <xacro:property name="turretTurnUpper" value="210.0"/>
  15. <xacro:property name="upperArmTiltUpper" value="60.0"/>
  16. <xacro:property name="lowerArmTiltUpper" value="170.0"/>
  17. <xacro:property name="lowerArmTurnUpper" value="210.0"/>
  18. <xacro:property name="gripperTiltUpper" value="130.0"/>
  19. <xacro:property name="turretTurnMaxVel" value="36.0"/>
  20. <xacro:property name="upperArmTiltMaxVel" value="18.0"/>
  21. <xacro:property name="lowerArmTiltMaxVel" value="36.0"/>
  22. <xacro:property name="lowerArmTurnMaxVel" value="72.0"/>
  23. <xacro:property name="gripperTiltMaxVel" value="78.0"/>
  24. <xacro:property name="gripperTurnMaxVel" value="74.0"/>
  25. <xacro:property name="turretTurnMaxEffort" value="10000.0"/>
  26. <xacro:property name="upperArmTiltMaxEffort" value="10000.0"/>
  27. <xacro:property name="lowerArmTiltMaxEffort" value="10000.0"/>
  28. <xacro:property name="lowerArmTurnMaxEffort" value="10000.0"/>
  29. <xacro:property name="gripperTiltMaxEffort" value="10000.0"/>
  30. <xacro:property name="gripperTurnMaxEffort" value="10000.0"/>
  31. <xacro:property name="gripperForwardLower" value="0.03"/>
  32. <xacro:property name="gripperJawRightLower" value="0.0"/>
  33. <xacro:property name="gripperWidthLower" value="0.0"/>
  34. <xacro:property name="gripperForwardUpper" value="0.06"/>
  35. <xacro:property name="gripperJawRightUpper" value="0.06"/>
  36. <xacro:property name="gripperWidthUpper" value="0.12"/>
  37. <xacro:property name="gripperForwardMaxVel" value="0.08"/>
  38. <xacro:property name="gripperJawRightMaxVel" value="0.0085"/>
  39. <xacro:property name="gripperWidthMaxVel" value="0.017"/>
  40. <xacro:property name="gripperForwardMaxEffort" value="1.0"/>
  41. <xacro:property name="gripperJawRightMaxEffort" value="1.0"/>
  42. <xacro:property name="gripperWidthMaxEffort" value="1.0"/>
  43. <xacro:macro name="telemax_6dof_manipulator" params="parent *origin">
  44. <joint name="manipulator_base_joint" type="fixed">
  45. <xacro:insert_block name="origin" />
  46. <parent link="${parent}"/>
  47. <child link="manipulator_base_link"/>
  48. </joint>
  49. <link name="manipulator_base_link">
  50. <xacro:inertial_cuboid_with_pose mass="1" x_length="0.02" y_length="0.02" z_length="0.02" >
  51. <origin xyz="0 0 0.0" rpy="0 0 0"/>
  52. </xacro:inertial_cuboid_with_pose>
  53. <visual>
  54. <geometry>
  55. <mesh filename="package://drz_telemax_description/meshes/manipulator_base_link.dae" scale="0.001 0.001 0.001"/>
  56. </geometry>
  57. </visual>
  58. <collision>
  59. <origin xyz="0.0 0.0 0.0" rpy="0 0 0"/>
  60. <geometry>
  61. <cylinder radius="0.1" length="0.02" />
  62. </geometry>
  63. </collision>
  64. </link>
  65. <joint name="arm_joint_0" type="revolute">
  66. <parent link="manipulator_base_link"/>
  67. <child link="arm_link_0"/>
  68. <origin xyz="0 0 0" rpy="0 0 0" />
  69. <axis xyz="0 0 1" />
  70. <limit lower="${turretTurnLower * M_PI/180.0}" upper="${turretTurnUpper * M_PI/180.0}" velocity="${turretTurnMaxVel * M_PI/180.0}" effort="${turretTurnMaxEffort}" />
  71. </joint>
  72. <link name="arm_link_0">
  73. <xacro:inertial_cuboid_with_pose mass="3" x_length="0.25" y_length="0.2" z_length="0.18" >
  74. <origin xyz="${-0.115 + (0.115+0.123)/2} ${-0.0715 + (0.0715+0.1142)/2} ${(0.092+0.160)/2.0}" rpy="0 0 0"/>
  75. </xacro:inertial_cuboid_with_pose>
  76. <visual>
  77. <geometry>
  78. <mesh filename="package://drz_telemax_description/meshes/arm_link_0.dae" scale="0.001 0.001 0.001"/>
  79. </geometry>
  80. </visual>
  81. <!-- Tower body -->
  82. <collision>
  83. <origin xyz="0.01 0.025 0.165" rpy="0 0 0"/>
  84. <geometry>
  85. <box size="0.25 0.2 0.18" />
  86. </geometry>
  87. </collision>
  88. <!-- Tower cylinder -->
  89. <collision>
  90. <origin xyz="0.0 0.0 0.03" rpy="0 0 0"/>
  91. <geometry>
  92. <cylinder radius="0.075" length="0.09" />
  93. </geometry>
  94. </collision>
  95. <!-- Ring at tower base -->
  96. <collision>
  97. <origin xyz="0.0 0.0 0.0" rpy="0 0 0"/>
  98. <geometry>
  99. <cylinder radius="0.1" length="0.02" />
  100. </geometry>
  101. </collision>
  102. <!-- Antenna 1 -->
  103. <collision>
  104. <origin xyz="${0.01 - 0.25/2} ${0.025 + 0.2/2 - 0.02875} ${0.165 + 0.18/2 + 0.22/2}" rpy="0 0 0"/>
  105. <geometry>
  106. <cylinder radius="0.01" length="0.22" />
  107. </geometry>
  108. </collision>
  109. <!-- Antenna 2 -->
  110. <collision>
  111. <origin xyz="${0.01 - 0.25/2 + 0.13} ${0.025 + 0.2/2} ${0.165 + 0.18/2 + 0.22/2}" rpy="0 0 0"/>
  112. <geometry>
  113. <cylinder radius="0.01" length="0.22" />
  114. </geometry>
  115. </collision>
  116. </link>
  117. <joint name="arm_joint_1" type="revolute">
  118. <parent link="arm_link_0"/>
  119. <child link="arm_link_1"/>
  120. <origin xyz="0.06 -0.0815 0.14" rpy="0 0 0" />
  121. <axis xyz="0 1 0" />
  122. <limit lower="${upperArmTiltLower * M_PI/180.0}" upper="${upperArmTiltUpper * M_PI/180.0}" velocity="${upperArmTiltMaxVel * M_PI/180.0}" effort="${upperArmTiltMaxEffort}" />
  123. </joint>
  124. <link name="arm_link_1">
  125. <!-- <inertial>
  126. <origin xyz="${-0.066 + (0.066+0.089)/2} 0 0" rpy="0 0 0"/>
  127. <mass value="1.0" />
  128. <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
  129. </inertial>-->
  130. <xacro:inertial_cuboid_with_pose mass="5" x_length="0.8" y_length="0.08" z_length="0.08" >
  131. <origin xyz="${0.4 - 0.07} 0 0" rpy="0 0 0"/>
  132. </xacro:inertial_cuboid_with_pose>
  133. <visual>
  134. <geometry>
  135. <mesh filename="package://drz_telemax_description/meshes/arm_link_1.dae" scale="0.001 0.001 0.001"/>
  136. </geometry>
  137. </visual>
  138. <collision>
  139. <origin xyz="0.01 -0.005 0" rpy="0 0 0"/>
  140. <geometry>
  141. <box size="0.16 0.08 0.110" />
  142. </geometry>
  143. </collision>
  144. <collision>
  145. <origin xyz="0.26 -0.005 0" rpy="0 0 0"/>
  146. <geometry>
  147. <box size="0.36 0.08 0.08" />
  148. </geometry>
  149. </collision>
  150. <collision>
  151. <origin xyz="0.56 -0.02 0" rpy="0 0 0"/>
  152. <geometry>
  153. <box size="0.35 0.085 0.13" />
  154. </geometry>
  155. </collision>
  156. </link>
  157. <joint name="arm_joint_2" type="revolute">
  158. <parent link="arm_link_1"/>
  159. <child link="arm_link_2"/>
  160. <origin xyz="0.67 0.081 0.0" rpy="0 0 0" />
  161. <axis xyz="0 1 0" />
  162. <limit lower="${lowerArmTiltLower * M_PI/180.0}" upper="${lowerArmTiltUpper * M_PI/180.0}" velocity="${lowerArmTiltMaxVel * M_PI/180.0}" effort="${lowerArmTiltMaxEffort}" />
  163. </joint>
  164. <link name="arm_link_2">
  165. <!-- <inertial>
  166. <origin xyz="${-0.04 + (0.04+0.04+0.1246)/2} ${0.0634 - (0.0634+0.12-0.08)/2} ${-0.04 + (0.04+0.05)/2}" rpy="0 0 0"/>
  167. <mass value="1.0" />
  168. <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
  169. </inertial>-->
  170. <xacro:inertial_cuboid_with_pose mass="1" x_length="0.15" y_length="0.14" z_length="0.15" >
  171. <origin xyz="0.01 0.01 0.01" rpy="0 0 0"/>
  172. </xacro:inertial_cuboid_with_pose>
  173. <visual>
  174. <geometry>
  175. <mesh filename="package://drz_telemax_description/meshes/arm_link_2.dae" scale="0.001 0.001 0.001"/>
  176. </geometry>
  177. </visual>
  178. <collision>
  179. <origin xyz="0.01 0.01 0.01" rpy="0 0 0"/>
  180. <geometry>
  181. <box size="0.15 0.14 0.15" />
  182. </geometry>
  183. </collision>
  184. <collision>
  185. <origin xyz="0.11 0.0 0.0" rpy="0 0 0"/>
  186. <geometry>
  187. <box size="0.05 0.09 0.09" />
  188. </geometry>
  189. </collision>
  190. </link>
  191. <joint name="arm_joint_3" type="revolute">
  192. <parent link="arm_link_2"/>
  193. <child link="arm_link_3"/>
  194. <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
  195. <axis xyz="1 0 0" />
  196. <limit lower="${lowerArmTurnLower * M_PI/180.0}" upper="${lowerArmTurnUpper * M_PI/180.0}" velocity="${lowerArmTurnMaxVel * M_PI/180.0}" effort="${lowerArmTurnMaxEffort}" />
  197. </joint>
  198. <link name="arm_link_3">
  199. <!-- <inertial>
  200. <origin xyz="${0.494/2} ${0.0523 - 0.1195/2} 0" rpy="0 0 0"/>
  201. <mass value="1.0" />
  202. <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
  203. </inertial>-->
  204. <xacro:inertial_cuboid_with_pose mass="3" x_length="0.45" y_length="0.09" z_length="0.09" >
  205. <!-- <origin xyz="${0.494/2} ${0.0523 - 0.1195/2} 0" rpy="0 0 0"/> -->
  206. <origin xyz="0.3 0.0 0.0" rpy="0 0 0"/>
  207. </xacro:inertial_cuboid_with_pose>
  208. <visual>
  209. <geometry>
  210. <mesh filename="package://drz_telemax_description/meshes/arm_link_3.dae" scale="0.001 0.001 0.001"/>
  211. </geometry>
  212. </visual>
  213. <collision>
  214. <origin xyz="0.3 0.0 0.0" rpy="0 0 0"/>
  215. <geometry>
  216. <box size="0.35 0.09 0.09" />
  217. </geometry>
  218. </collision>
  219. <collision>
  220. <origin xyz="0.53 0.055 0" rpy="0 0 0"/>
  221. <geometry>
  222. <box size="0.25 0.045 0.09" />
  223. </geometry>
  224. </collision>
  225. <collision>
  226. <origin xyz="0.46 0.01 0" rpy="0 0 0"/>
  227. <geometry>
  228. <box size="0.13 0.13 0.09" />
  229. </geometry>
  230. </collision>
  231. </link>
  232. <joint name="arm_joint_4" type="revolute">
  233. <parent link="arm_link_3"/>
  234. <child link="arm_link_4"/>
  235. <origin xyz="0.615 0.0 0.0" rpy="0 0 0" />
  236. <axis xyz="0 1 0" />
  237. <limit lower="${gripperTiltLower * M_PI/180.0}" upper="${gripperTiltUpper * M_PI/180.0}" velocity="${gripperTiltMaxVel * M_PI/180.0}" effort="${gripperTiltMaxEffort}" />
  238. </joint>
  239. <link name="arm_link_4">
  240. <!-- <inertial>
  241. <origin xyz="${-0.059 + 0.168/2} ${-0.046 + 0.076/2.0} ${-0.0367 + (0.0513+0.0367)/2}" rpy="0 0 0"/>
  242. <mass value="1.0" />
  243. <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
  244. </inertial>-->
  245. <xacro:inertial_cuboid_with_pose mass="1" x_length="0.21" y_length="0.1" z_length="0.09" >
  246. <origin xyz="0.025 -0.01 0.005" rpy="0 0 0"/>
  247. </xacro:inertial_cuboid_with_pose>
  248. <visual>
  249. <geometry>
  250. <mesh filename="package://drz_telemax_description/meshes/arm_link_4.dae" scale="0.001 0.001 0.001"/>
  251. </geometry>
  252. </visual>
  253. <collision>
  254. <origin xyz="0.025 -0.01 0.005" rpy="0 0 0"/>
  255. <geometry>
  256. <box size="0.21 0.1 0.09" />
  257. </geometry>
  258. </collision>
  259. <collision>
  260. <origin xyz="0.0625 -0.00125 0.055" rpy="0 0 0"/>
  261. <geometry>
  262. <cylinder radius="0.03" length="0.02" />
  263. </geometry>
  264. </collision>
  265. </link>
  266. <joint name="arm_joint_5" type="continuous">
  267. <parent link="arm_link_4"/>
  268. <child link="arm_link_5"/>
  269. <origin xyz="0.12887 0.0 0.00065" rpy="0 0 0" />
  270. <axis xyz="1 0 0" />
  271. <limit velocity="${gripperTurnMaxVel*M_PI/180.0}" effort="${gripperTurnMaxEffort}" />
  272. </joint>
  273. <link name="arm_link_5">
  274. <!-- <inertial>
  275. <origin xyz="${0.063/2} 0 ${-0.0525 + (0.0184+0.0525)/2}" rpy="0 0 0"/>
  276. <mass value="1.0" />
  277. <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
  278. </inertial>-->
  279. <xacro:inertial_cuboid_with_pose mass="0.5" x_length="0.075" y_length="0.14" z_length="0.045" >
  280. <origin xyz="0.036 0.0 0.0" rpy="0 0 0"/>
  281. </xacro:inertial_cuboid_with_pose>
  282. <visual>
  283. <geometry>
  284. <mesh filename="package://drz_telemax_description/meshes/arm_link_5.dae" scale="0.001 0.001 0.001"/>
  285. </geometry>
  286. </visual>
  287. <collision>
  288. <origin xyz="0.036 0.0 0.0" rpy="0 0 0"/>
  289. <geometry>
  290. <box size="0.075 0.14 0.045" />
  291. </geometry>
  292. </collision>
  293. <collision>
  294. <origin xyz="0.03 0.0 0.035" rpy="0 0 0"/>
  295. <geometry>
  296. <box size="0.045 0.045 0.045" />
  297. </geometry>
  298. </collision>
  299. </link>
  300. <!-- Gripper -->
  301. <joint name="gripper_joint" type="revolute">
  302. <origin xyz="0 0 0" rpy="0 0 0" />
  303. <axis xyz="0 0 1" />
  304. <limit lower="0" upper="0.2" velocity="0.02" effort="1000" />
  305. <parent link="arm_link_5" />
  306. <child link="gripper_servo_link" />
  307. </joint>
  308. <link name="gripper_servo_link">
  309. <xacro:inertial_cuboid_with_pose mass="0.01" x_length="0.05" y_length="0.05" z_length="0.05" >
  310. <origin xyz="0 0 0" rpy="0 0 0" />
  311. </xacro:inertial_cuboid_with_pose>
  312. <!-- <visual>
  313. <origin xyz="0 0.0 0.0" rpy="0.0 0.0 0.0" />
  314. <geometry>
  315. <cylinder length="0.01" radius="0.01" />
  316. </geometry>
  317. </visual>
  318. <collision>
  319. <origin xyz="0 0.0 0.0" rpy="0.0 0.0 0.0" />
  320. <geometry>
  321. <cylinder length="0.01" radius="0.01" />
  322. </geometry>
  323. </collision>-->
  324. </link>
  325. <xacro:telemax_gripper_finger parent="arm_link_5" prefix="left" mimic="gripper_joint">
  326. <origin xyz="0.035 0.039 0" rpy="0 0 0"/>
  327. </xacro:telemax_gripper_finger>
  328. <xacro:telemax_gripper_finger parent="arm_link_5" prefix="right" mimic="gripper_joint">
  329. <origin xyz="0.035 -0.039 0" rpy="${M_PI} 0 0"/>
  330. </xacro:telemax_gripper_finger>
  331. <!-- Virtual TCP link -->
  332. <joint name="gripper_tcp_joint" type="fixed">
  333. <origin xyz="0.234 0 0" rpy="0 0 0" />
  334. <axis xyz="0 0 1" />
  335. <parent link="arm_link_5" />
  336. <child link="gripper_tcp_link" />
  337. </joint>
  338. <link name="gripper_tcp_link">
  339. </link>
  340. <!-- Transmissions -->
  341. <xacro:joint_position_transmission name="arm_joint_0"/>
  342. <xacro:joint_position_transmission name="arm_joint_1"/>
  343. <xacro:joint_position_transmission name="arm_joint_2"/>
  344. <xacro:joint_position_transmission name="arm_joint_3"/>
  345. <xacro:joint_position_transmission name="arm_joint_4"/>
  346. <xacro:joint_position_transmission name="arm_joint_5"/>
  347. <xacro:joint_position_transmission name="gripper_joint"/>
  348. <!-- Gazebo plugins -->
  349. <xacro:telemax_6dof_manipulator_gazebo_plugins/>
  350. </xacro:macro>
  351. </robot>