SteveMacenski / spatio_temporal_voxel_layer

A new voxel layer leveraging modern 3D graphics tools to modernize navigation environmental representations
http://wiki.ros.org/spatio_temporal_voxel_layer
GNU Lesser General Public License v2.1
623 stars 184 forks source link

Costmap refresh rate issue #156

Closed blablebli-robots closed 4 years ago

blablebli-robots commented 4 years ago

Hello,

I am trying to run your stvl code on an ARM based development board. I am currently getting around 0.3Hz with a depth camera running at 10Hz. Any pointers to where to start looking will be greatly appreciated, I wish to use this stack for navigation purposes (avoidance).

Also, What are the minimum system requirements to run this software for real time avoidance?

Thank you!

SteveMacenski commented 4 years ago

I’ve heard of folks running this at 5hz on a embedded ARM processor, are you sure the issue is STVL and you’re using the binary install or optimized build? You may want to profile it to see where the issue is. My instinct would be that their your build isn’t a release build or a dependency of STVL isn’t build in release mode for your chipset.

Does using the voxel layer run in your requirements? I have a paper coming out soon that shows that STVL is an order of magnitude faster for many sensors being processed compared to a raycasting voxel method.

blablebli-robots commented 4 years ago

Thank you for your reply,

STVL was built from source, but dependencies were installed from binary packages. A quick look from the profiler shows roscpp/pthreads as possible culprits. Will keep digging.

The navigation stack (slam+LiDAR+IMU+odom) runs fine without Pointcloud2 messages, as soon as I try to bring in Pointcloud2 into standard VoxelLayer or STVL then I run into refresh issues. With the VoxelLayer I cannot even see the layer being updated.

Cheers.

SteveMacenski commented 4 years ago

Are you on a release build? Catkin will do debug builds by default. That could have a substantial impact, especially when compute constrained.

Keep in mind pointclouds are large and require some compute to process. It may not be possible to do what you’re trying to accomplish if too limited. A modern i3 can process a few depth sensors but frankly I have very few datapoints on trying to use high frequency depth info on ARM, especially if you only have 1-2 cores. But it sounds like your issue isn’t with that if its threads and roscpp.

blablebli-robots commented 4 years ago

Yes it is a Release build, thanks for pointing that out. I have a quad core ARM, and camera set to VGA resolution, so I still don't understand what in my setup is causing such drop in performance given the info you have of some ARM running at 5hz.

Thank you again for all your help. I am currently rebuilding dependencies from source to see if there is any improvement. Will keep you posted.

blablebli-robots commented 4 years ago

Well, after rebuilding dependencies and retesting I'm still running into the same issues, no improvement, my current setup is not cutting it. Thank you for all your support.

SteveMacenski commented 4 years ago

@blablebli-robots so are there any action items here? Are you going to increase compute or not use pointclouds in STVL or voxel layer?

Sounds like you just need more compute. Closing but will reopen if I'm misinterpreting.

(also happy to hear that mine at least runs with voxel layer doesn't even process ;-) )