-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create SLAM launch files analog to localization launch files #1630
Comments
I'd like to get around to updating the turtlebot3_demo from the security working group to ROS2 Foxy soon after its release, as it give a viable example of a modest stack to showcase SROS2 with. Switching from cartographer to SLAM toolbox with provided launch files from here might be nice. BWT is there a ticket to track for foxy release of navigation2 we could follow? |
Foxy milestone here: https://github.com/ros-planning/navigation2/milestone/15 though from where I look right now, I think most of those won’t be done in the next few weeks. I’ve been working off this queue: https://github.com/ros-planning/navigation2/projects/2 focused on stability and completeness over new feature development after Matt and Co. let the project. The last month or so I’ve been working on a new planner so one of the reasons my relative push traffic has dropped. I’m pretty sure a minor adaption of the launch file in slam toolbox will be sufficient. I just haven’t gotten to A) port/testing B) testing on hardware to make some nice demo content and C) write up some wiki/blog/website page on it. I’d be more than happy to have an SROS2 demo/use-case/case study as well to show some tangible integration into a relatively complete application! |
@AlexeyMerzlyakov while we're designing the semantics stuff, this would be a good ticket to compliment your map server work. This launch file should include the slam toolbox launch file/config, and your new map saver server. See https://github.com/ros-planning/navigation2/blob/master/nav2_bringup/bringup/launch/localization_launch.py as a guide. You can also add it to https://github.com/ros-planning/navigation2/blob/master/nav2_bringup/bringup/launch/bringup_launch.py with a conditional based on a param to launch in slam or localization mode. That would give direct exposure to your work. Optionally update the tutorial on slam to use it and explain the map save server https://navigation.ros.org/tutorials/docs/navigation2_with_slam.html (Additionally, from the state of the design discussions, it might be a good idea to start looking at how to change the map server to load YAML or XML based on extension) |
WIP. Now I am on AlexeyMerzlyakov@02e6815. There will be two new parameters for
Each parameters triggered itself SLAM, navigation or SLAM&navigation mode. Default values are switched to run in navigation mode for backward compatibility.
There are still some problems. The biggest one - is that when I running SLAM Toolbox, it gives correct |
I think you can just do a |
Status update: [Issue No.1: tf time issue] <- Fixed |
[Issue No.2: can not start navigation] <- Fixed
|
[Issue No.3: robot sometimes hangs] <- Not fixed yet
After that, robot won't react on any goal (looks like controller has stopped its work after exception thrown along with this message).
After it these problems became to appear more rarely, but still not fixed by overall. Continuing to look into it. |
This was done: there will be only one |
I'm really confused why you're running into so many issues. Several users and I have been working with Slam Toolbox in Navigation2 for months now using the launch files in the repo, I haven't experienced any of these issues. All this should require is a launch file to include that one and a bool param to toggle localization or slam. What's the current state of things - you posted a number of issues that have been fixed, what's not fixed that's blocking this, specifically. SLAM Toolbox already has a transform timeout param to lead the transforms https://github.com/SteveMacenski/slam_toolbox/blob/eloquent-devel/src/slam_toolbox_common.cpp#L233. What's the blocker to shipping this? |
That should have nothing to do with it. If AMCL is running on 0.2, then SLAM can as well, there's nothing different between them as far as TF is concerned. Changing DWB as well doesn't build confidence that this is the right choice since that is fully decoupled from this issue. |
Confirm: the problem No.3 is a local PC performance problem. It looks like TF is getting late because of high topics workload concerned with huge data of PCL2 publishing during TB3 simulation (RealSense depth camera is included into Navigation2 So, it looks to be local performance problem and for now it is not required to fix it in mainstream. I think we might return to this, if it will appear somewhere else. Everything already is done locally and Navigation+SLAM is works as intended. So, if you don't mind I would like to complete this task. SteveMacenski/slam_toolbox#204 to be closed as invalid and #1768 will be re-submitted again with simplifications made. |
If you don't have a strong computer, it could also be due to the high CPU load. That depth camera plugin is brutal. |
I think things could improve with this PR, but it need someone to prod it into mainline
|
-1 for Cuda, it should be openCL so it works on all machines, that doesn't help me (or alot of people) at all. |
I wish cuda didn't have such a monopoly in the ML community. As an aside, I haven't seen others using AMD hardware acceleration in Docker. Have you had any luck with non-nvidia GPUs? |
The Intel CPUs have small GPUs in them that you can use for things like this with OpenCL. Overall, for open source, I want everything to be openCL so that its good for all use cases. I agree with ML there is a bit of a reason for Cuda because you couldn't get AMD or other branded GPUs to do what you needed to do for training and deployment. Robotics is a different beast entirely and uses a bunch of Intel stuff and on the robot itself, the GPU is basically un-utilized since most robots don't have screens driven from the host machine (or no screen at all). Its a wasted resource that something like that could really utilize. If someone implemented some absolutely amazing thing in navigation2 with Cuda, I'd probably accept it, but I'd recommend anyone before starting to do OpenCL to be flexible. A good example would be the obstacle/voxel layer, AMCL, DWB maybe, TEB for sure, inflation layer maybe, really should be GPU optimized. You don't need much, the embedded GPU would likely be enough for most of those if not all of tasks. But yes, I ahve before had luck with non-nvidia GPUs for smaller GPU tasks. I wouldn't run my 3 stage CNN or a deep net on it, but its totally suitable for typical non-deep-net applications like ray casting, particle updates, planning and control sampling, even less-deep AI applications like random forests and other techniques. I suppose it would also work well for shallow and small networks (e.g. non-image data networks, think IMU, laser, etc). |
I've seen a number of robotic planning and control projects already using GPUs for embedded
|
Your link makes alot of sense, things like DWAs or controllers that are sampling a bunch of paths, GPUs make a ton of sense. And especially because TEB, DWB, etc never run as fast as I want, optimizing there would be a really high-impact role. If we can speed up the controllers and we can speed up ray casting for the costmap layers, we could potentially run the local costmap at 10hz or something and the controller at 50hz |
Great link, I haven't seen that before, I'll have to look over that later today. Do you know if they have local planners worth using / porting to ROS2? |
Not sure, but we could ask on there repo. |
This is to make it easy to switch between and give a clear separation of ideas of positioning systems from the core navigation code ("look, you can use AMCL or ST, without changing anything else, all positioning systems are fair game"). Add the saver server to this to be analog to the map server server.
The text was updated successfully, but these errors were encountered: