map / navigate on a different axis / plane
Hello everyone,
first of all I would like to thank you for such a great forum, it has helped me solve many issues in the past!
I have questions that could be caused by my luck of understanding how the mapping is performed. What i am trying to do is map a wall as it was the ground.
I have a wall crawler and I would like to add the ability to perform autonomous navigation - on the wall - with it.
Crawler setup: chassis with 4 wheels, depth camera and tracking module mounted in front ( Intel realsense d435i, and realsense t265 ) ROS Version: Noetic running on ubuntu 20.04 Packages: depthimage_to_laserscan, gmapping and move_base - basic stuff.
When testing the crawler on the floor mapping and navigation work fine, but when trying to "map the wall" ( effectively rotate the robot by 90 degrees along x axis ), the occupancy map is filled with black cells, as i am guessing it "sees" the wall but identifies it as obstacle.
Other things I tried:
- using rtabmap_ros as well but I get pretty similar results
- adding a world frame in between the map and base of the robot and rotating it by 90 degusing a static tf from map to world ( map -> 90 world -> base )
Can this be achieved using gmapping / rtab or any other package? If so, could you please provide any pointers on what changes I have to make in order to achieve this? If not, can you suggest an alternative approach to tackle that?
EDIT1:
Default setup ( map -> t265 odom -> base ), cameras facing the ceiling and fixed frame in RVIZ set to map
Here is the full tf tree of that setup
Here is the 90 map rotation setup (world -> 90 map -> t265 odom -> base ), cameras facing the ceiling and fixed frame in RVIZ set to world.
Here is the full tf tree of that setup
Thank you in advance for your time and effort you might put in trying to assist me.
Best,
Mike
Seems that you got a TF initialisation that cause this effect. Your frame "map" shouldn't be rotated. On rtabmap, watch out the parameters that define the height of ground and obstacle, it directly impact the map generation.
Hello and thanks for the reply, I have checked the values, but these - as i understand - are good if you have an uneven ground. The only reason i tried to rotate the world frame IRT the map by 90, is because i am trying to "map" the wall, not the floor ( or ground ).
I think you should do
90 world -> map -> odom -> base
, so that all mapping stuff will work in standard z->up.rosrun tf static_transform_publisher 0 0 0 0 -1.57079632679 0 world map 100
oh for some reason i didnt get a notification for your comment! will try this next time i get the chance and post results!
@matlabbe I did try rotating the map WRT the world, however didn't get any different results :-/ Please see updated post!