drz_telemax_navigation_module.urdf.xacro 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?xml version="1.0"?>
  2. <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="navigation_module">
  3. <xacro:include filename="$(find drz_telemax_description)/urdf/materials.urdf.xacro"/>
  4. <xacro:property name="M_PI" value="3.1415926535897931" />
  5. <xacro:include filename="$(find hector_components_description)/urdf/vlp16_mount.urdf.xacro.xml"/>
  6. <xacro:include filename="$(find hector_sensors_description)/urdf/realsense_d435_camera.urdf.xacro"/>
  7. <xacro:include filename="$(find hector_sensors_description)/urdf/camera360.urdf.xacro"/>
  8. <xacro:property name="navigation_module_length" value="0.316"/>
  9. <xacro:property name="navigation_module_width" value="0.225"/>
  10. <xacro:property name="navigation_module_height" value="0.0062"/>
  11. <xacro:property name="navigation_module_cage_height" value="0.319"/>
  12. <xacro:property name="navigation_module_cage_width" value="0.225"/>
  13. <xacro:property name="alu_profile_side_length" value="0.02"/>
  14. <xacro:property name="alu_profile_padding" value="0.0"/>
  15. <xacro:property name="navigation_module_cage_x" value="${-0.14}"/>
  16. <xacro:property name="navigation_module_cage_y" value="${navigation_module_cage_width/2 - alu_profile_side_length/2}"/>
  17. <xacro:property name="navigation_module_camera360_mount_length" value="0.045"/>
  18. <xacro:macro name="navigation_module" params="parent name scaling *origin">
  19. <joint name="${name}_joint_fixed" type="fixed">
  20. <xacro:insert_block name="origin"/>
  21. <parent link="${parent}"/>
  22. <child link="${name}_link"/>
  23. </joint>
  24. <link name="${name}_link">
  25. <!-- Plate -->
  26. <visual>
  27. <origin xyz="0 0 0" rpy="0 0 0"/>
  28. <geometry>
  29. <box size="${navigation_module_length} ${navigation_module_width} ${navigation_module_height}"/>
  30. </geometry>
  31. <material name="Gray"/>
  32. </visual>
  33. <collision>
  34. <origin xyz="0 0 0" rpy="0 0 0"/>
  35. <geometry>
  36. <box size="${navigation_module_length} ${navigation_module_width} ${navigation_module_height}"/>
  37. </geometry>
  38. <material name="Gray"/>
  39. </collision>
  40. <!-- Protection Vertical Profiles -->
  41. <visual>
  42. <origin xyz="${navigation_module_cage_x} ${navigation_module_cage_y} ${navigation_module_height/2 + navigation_module_cage_height/2}" rpy="0 0 0"/>
  43. <geometry>
  44. <box size="${alu_profile_side_length} ${alu_profile_side_length} ${navigation_module_cage_height}"/>
  45. </geometry>
  46. <material name="Gray"/>
  47. </visual>
  48. <visual>
  49. <origin xyz="${navigation_module_cage_x} ${-1 * navigation_module_cage_y} ${navigation_module_height/2 + navigation_module_cage_height/2}" rpy="0 0 0"/>
  50. <geometry>
  51. <box size="${alu_profile_side_length} ${alu_profile_side_length} ${navigation_module_cage_height}"/>
  52. </geometry>
  53. <material name="Gray"/>
  54. </visual>
  55. <collision>
  56. <origin xyz="${navigation_module_cage_x} ${navigation_module_cage_y} ${navigation_module_height/2 + navigation_module_cage_height/2}" rpy="0 0 0"/>
  57. <geometry>
  58. <box size="${alu_profile_side_length + alu_profile_padding} ${alu_profile_side_length + alu_profile_padding} ${navigation_module_cage_height}"/>
  59. </geometry>
  60. <material name="Gray"/>
  61. </collision>
  62. <collision>
  63. <origin xyz="${navigation_module_cage_x} ${-1 * navigation_module_cage_y} ${navigation_module_height/2 + navigation_module_cage_height/2}" rpy="0 0 0"/>
  64. <geometry>
  65. <box size="${alu_profile_side_length + alu_profile_padding} ${alu_profile_side_length + alu_profile_padding} ${navigation_module_cage_height}"/>
  66. </geometry>
  67. <material name="Gray"/>
  68. </collision>
  69. <!-- Horizontal Profile -->
  70. <visual>
  71. <origin xyz="${navigation_module_cage_x} 0 ${navigation_module_height/2 + navigation_module_cage_height - alu_profile_side_length/2}" rpy="0 0 0"/>
  72. <geometry>
  73. <box size="${alu_profile_side_length} ${navigation_module_cage_width} ${alu_profile_side_length}"/>
  74. </geometry>
  75. <material name="Gray"/>
  76. </visual>
  77. <collision>
  78. <origin xyz="${navigation_module_cage_x} 0 ${navigation_module_height/2 + navigation_module_cage_height - alu_profile_side_length/2}" rpy="0 0 0"/>
  79. <geometry>
  80. <box size="${alu_profile_side_length} ${navigation_module_cage_width} ${alu_profile_side_length + alu_profile_padding}"/>
  81. </geometry>
  82. <material name="Gray"/>
  83. </collision>
  84. <!-- Camera360 alu mount -->
  85. <visual>
  86. <origin xyz="${navigation_module_cage_x} 0 ${navigation_module_height/2 + navigation_module_cage_height + navigation_module_camera360_mount_length/2}" rpy="0 0 0"/>
  87. <geometry>
  88. <box size="${alu_profile_side_length} ${alu_profile_side_length} ${navigation_module_camera360_mount_length} "/>
  89. </geometry>
  90. <material name="Gray"/>
  91. </visual>
  92. <collision>
  93. <origin xyz="${navigation_module_cage_x} 0 ${navigation_module_height/2 + navigation_module_cage_height + navigation_module_camera360_mount_length/2}" rpy="0 0 0"/>
  94. <geometry>
  95. <box size="${alu_profile_side_length} ${alu_profile_side_length} ${navigation_module_camera360_mount_length} "/>
  96. </geometry>
  97. <material name="Gray"/>
  98. </collision>
  99. </link>
  100. <gazebo reference="${name}_link">
  101. <material>Gazebo/Grey</material>
  102. </gazebo>
  103. <!-- Realsense D435 -->
  104. <xacro:realsense_d435_camera_with_mount parent="${name}_link" name="realsense_d435_back">
  105. <origin xyz="${navigation_module_cage_x - alu_profile_side_length/2 - realsense_d435_depth + realsense_d435_mount_hole_to_front} 0 ${navigation_module_height/2 + navigation_module_cage_height - alu_profile_side_length/2 - realsense_d435_height/2.0}" rpy="0 0 ${M_PI}"/>
  106. </xacro:realsense_d435_camera_with_mount>
  107. <!-- Spinning VLP16 -->
  108. <xacro:spinning_sensor_mount_macro parent="${name}_link" name="spin_lidar" scaling="0.001">
  109. <origin xyz="${navigation_module_cage_x + 0.04} 0 0.2154" rpy="0.0 0.0 0.0"/>
  110. </xacro:spinning_sensor_mount_macro>
  111. <!-- Insta360 camera -->
  112. <xacro:camera360 name="camera360" right_cam_name="right" left_cam_name="left" parent="${name}_link" collision_radius="0.04" dist_between_cameras="-0.03850784" ros_topic="image_raw" update_rate="10" res_x="1504" res_y="1504" image_format="R8G8B8" fov="3.14">
  113. <origin xyz="${navigation_module_cage_x} 0 ${navigation_module_height/2 + navigation_module_cage_height + navigation_module_camera360_mount_length + visual_radius} " rpy="0 0 1.57"/> <!-- insta #3 -->
  114. <origin xyz="0.00009742 0.00061696 -0.03850784" rpy="3.1373499 -0.0021358 -3.1279404"/> <!-- cam to cam transform (calibration by kalibr) -->
  115. </xacro:camera360>
  116. </xacro:macro>
  117. </robot>