3ebe2700b00340d09a1256d3b4a.../urdf/gazebo.xacro

223 lines
8.9 KiB
XML

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="bcr_bot">
<gazebo>
<static>false</static>
</gazebo>
<!-- .....................MULTI WHEEL DIFF DRIVE ................................... -->
<gazebo>
<plugin name="diff_drive" filename="libgazebo_ros_diff_drive.so">
<ros>
<namespace>$(arg robot_namespace)</namespace>
<remapping>cmd_vel:=cmd_vel</remapping>
<remapping>odom:=odom</remapping>
</ros>
<legacy_mode>false</legacy_mode>
<update_rate>50.0</update_rate>
<left_joint>middle_left_wheel_joint</left_joint>
<right_joint>middle_right_wheel_joint</right_joint>
<wheel_separation>${traction_track_width+traction_wheel_width-0.01}</wheel_separation>
<wheel_diameter>${2*traction_wheel_radius+0.01}</wheel_diameter>
<robot_base_frame>base_footprint</robot_base_frame>
<max_wheel_torque>${traction_max_wheel_torque}</max_wheel_torque>
<command_topic>cmd_vel</command_topic>
<odometry_topic>$(arg wheel_odom_topic)</odometry_topic>
<odometry_frame>odom</odometry_frame>
<publish_odom_tf>$(arg publish_wheel_odom_tf)</publish_odom_tf>
<publish_wheel_tf>true</publish_wheel_tf>
<publish_odom>true</publish_odom>
<max_wheel_acceleration>5.0</max_wheel_acceleration>
<!-- Odometry source, 0 for ENCODER, 1 for WORLD, defaults to WORLD -->
<xacro:if value="${odometry_source == 'world'}">
<odometry_source>1</odometry_source>
</xacro:if>
<xacro:if value="${odometry_source == 'encoder'}">
<odometry_source>0</odometry_source>
</xacro:if>
</plugin>
</gazebo>
<!--............................... IMU PLUGIN ..................................... -->
<gazebo reference="imu_frame">
<sensor name="imu" type="imu">
<always_on>true</always_on>
<update_rate>5</update_rate>
<plugin name="imu_plugin" filename="libgazebo_ros_imu_sensor.so">
<ros>
<namespace>$(arg robot_namespace)</namespace>
<remapping>~/out:=imu</remapping>
</ros>
</plugin>
</sensor>
</gazebo>
<!--............................... Ground truth PLUGIN .............................-->
<gazebo>
<plugin name="p3d_base_controller" filename="libgazebo_ros_p3d.so">
<ros>
<!-- Add namespace and remap the default topic -->
<namespace>$(arg robot_namespace)</namespace>
<remapping>odom:=p3d_ground_truth</remapping>
</ros>
<always_on>true</always_on>
<update_rate>30.0</update_rate>
<body_name>base_footprint</body_name>
<gaussian_noise>0.00</gaussian_noise>
<frame_name>$(arg ground_truth_frame)</frame_name>
</plugin>
</gazebo>
<!-- ........................... 2D LIDAR PLUGIN ................................... -->
<xacro:if value="$(arg two_d_lidar_enabled)">
<gazebo reference="two_d_lidar">
<gravity>true</gravity>
<sensor type="ray" name="two_d_lidar">
<pose>0 0 0 0 0 0</pose>
<visualize>false</visualize>
<update_rate>${two_d_lidar_update_rate}</update_rate>
<ray>
<scan>
<horizontal>
<samples>${two_d_lidar_sample_size}</samples>
<resolution>1</resolution>
<min_angle>${radians(two_d_lidar_min_angle)}</min_angle>
<max_angle>${radians(two_d_lidar_max_angle)}</max_angle>
</horizontal>
</scan>
<range>
<min>${two_d_lidar_min_range}</min>
<max>${two_d_lidar_max_range}</max>
<resolution>0.01</resolution>
</range>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.0</stddev>
</noise>
</ray>
<plugin name="gazebo_ros_laser" filename="libgazebo_ros_ray_sensor.so">
<ros>
<remapping>~/out:=$(arg robot_namespace)/scan</remapping>
</ros>
<output_type>sensor_msgs/LaserScan</output_type>
<frame_name>two_d_lidar</frame_name>
</plugin>
</sensor>
</gazebo>
</xacro:if>
<!-- ........................... CAMERA PLUGIN ................................... -->
<xacro:if value="$(arg camera_enabled)">
<gazebo reference="kinect_camera">
<sensor name="kinect_camera" type="depth">
<pose> 0 0 0 0 0 0 </pose>
<visualize>true</visualize>
<update_rate>30</update_rate>
<camera>
<horizontal_fov>1.089</horizontal_fov>
<image>
<format>R8G8B8</format>
<width>640</width>
<height>480</height>
</image>
<clip>
<near>0.05</near>
<far>8.0</far>
</clip>
</camera>
<plugin name="camera_controller" filename="libgazebo_ros_camera.so">
<ros>
<namespace>$(arg robot_namespace)</namespace>
</ros>
<frame_name>kinect_camera_optical</frame_name>
<min_depth>0.1</min_depth>
<max_depth>100</max_depth>
</plugin>
</sensor>
</gazebo>
</xacro:if>
<!-- ...........................STEREO CAMERA PLUGIN ................................... -->
<xacro:if value="$(arg stereo_camera_enabled)">
<gazebo reference="stereo_camera">
<sensor type="multicamera" name="stereo_camera">
<update_rate>10.0</update_rate>
<always_on>true</always_on>
<camera name="left">
<pose>0 0 0 0 0 0</pose>
<horizontal_fov>1.3962634</horizontal_fov>
<image>
<width>1024</width>
<height>1024</height>
<format>R8G8B8</format>
</image>
<clip>
<near>0.3</near>
<far>20</far>
</clip>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.0</stddev>
</noise>
<distortion>
<k1>0.0</k1>
<k2>0.0</k2>
<k3>0.0</k3>
<p1>0.0</p1>
<p2>0.0</p2>
<center>0.5 0.5</center>
</distortion>
</camera>
<camera name="right">
<pose>0 -0.12 0 0 0 0</pose>
<horizontal_fov>1.3962634</horizontal_fov>
<image>
<width>1024</width>
<height>1024</height>
<format>R8G8B8</format>
</image>
<clip>
<near>0.3</near>
<far>20</far>
</clip>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.0</stddev>
</noise>
<distortion>
<k1>0.0</k1>
<k2>0.0</k2>0
<k3>0.0</k3>
<p1>0.0</p1>
<p2>0.0</p2>
<center>0.5 0.5</center>
</distortion>
</camera>
<plugin name="stereo_camera_controller" filename="libgazebo_ros_camera.so">
<ros>
<namespace>$(arg robot_namespace)</namespace>
<argument>image_raw:=image_raw</argument>
<argument>camera_info:=camera_info</argument>
</ros>
<camera_name>stereo_camera</camera_name>
<frame_name>stereo_camera_optical</frame_name>
<hack_baseline>0.12</hack_baseline>
</plugin>
</sensor>
</gazebo>
</xacro:if>
</robot>