Refine tango rosbag from Google Constructor

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

Refine tango rosbag from Google Constructor

santoimam
I've been using Rtab-Map on my Phab2 Pro for 3 years and love it, but it overheats my phone and drains the battery quickly. Given this situation, I decided to give Google Constructor a try. While it doesn't have all the features I love from Rtab-Map, it gets the job done decently and most importantly, it solves my battery draining problem during scanning. I do miss the multi-session scanning feature from Rtab-Map and the ability to refine the data on my PC for better accuracy though.

Recently, I discovered that Constructor can export scanning datasets which include Tango camera calibration, RGB video, depth video, and rosbag files.  I tried to follow the tutorial on the ROS wiki but I encountered the following error when attempting to refine the data:

"[ WARN] [1675063178.396546402]: /rtabmap/rtabmap: 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"). Parameter "approx_sync" is false, which means that input topics should have all the exact timestamp for the callback to be called.
/rtabmap/rtabmap subscribed to (exact sync):
   /tango/camera/color_1/image_raw_relay \
   /image_relay \
   /tango/camera/color_1/camera_info
"

I'm not entirely sure what is causing this error. It could be because the bag data from Constructor doesn't include the necessary topics, or because it uses different definitions for the topics, or it could be due to a mistake in my configuration as I am new to ROS.

I appreciate your time and understanding. Thank you.
Reply | Threaded
Open this post in threaded view
|

Re: Refine tango rosbag from Google Constructor

matlabbe
Administrator
For your battery draining problem, you may have just to decrease the rendering quality. most of the power consumption may be caused by too many polygons shown at the same time. Even if you decrease the online rendering quality, the app still record raw data. There is also a Recording mode to simply record data that you can process offline with RTAB-Map desktop app.

For the google constructor compatibility, maybe wrong remap, the second topic here doesn't look right:
/tango/camera/color_1/image_raw_relay \
/image_relay \
/tango/camera/color_1/camera_info 

If you have a rosbag created from Google constructor, I could check if all required topics are there.

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

Re: Refine tango rosbag from Google Constructor

santoimam
Mathieu, thank you for your attention. I prefer using normal mode in the app rather than data recording mode for better control over loop closure. My current settings are:

Low density point cloud
Max depth = 4m
Min depth = 0m
Texture res = very low
Save all frames
Save raw
Update rate = 4Hz
Memory limit = 300 nodes
Database in memory, sometimes on for small area scanning.
I divided the scanning area into smaller sections, like in multi sessions tutorial

Regarding switching to Constructor, I did so due to odometry drift more often in RTAB-Map after multiple scanning sessions and overheating, which has left me wondering if it could be caused by  RTAB-Map taking more data or if Constructor's advantage as a first-party app with better access to the Tango API is the reason.   I am aware of having pushed my this lenovo phone to its limits , but I am not currently able to invest in better scanning tools.

I appreciate your time and effort in addressing my issue. As reference, I have attached a zip file of my dataset from Tango Constructor at this link: https://drive.google.com/drive/folders/1-xLjmDp4MPMwfnl4S4FH1UusJyCi2E-M?usp=share_link.
Reply | Threaded
Open this post in threaded view
|

Re: Refine tango rosbag from Google Constructor

matlabbe
Administrator
Hi,
The problem with the output images is that they are not synchronized. For the rosbag, I cannot find any documentation on the format of those messages (tango_msgs/TangoSensorEvent):

rosbag info 0001.bag 
path:        0001.bag
version:     2.0
duration:    5:33s (333s)
start:       Dec 31 1969 20:34:31.35 (16471.35)
end:         Dec 31 1969 20:40:05.01 (16805.01)
size:        185.3 MB
messages:    138126
compression: none [239/239 chunks]
types:       tango_msgs/TangoFeaturesV7  [334b663c5530c2538689c54c4b9a38a6]
             tango_msgs/TangoSensorEvent [6d86fb2d2ec8b3eef89d72ab843afcfb]
topics:      features/data     3335 msgs    : tango_msgs/TangoFeaturesV7 
             sensor/data     134791 msgs    : tango_msgs/TangoSensorEvent

If you want to scan large environments, I don't recommend 4 Hz (unless you are in recorder mode), use default 1 Hz otherwise you would be using a lot of CPU. On my Phab2Pro, it takes around 200 ms per update when there is no loop closure detected (see Debug view). If you set to 4 Hz, it means that the CPU will be used almost at 100%. At 1 Hz, CPU would be used at 20/25% in average, thus less battery consumption. You may use Third person view to save rendering time, also disable Blending.

For the accuracy of the pose, it should be the same as google constructor, RTAB-Map is using Tango API to get the pose. If there is a drift, it is from Tango, not RTAB-Map. On Google Constructor, it also drifts sometimes.

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

Re: Refine tango rosbag from Google Constructor

santoimam
Thank you again for your response, Mathieu. I believe that your suggestion will resolve my previous issue. If you don't mind, I would like to ask another question. Based on your experience, could you kindly suggest the optimal settings for refining the Tango database in the RTAB-Map desktop application in order to obtain the most accurate data, particularly regarding the feature extraction method? Should odometry be disabled from the source?
Reply | Threaded
Open this post in threaded view
|

Re: Refine tango rosbag from Google Constructor

matlabbe
Administrator
On desktop app, keep tango's odometry. The only difference you could get is different loop closure performance or graph optimization by reprocessing it on the desktop. For feature type, it depends on the dependencies included in rtabmap. I don't have specific "best" parameters, as they can always be tuned depending on the environment. The default parameters are the "best" that generally work with any camera sensors.

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

Re: Refine tango rosbag from Google Constructor

santoimam
Thank you for your helpful response, Mathieu. I appreciate it. Have a great day!