Laser returns from objects not in the laser plane
I am using lidar simulation in Gazebo with a Husky model. I have placed the lidar sensors above the body of the husky. I can drive the robot around and see returns off obstacles placed in the gazebo world. However, I get erroneous returns in the laser scan that are consistent with the X and Y dimensions of the collision block for the body of the robot, even though the lidar is at 0.35m and the top of the husky (Z location) is no more than 0.25m.
I am wondering if anyone has run across this and has a solution before I dig into the source for the laser scan.
My environment:
- Ubuntu 14.04 LTS 64-bit running in a Vmware virtual machine
- ROS Indigo
- Gazebo 2.2.3 (the one that was automatically installed with ROS)
- The husky models and simulations are based on the tutorials on the ClearPath website.
Some images of RVIZ and Gazebo output here: https://imgur.com/a/J3eMi
- husky1.png shows the nominal behavior (two side-facing lidars dectect a few obstacles placed in the world). The lidar sensors are represented by the two cylinders above the body of the husky.
- husky2 and 3 were taken after adding some decay to the lidar scans to show the the bad returns around the robot as I manually drive it forward. The bad returns define a box that is consistent with the x and y dimensions of the collision box for the robot body, even though the lidar is in a plane above the robot body.
- husky4 shows that the lidar returns are in a plane well above the body of the husky.
- husky5 is the gazebo client view with collision boxes turned on. You can see that the collision box for the body does not intersect with the lidar sensors or their collision boxes.
Some things I have found out:
- The erroneous returns seem to occur during acceleration and deceleration, when the husky tips slightly. I can also get them to appear consistently if the husky is leaning against something, although in the latter case, the husky is sliding ever so slowly down the obstacle, so it may be related to motion and not incline. I think it more likely has to do with inclination because I also see the returns when I manage to tip the robot over.
- if I remove the collision box for the body, I start getting bad returns off the wheels instead.
- if I make the minimum range of the lidar about 1m (much larger than the husky), the phantom returns go away. You would expect this, but I need the closer returns for my application.
- the returns are not 100% bad. If you plot the laser scan data, they are an apparently random mixture of bad returns off the body and "correct" returns off the obstacles.
Could you turn on visualization of the lasers in Gazebo, and post a picture? The hokuyo model has an example of how to turn on laser visualization.