Add tutorial for ground consistency#140
Add tutorial for ground consistency#140haider8645 wants to merge 5 commits intoros-navigation:jazzyfrom
Conversation
Signed-off-by: haider8645 <haider_lodhi@hotmail.com>
|
FYI: The tutorial has following dependencies. NAV2 Documentation I used KISS-ICP because the plugin maintains scores over a temporal window and a good odometry makes this possible. The built-in DiffDrive odomtry plugin in gazebo is not very accurate.. so better avoid it for such plugins. I included this husky package COSTAR_HUSKY_SENSOR_CONFIG_1 in the demo package because I needed to modify it. The modification was enabling orientation samples in IMU data. |
Signed-off-by: haider8645 <haider_lodhi@hotmail.com>
Signed-off-by: Haider <haider_lodhi@hotmail.com>
Signed-off-by: haider8645 <haider_lodhi@hotmail.com>
Updated installation instructions to reflect custom workspace path. Signed-off-by: Haider <haider_lodhi@hotmail.com>
|
This source code needs to be stripped down if possible. Can some or all of the gazebo assets (world, robot model, etc) be pulled in from Also, can this demo use Nav2 fully rather than replacing localization with kiss ICP? I think this is a nice use for a demo of just the layer, but this should be additive for Nav2 so its clear and concise how to integrate this into a full Nav2 stack. You should basically just add the layer to the Nav2 configuration and launch Nav2 as-usual (+ your ground segmentation package). So the full_stack launch file should launch Nav2 navigation (not just controller server) with a configuration file containing the layer + your ground segmentation package + simulation (check out how we do that in other Nav2 packages to follow that pattern). Remove the joystick stuff to simplify. You're welcome to replace KISS ICP from the Nav2 Localization launch file if you/want need to, as long as the rest of it is standard practice/concise. I'll review the tutorial on your docs.nav2.org but I assume its the same as the README here so probably apply here as well :-) |
The terrain model is pulled from gazebo assets. The robot model available on fuel does not give imu orientations so that needs to be modified. I can pull the robot model as well from the gazebo assets and then ask the user to make a small change in the model to send imu orientations. Would that work? I made a local copy of it to avoid to have the user change it but the change is just minimal here
Yes, ofc it can. I will do it
Yes, sounds good. I will make the changes so that the full nav2 stack is launched.
Ok |
I will try out the nav2 localization options and come back to you.I understand and agree that it is better to keep this purely nav2 due to obvious reasons, it's for nav2 :D |
Can you explain this? I'd actually say keep KISS ICP. Its a nice demo showing that as well in a way. |
The sdf file of the husky model on gazebo fuel has an imu_sensor but by default the imu_sensor has the following:
This makes the orientation part of the IMU message invalid (all zeros). I had to set this flag to You may say that why use husky after all... but I kind of like it over turtlebot :D |
|
Why do you need the orientation from the IMU? I guess that's my question |
Yeah so the IMU is actually optional in my ground segmentation, but it becomes quite important once you deal with uneven terrain or slopes. The basic idea is that the algorithm fits planes to local point cloud patches (in grid cells) to estimate the ground slope. Now the problem is: the point cloud is in the robot frame. So if the robot is tilted (like going uphill), the whole cloud is also tilted with it. If you don’t take the robot orientation into account, the algorithm kind of “thinks” the world is tilted, not the robot. That can lead to weird effects, like flat ground behind the robot suddenly being classified as an obstacle, just because it looks angled in the sensor frame. With the IMU, you can get the robot orientation and you can rotate the point cloud back into a gravity-aligned frame, so the slope estimation actually reflects the real terrain and not the robot pose. That said, it still works without IMU (it’s configurable), and on flat terrain you probably won’t notice much difference. But on slopes it can definitely degrade and give some false positives. |



Hello @SteveMacenski ,
as discussed, please find the tutorial for ground consistency plugin. I have tested it on a freshly installed ubuntu with jazzy desktop installed on it. Could you give it a try as well to see if it is working for you.
Parameters used in demo:
I am open to any changes you would like to see in this tutorial.
Best regards,
Haider