Ouster Lidar settings, floor detection

Dear MyBot team,

We have an Ouster lidar on our clearpath Husky, installed on the front of the plate. Unfortunately, when driving the Husky in not so high grass, said grass is detected as an obstacle, which is quite problematic as you can imagine.
Can’t you help us change the obstacle avoidance settings linked to the lidar so anything on the floor and let’s say 20cm upwards is not considered as an obstacle? Or do you have a better idea on how to solve that problem of ours?

Dear @HuskyOwner,

I think the fix is relative simple. I am not sure which Husky you have but if your are using ROS1 Navigation. You can configure the costmap_common_params.yaml to disculde anything below a certain height limit. Here is an example:

origin_z: 0.15
z_resolution: 1
z_voxels: 3

resolution: 0.5

obstacle_range: 6.0
raytrace_range: 6.0

publish_voxel_map: true
transform_tolerance: 5
meter_scoring: true

always_send_full_costmap: false

footprint: [[-0.5, -0.33], [-0.5, 0.33], [0.5, 0.33], [0.5, -0.33]]
footprint_padding: 0.03

  - { name: obstacles_layer, type: "costmap_2d::ObstacleLayer" }
  # - {name: dynamic_obstacle_layer, type: "dynamic_obstacle_layer::DynamicLayer"} # Uncomment to apply dynamic_obstacle_layer
  - { name: inflater_layer,  type: "costmap_2d::InflationLayer"}

  observation_sources: scan
  track_unknown_space: true
      sensor_frame: os_sensor,
      data_type: PointCloud2,
      topic: /ouster/points,
      marking: true,
      clearing: true,
      min_obstacle_height: 0.1,
      max_obstacle_height: 1.0,
      obstacle_range: 2.5, #if beyond this threshold, then will not mark as obstacle
      raytrace_range: 5.0 #5.0 Lower this value to detect nearer obstacles with better accuracy

    enabled: false
    map_tolerance: 0.2
    footprint_radius: 0.5
    range: 2.0

    enabled: true
    cost_scaling_factor: 6.0 #added in by John
    inflation_radius: 0.8 #0.45 #Minimum value: 0.379

  enabled: true
  map_topic: "/map"

Otherwise, if you want to do it in the sensor information directly, you could have a look at the ouster github for a configuration or you could simply remove it computationally e.g. point cloud filter, which you can find plenty of in the internet, but I would recommend the cost map solution as it is more intuitive and easy to apply!

Thank you so much! We weren’t sure of what parameter to change, but this looks clear and simple!

1 Like

Dear @Sohail,
We are still having problems with grass being detected as an obstacle, even when we change the min_obstacle_height to 0.4 unfortunately.
But we have been seeing that your most recent Husky models have the Lidar quite high, on top of a structure. Is there a reason for that? Have you too encountered problems with the lidar and grass?

Dear @HuskyOwner,

The change of design of putting the lidar high was mainly to reduce interference on the GPS module and increase vertical detection, hence becoming our standard. (If required you can mount it into other locations to suit your use-case.)

Please could you post a picture of the grass on which the Husky is driving through as we ourselves do not have an issue navigating through it. Usually by changing the minimum obstacle height the issue is solved for us. But from your case, it seems that these are some type of long swamp-type grass.

Additionally, I would advise shrinking the local planners viewing distance so that the far-off grass is not taken into consideration when navigating. This would be in the base_local_planner_params_teb.yaml called max_global_plan_lookahead_dist. A similar parameter would be available if you are using the one from the Husky i.e. dwa planner.

Dear @Sohail,
Thank you for your answer. We have too had interference problems and therefore we moved the GPS away, but still have the Lidar on the plate, in the front, middle.
Here are pictures of the grass problem we’ve had:

The grass is short, and we tested both point cloud topics as you can see in Rviz.

We will test the shrinking of the local planners viewing distance soon and keep you updated.

Missing pictures.

Hi @HuskyOwner,

Instead of the point cloud for navigation, you can convert a range of it into a Laserscan via this package, I think this would solve your issue.