Setup RTAB map on Volksbot Rt3

classic Classic list List threaded Threaded
37 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator
if you have only "scan" topic, just use:
observation_sources: laser_scan_sensor
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Thank you,

when I run 2D nav goal, the robot never get to the goal, it run about 2-3 meter and then this error happen,, Do you know about this?
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hi,

I understand why I have this error, i use both kinnect_camera and SICK laser_scanner. And I saw the kinect have also fake_laser, therefore, when I disconnect with laser_scanner, every_thing work fine. Could you tell me how to use them both?
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator
Hi,

To use both for the obstacle layer of the costmaps, add another observation source (another LaserScan type) and change the topic name. Make sure they are not published under the same topic name.

For rtabmap, you can only use one scan topic, I recommend to use scan topic of SICK.

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hi Mathieu,

Thank you very much for your advise, now I want the robot move automaticaly between landmark like this video



I can run find_object_2d and navigation_stack separately, but i don't know how to make them work together.  Could you help me?

Could you tell me the idea behind this video, the robot see the landmark, (I mean the book you learned with find object 2d), then it will turn left to find the next landmark, am I correct?.

Best Regard!
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator
Hi,

in that video, the robot was teleoperated. find_object would publish TF of the detected objects in camera frame. The TF tree shown in RVIZ would look like this:
   /map
    |
    v
  /odom
    |
    v
/base_footprint
    |
    v
 /base_link
    |
    v
 /camera_link
    |
    v
/camera_rgb_optical
    |
    v
  /object_1
Note that transforms between /camera_rgb_optical frame and the object frames are published only when the objects are detected by Find-Object. You can subscribe to published object topic from find-object to know when objects are detected.

With TF, you can then get the pose of the object in /map frame, so you can publish a goal in /map frame to move_base so that the robot navigates autonomously to the object.

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hi Mahieu,

Thanks for your help, I have question, how the robot(I mean the kinect) know it's position in the map? And the coordinate (x,y ,z) of the robot base on which origin? I mean where is the original point(0, 0, 0) in the map?

Best Regards!
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator

Hi,

Assuming the base fixed frame on the robot is called base_link, then its pose in the map is transform /map -> /base_link. To know where is the camera in the map: /map -> /camera_link.

The original point (0,0,0) of the map is generally the initial position of odometry (where the robot started

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hi,  if in Kidnapped situation, for example I turn of the robot and then put it in another position. When loop closures detected, the robot will recover all the old map. Ats that times, where is the original point(0, 0, 0) ? This is the original point in old map or new map?     Thanks you.
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator
Hi,

For simplification, lets take the case when "RGBD/OptimizeFromGraphEnd=false" (default). If the maps are merged, the origin will be the original pose of the first map. If the maps are not merged, the origin will be the first pose of the map in which the robot is localized. Warning: If memory management is running and oldest part of the map is transferred in long-term memory, the origin is undefined as it will be dependent of the oldest node of the map still in working memory.

If "RGBD/OptimizeFromGraphEnd=true", the origin of the map is undefined, as it will change overtime accordingly to current odometry pose. In this case and when memory management is running, it is better to do planning in topological map (rtabmap/goal_node) instead of the metric map (move_base_simple/goal).

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hello Mathieu,

Got it, thank you very much.

But the line RGBD/OptimizeFromGraphEnd=true I not see In file rtabmap.launch" so I add this line
: param name="RGBD/OptimizeFromGraphEnd" type="string" value="true"
to rtabmap.launch file because I use this file for mapping, so I add this line fllow your tutotrial. Then I run navigation.launch to start move_base, finally in Rviz I do planning in totological map, (rtabmap/goal).


But then when I use 2D navigation, the robot is not moving, it only move when I use move_base_simple/goal. Could you explain it?
Thank you.


Best Regard.

Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator
Hi,

Is there errors/warnings on rtabmap terminal when you send it a goal? Also, there is no map shown in RVIZ, is rtabmap started and localized?

cheers
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hi Mathieu,

Thanks for your help, I want to ask you this last question, I think I nearly get the goal,

1/ In the past, I run seperate terminal like first I run volksbot bring up, second rgbd_mapping.launch, and finally navigation.launch(inside is move_base node).
But now I combine them together in one file, so I take your az3_nav.launch in rtabmap and change the parameter to my robot. You can see the flies here:  az3_nav.launch

But when I run this file, I see the map => odom_combined and base_footprint =>base_top...., not in one tf_tree, you can see in picture 1 below:

Then I add static_tf : <node pkg="tf" type="static_transform_publisher" name="odom"
   args="0 0 0 0 0 0 odom_combined base_footprint 100" /   to link odom_combined and base_footprint, in picture 2:

Then the program work, however, the robot don't know it's position in the map, I try to teleoperate robot but the position on the map not update, in figure 4 you can see it happen.

I also try 2D navigation button, and robot not move. then I run rqt_graph, and I saw that the node move_base not link with cmd_vel, as you can see in picture 3.

2/ I want to ask that, is the problem is odom_combined? , because when I run volksbot_bringup and rgbd_mapping.launch, I see that odometry update continueously, and that is kinect odometry, so what is odom_combined, is it kinect_odom+volksbot_odom= odom_combined?

And how to fix this problem, because after I use static transform from odom_combined to basefoot_print, the proram still display <b>Timed out waiting for transform from base_footprint to odom 

picture1/


picture2/



picture3/


picture4/


Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator
Hi,

Never use a static transform for odom->base_footprint. If it is not here, it is because your odometry node is not working. For base_footprint -> base_top, it is how you setup the transform of the robot (e.g., urdf or some static transform published not started). For map->odom missing, it is because rtabmap may not be working (waiting for some topics or it is not localized yet).

odom_combined is the name used by default by robot_localization node, which combines odometries together. This node is not in the launch file you linked, maybe it was started before. Azimut related launch file doesn't use robot_localization, it subscribes directly to wheel odometry (kinect odometry is not used).

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hi Mathieu

I can explain you this way, before I told you the robot already run, that tine I use the odometry from the kinect, and in tf tree I see transform odom--> base_footprint. And a map create base on kinect odometry.

But I reliaze that, so I remap in rtabmap.launch  <remap from="odom" to="/odom"/, so I remap to use volksbot odometry instead of kinect_odometry, so I have map  --> odom_combined  and base_footprint -->base_top. But they are stay seperate, not in the same tree.



And in rviz the map and the robot is seperate like this.



Best Regards.
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

matlabbe
Administrator
Is /odom_combined -> /base_footprint TF published by the node publishing the /odom topic?
Reply | Threaded
Open this post in threaded view
|

Re: Setup RTAB map on Volksbot Rt3

thanhnguyen
Hi Mathieu,
I have two tf_tree:
1/
/map --> odom_combined published by broacaster rtabmap/rtabmap

while:
2/
/odom-->/base_footprint published by broadcaster rtabmap/rgb_odometry

and what I want to do is make a transform map -->odom_combined-->base_footprint. Because the odom topic is the kinect_odom, not the robot odom. I believe the odom_combined is odom form my volksbot.

Thanks
12