camera360.urdf.xacro 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?xml version="1.0"?>
  2. <robot xmlns:xacro="http://www.ros.org/wiki/xacro">
  3. <xacro:property name="M_PI" value="3.1415926535897931" />
  4. <xacro:property name="default_collision_radius" value="0.025" />
  5. <xacro:property name="visual_radius" value="0.02" />
  6. <xacro:property name="cable_collision_length" value="0.05" />
  7. <xacro:macro name="camera360" params="name right_cam_name left_cam_name parent collision_radius:=${default_collision_radius} *origin *calibration dist_between_cameras ros_topic update_rate res_x res_y image_format fov">
  8. <joint name="${name}_center_joint" type="fixed">
  9. <xacro:insert_block name="origin" />
  10. <parent link="${parent}"/>
  11. <child link="${name}_center_link"/>
  12. </joint>
  13. <link name="${name}_center_link">
  14. <!-- Sphere body -->
  15. <visual>
  16. <origin xyz="0 0 0" rpy="0 0 0"/>
  17. <geometry>
  18. <sphere radius="${visual_radius}"/>
  19. </geometry>
  20. <material name="Grey">
  21. <color rgba="0.5 0.5 0.5 1"/>
  22. </material>
  23. </visual>
  24. <collision>
  25. <origin xyz="0 0 0" rpy="0 0 0"/>
  26. <geometry>
  27. <sphere radius="${collision_radius}"/>
  28. </geometry>
  29. <material name="Grey">
  30. <color rgba="0.5 0.5 0.5 1"/>
  31. </material>
  32. </collision>
  33. <!-- Cable -->
  34. <!-- <visual>
  35. <origin xyz="${visual_radius + cable_collision_length/2} 0 0" rpy="0 0 0"/>
  36. <geometry>
  37. <box size="${cable_collision_length} 0.03 0.03"/>
  38. </geometry>
  39. <material name="Grey">
  40. <color rgba="0.5 0.5 0.5 1"/>
  41. </material>
  42. </visual>-->
  43. <collision>
  44. <origin xyz="${0.011 + cable_collision_length/2} 0 0" rpy="0 0 0"/>
  45. <geometry>
  46. <box size="${cable_collision_length} 0.03 0.03"/>
  47. </geometry>
  48. <material name="Grey">
  49. <color rgba="0.5 0.5 0.5 1"/>
  50. </material>
  51. </collision>
  52. </link>
  53. <joint name="${name}_${right_cam_name}_joint" type="fixed">
  54. <origin xyz="0 ${dist_between_cameras/2} 0" rpy="${M_PI*0.5} 0 ${-M_PI*0.5}"/>
  55. <parent link="${name}_center_link"/>
  56. <child link="${name}_${right_cam_name}_link"/>
  57. </joint>
  58. <link name="${name}_${right_cam_name}_link"/>
  59. <joint name="${name}_${right_cam_name}_optical_joint" type="fixed">
  60. <origin xyz="0 0 0" rpy="${-M_PI/2} 0.0 ${-M_PI/2}" />
  61. <parent link="${name}_${right_cam_name}_link" />
  62. <child link="${name}_${right_cam_name}_optical_frame"/>
  63. </joint>
  64. <link name="${name}_${right_cam_name}_optical_frame"/>
  65. <gazebo reference="${name}_${right_cam_name}_link">
  66. <sensor type="wideanglecamera" name="${name}_${right_cam_name}_camera_sensor">
  67. <update_rate>${update_rate}</update_rate>
  68. <camera>
  69. <!--<horizontal_fov>${hfov * M_PI/180.0}</horizontal_fov>-->
  70. <horizontal_fov>${fov}</horizontal_fov>
  71. <image>
  72. <format>${image_format}</format>
  73. <width>${res_x}</width>
  74. <height>${res_y}</height>
  75. </image>
  76. <clip>
  77. <near>0.01</near>
  78. <far>100</far>
  79. </clip>
  80. <lens>
  81. <!--
  82. Crashes gazebo on some machines, so revert for now
  83. <type>custom</type>
  84. <custom_function>
  85. <c1>2</c1>
  86. <c2>2</c2>
  87. <f>1.0</f>
  88. <fun>sin</fun>
  89. </custom_function>
  90. <cutoff_angle>${fov/2}</cutoff_angle>
  91. <env_texture_size>1024</env_texture_size>
  92. -->
  93. <type>stereographic</type>
  94. <scale_to_hfov>true</scale_to_hfov>
  95. <cutoff_angle>1.5707</cutoff_angle>
  96. <env_texture_size>512</env_texture_size>
  97. </lens>
  98. </camera>
  99. <plugin name="${name}_${right_cam_name}_camera_controller" filename="libgazebo_ros_camera.so">
  100. <cameraName>${name}/${right_cam_name}</cameraName>
  101. <imageTopicName>${ros_topic}</imageTopicName>
  102. <cameraInfoTopicName>not_used</cameraInfoTopicName>
  103. <frameName>${name}_${right_cam_name}_optical_frame</frameName>
  104. </plugin>
  105. </sensor>
  106. </gazebo>
  107. <joint name="${name}_${left_cam_name}_optical_joint" type="fixed">
  108. <xacro:insert_block name="calibration" />
  109. <parent link="${name}_${right_cam_name}_optical_frame"/>
  110. <child link="${name}_${left_cam_name}_optical_frame"/>
  111. </joint>
  112. <link name="${name}_${left_cam_name}_optical_frame"/>
  113. <joint name="${name}_${left_cam_name}_joint" type="fixed">
  114. <origin xyz="0 0 0" rpy="0 ${-M_PI/2} ${M_PI/2}" />
  115. <parent link="${name}_${left_cam_name}_optical_frame"/>
  116. <child link="${name}_${left_cam_name}_link" />
  117. </joint>
  118. <link name="${name}_${left_cam_name}_link"/>
  119. <gazebo reference="${name}_${left_cam_name}_link">
  120. <sensor type="wideanglecamera" name="${name}_${left_cam_name}_camera_sensor">
  121. <update_rate>${update_rate}</update_rate>
  122. <camera>
  123. <!--<horizontal_fov>${hfov * M_PI/180.0}</horizontal_fov>-->
  124. <horizontal_fov>${fov}</horizontal_fov>
  125. <image>
  126. <format>${image_format}</format>
  127. <width>${res_x}</width>
  128. <height>${res_y}</height>
  129. </image>
  130. <clip>
  131. <near>0.01</near>
  132. <far>100</far>
  133. </clip>
  134. <lens>
  135. <!--
  136. Crashes gazebo on some machines, so revert for now
  137. <type>custom</type>
  138. <custom_function>
  139. <c1>2</c1>
  140. <c2>2</c2>
  141. <f>1.0</f>
  142. <fun>sin</fun>
  143. </custom_function>
  144. <cutoff_angle>${fov/2}</cutoff_angle>
  145. <env_texture_size>1024</env_texture_size>
  146. -->
  147. <type>stereographic</type>
  148. <scale_to_hfov>true</scale_to_hfov>
  149. <cutoff_angle>1.5707</cutoff_angle>
  150. <env_texture_size>512</env_texture_size>
  151. </lens>
  152. </camera>
  153. <plugin name="${name}_${left_cam_name}_camera_controller" filename="libgazebo_ros_camera.so">
  154. <cameraName>${name}/${left_cam_name}</cameraName>
  155. <imageTopicName>${ros_topic}</imageTopicName>
  156. <cameraInfoTopicName>not_used</cameraInfoTopicName>
  157. <frameName>${name}_${left_cam_name}_optical_frame</frameName>
  158. </plugin>
  159. </sensor>
  160. </gazebo>
  161. </xacro:macro>
  162. </robot>