transform LaserScan to /world_frame
Hi all,
I'm trying to transform a LaserScan(already transformed to PCL::PointCloud) from it's frame to the /world frame.
What I'm doing right now is accumulate the pointcloud in the /world frame, while my robot moves(the information of the egomotion, gives the position of the robot in the world and it's orientation). I get the orientation using an imu and the position through wheel odometry.
The transformation(or pointcloud accumulation) I get between the /laser frame and the /world frame, is working correctly for the cartesian coordinates, however when the robot suffers any rotation(pitch and roll),due to any inclination of the ground,the representation of the pointcloud, is not beeing represented on the /world frame, it's representation rotates just like the robot(and was expected that the points would be right over the world).
I have my laser pointing to the ground, and when the robot is moving in plane ground, the reconstruction is exactly as it is in reality, my problem is when the robot start curving(it has suspension).
(The axes you see in the image is from the laser, the red grid is the world)
my tf tree:
/world->/base_footprint-> ... -> /laser_frame
I hope I could make myself clear, it's not easy to explain. I dont know what I'm doing wrong, if anyone could help me I would appreciate. :D
p.s. Sorry for so much text.
Do you convert the cloud to the world frame before or after you accumulate it?
before the accumulation
So your scanner is producing LaserScan messages in the laser_frame TF frame. Did you try visualizing the LaserScan directly in RViz, before accumulation + transformation to a point cloud? If the raw scan looks right, you can rule out problems with the IMU.
If I visualize the Laserscan directly on rviz, the representation is similar.. i dont know what i'm doing wrong
That's strange. Are you sure you are only visualizing the last scan? What exactly is wrong? Because when the robot tilts, the laser scan of course also records a tilted line. Could you post another picture or video?
For example, when the car is curving to the right, since it has suspension, it will roll as shown in the picture, however, the road was plane and I was expecting that the pointcloud accumulation would "draw" the road on the red grid (/world).
This might be a bit off track but what do you mean by "accumulate" the point cloud?