Re: Comparison between realsense D435 vs T265 vs T265+D435 dual setup

Posted by gian on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Comparison-between-realsense-D435-vs-T265-vs-T265-D435-dual-setup-tp6456p7008.html

Thank you very much Mathieu !
I used this Voxel plugin and indeed the obstacle is not cleared anymore !

{name: voxel_layer, type: "costmap_2d::VoxelLayer"}
voxel_layer:
origin_z: 0.0
z_resolution: 0.1
z_voxels: 10

but still there is the problem of detection : the robot detects the obstacle only if it is more than one  meter far !!!  
I put also negative  min_obstacle_height to take into account the distance of the camera from the base_link.
This is the complete costmap :

footprint: [[ 0.15,  0.15], [-0.15,  0.15], [-0.15, -0.15], [ 0.15, -0.15]]
footprint_padding: 0.0
inflation_layer:
  inflation_radius: 0.08 # 2xfootprint, it helps to keep the global planned path farther from obstacles
transform_tolerance: 2

obstacle_layer:
  obstacle_range: 2.5
  raytrace_range: 12 
  max_obstacle_height: 3
  track_unknown_space: true

voxel_layer:
  enabled: true
  origin_z: 0.0
  z_resolution: 0.1
  z_voxels: 10
  publish_voxel_map: true
  footprint_clearing_enabled: false

  observation_sources: point_cloud_sensorA point_cloud_sensorB

  point_cloud_sensorA: {
    sensor_frame: d400_link,
    data_type: PointCloud2,
    topic: /obstacles_cloud,
    expected_update_rate: 0.5,
    marking: true,
    clearing: true,
    min_obstacle_height: -0.7
  }

  point_cloud_sensorB: {
    sensor_frame: d400_link,
    data_type: PointCloud2,
    topic: /ground_cloud,
    expected_update_rate: 0.5,
    marking: false,
    clearing: true,
    min_obstacle_height: -1.0 # make sure the ground is not filtered
  }

 these are the Grid parameters in rtabmap :

 <param name="Grid/MaxObstacleHeight"    type="string" value="1" />
  <param name="Grid/NoiseFilteringRadius" type="string" value="0.0"/>
  <param name="Grid/NoiseFilteringMinNeighbors" type="string" value="5.0"/>
  <param name="Grid/FromDepth"            type="bool" value="true" />
  <!--param name="Grid/DepthDecimation"      type="string" value="4"/-->
  <param name="Grid/3D"                   type="bool" value="true" />
  <param name="Grid/RayTracing"           type="bool" value="true" />
  <param name="Grid/NormalsSegmentation"  type="string" value="true" />
  <param name="Grid/MaxGroundHeight"      type="string" value="0.05" />
  <param name="Grid/MaxGroundAngle"      type="string" value="10" />
  <param name="Grid/RangeMax"      type="string" value="1" />
  <param name="Grid/FootprintHeight" type="string" value="0.1"/>     
  <param name="Grid/FootprintLength" type="string" value="0.1"/>
  <param name="Grid/FootprintWidh" type="string" value="0.1"/>     
<param name="Grid/MapFrameProjection" type="bool" value="false"/>


and these the obstacle layer :

<node pkg="nodelet" type="nodelet" name="nodelet_manager" args="manager" />
  <node pkg="nodelet" type="nodelet" name="points_xyz_planner" args="load rtabmap_ros/point_cloud_xyz nodelet_manager">
      <remap from="depth/image"            to="/d400/aligned_depth_to_color/image_raw"/>
      <remap from="depth/camera_info"      to="/d400/color/camera_info"/>
      <remap from="cloud"                  to="cloudXYZ" />
      <param name="decimation" type="int" value="4"/>
      <param name="max_depth"  type="double" value="3.0"/>
      <param name="voxel_size" type="double" value="0.05"/>
     <param name="approx_sync" type="bool" value="false"/>
  </node>


   <node pkg="nodelet" type="nodelet" name="obstacles_detection" args="load rtabmap_ros/obstacles_detection nodelet_manager">
     <remap from="cloud" to="cloudXYZ"/>
      <remap from="obstacles" to="/obstacles_cloud"/>
      <remap from="ground"    to="/ground_cloud"/>

      <param name="frame_id"             type="string" value="base_link"/>
      <param name="map_frame_id"         type="string" value="map"/>
      <param name="wait_for_transform"   type="bool" value="true"/>
  <param name="Grid/ClusterRadius"             type="string" value="0.2"/>
  <param name="Grid/GroundIsObstacle"          type="string" value="false"/>



Do you have any advice ? Sorry for one more post off topic,this will be the last one off topic.

PS regarding VIO , I didn't try VINS fusion , instead with d435i I tried https://github.com/introlab/rtabmap_ros/blob/master/launch/tests/sensor_fusion.launch , with robot localization inside, and it works for me at very low speed of the robot
So I would ask you, in your experience , how would be possible to make the odometry more resilient to speed of the robot  ( with some calibration of parameters or the camera/imu in robot localization  or adding maybe Vins Fusion ...I try to guess !)


Thanks a lot for all !
cheers
gian