How to disable visual odometry and use wheel odometry

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

How to disable visual odometry and use wheel odometry

kolohe113
Hi! I followed the turtorial online to use wheel odometry+ lidar + Astra. However when I tried to set visual odometry to false, I get the following errors:
[ WARN] [1529511782.921630208]: Messages of type 1 arrived out of order (will print only once)
[ WARN] [1529511782.921790912]: Messages of type 3 arrived out of order (will print only once)
[ WARN] [1529511782.922869305]: Messages of type 1 arrived out of order (will print only once)
[ WARN] [1529511782.923065508]: Messages of type 3 arrived out of order (will print only once)
[ WARN] [1529511787.297097675]: /rtabmap/rtabmapviz: Did not receive data since 5 seconds! Make sure the input topics are published ("$ rostopic hz my_topic") and the timestamps in their header are set. If topics are coming from different computers, make sure the clocks of the computers are synchronized ("ntpdate"). If topics are not published at the same rate, you could increase "queue_size" parameter (current=10).
/rtabmap/rtabmapviz subscribed to (approx sync):
   /rtabmap/odom,
   /camera/rgb/image_raw,
   /camera/depth_registered/image_raw,
   /camera/rgb/camera_info,
   /scan,
   /rtabmap/odom_info

With Visual Odometry on I got the following rqt graph:


Thank you
Reply | Threaded
Open this post in threaded view
|

Re: How to disable visual odometry and use wheel odometry

kolohe113
sorry for the image quality. Basically when I have visual odometry on, the wheel odometry and visual odometry are feeding into rtabmap/rgbd_odometry and I want to disable the visual odometry and keep only the wheel odometry.

Thank you
Reply | Threaded
Open this post in threaded view
|

Re: How to disable visual odometry and use wheel odometry

kolohe113
In reply to this post by kolohe113
Ok, I have made it work. However, I am getting some these warnings from time to time:

[ WARN] [1529523717.532595392]: /rtabmap/rtabmapviz: Did not receive data since 5 seconds! Make sure the input topics are published ("$ rostopic hz my_topic") and the timestamps in their header are set. If topics are coming from different computers, make sure the clocks of the computers are synchronized ("ntpdate"). If topics are not published at the same rate, you could increase "queue_size" parameter (current=10).
/rtabmap/rtabmapviz subscribed to (approx sync):
   /odom,
   /rtabmap/rgb/image,
   /rtabmap/depth/image,
   /camera/rgb/camera_info,
   /scan,
   /rtabmap/odom_info
Reply | Threaded
Open this post in threaded view
|

Re: How to disable visual odometry and use wheel odometry

matlabbe
Administrator
Hi,

When using rtabmap.launch, we can set "visual_odometry" argument to false to not start visual odometry node.

Not sure about your rtabmap version, but odom_info should not be subscribed by rtabmapviz if visual_odometry argument is false. Otherwise, manually edit rtabmapviz parameters to set subscribe_odom_info to false.

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

Re: How to disable visual odometry and use wheel odometry

arseen
I've got the same issue. When I start rtabmap with visual_odometry:=false it still subscribes to /rtabmap/odom_info.

I looked at the launch file and there isn't a single line which leads to this behavior.

Any suggestions?
Reply | Threaded
Open this post in threaded view
|

Re: How to disable visual odometry and use wheel odometry

matlabbe
Administrator
What is the version of rtabmap you are using? Cannot reproduce the error by doing this:
$ roslaunch rtabmap_ros rtabmap.launch visual_odometry:=false args:="-d"
Reply | Threaded
Open this post in threaded view
|

Re: How to disable visual odometry and use wheel odometry

nilseuropa
Dear Mathieu,

I have the exact same issue with version 0.17.6. Regardless of launch with visual_odometry:=false args:="-d" rtabmap is still subscribed to /rtabmap/odom_info.

Thanks for your help in advance,
nils.
Reply | Threaded
Open this post in threaded view
|

Re: How to disable visual odometry and use wheel odometry

nilseuropa
After modifying your launchscript as
<param name="subscribe_odom_info" type="bool" value="$(arg visual_odometry)"/>
 now I can turn off the viso with the visual_odometry argument.
Reply | Threaded
Open this post in threaded view
|

Re: How to disable visual odometry and use wheel odometry

matlabbe
Administrator
Hi,

The launch file states:
<param if="$(arg visual_odometry)" name="subscribe_odom_info" type="bool" value="true"/>
<param if="$(arg icp_odometry)" name="subscribe_odom_info" type="bool" value="true"/>
By default subscribe_odom_info is false unless visual_odometry or icp_odometry is true. That way of setting the parameter can cause problem if rtabmap.launch is relaunched (without killing the roscore) with visual_odometry set to false. subscribe_odom_info will keep the last value if the roscore is not restarted between the launches.

By doing:
<param name="subscribe_odom_info" type="bool" value="$(arg visual_odometry)"/>
<param if="$(arg icp_odometry)" name="subscribe_odom_info" type="bool" value="true"/>
the parameter is always overwritten if we want to keep roscore alive between different launches. However, it breaks the logic if icp_odometry is set to true.

Here is a small example to reproduce the problem:
$ roscore
$ roslaunch rtabmap_ros rtabmap.launch args:="-d"
// here both rtabmap and rtabmapviz are subscribed to odom_info

// ctrl-c on rtabmap.launch terminal, then relaunch without visual odometry

$ roslaunch rtabmap_ros rtabmap.launch args:="-d" visual_odometry=false
// PROBLEM: rtabmap and rtabmapviz are still subscribed to odom_info

The solution with the current launch file is to kill roscore when we set visual_odometry or icp_odometry argument to false, to make sure all parameters are reinitialized.

For next release, I force now rtabmap and rtabmapviz nodes to delete ros parameters like "subscribe_odom_info" from rosparam server so that when we relaunch them (without killing roscore), the ros parameters are reinitialized.

cheers,
Mathieu