Robotics StackExchange | Archived questions

AMCL Time-based updating

Hi,

I am using an Rover Robotics OpenRover to run AMCL on a robot and I see that AMCL updates once it has moved a certain distance. When the robot is not moving it doesn't update. I want to configure it to update while not moving. Is it possible to set a time based update interval instead of distance, that way the robot tries to improve is position while not moving?

Higher-level question, why don't I see people doing this in any tutorial. It seems like an obvious thing to do.

Regards, Nick Fragale

Asked by shoemakerlevy9 on 2019-03-08 16:31:08 UTC

Comments

Answers

Not out of the box, but if you read the AMCL code, I think you'll find it pretty simple to change those criteria.

Why not do it? Imagine your robot is just hanging out for a few hours, scan matcher and the lasers aren't perfect, you'll end up drifiting in place while staying still I imagine. Also, if you're running a robot at let's say conservatively 0.5m/s, you're probably going to trigger your AMCL config once a second typically (more or less, I'm just looking at defaults). Do you really want to run this more than once a second?

Asked by stevemacenski on 2019-03-08 21:18:08 UTC

Comments

AMCL has a service for updating on command.

request_nomotion_update (std_srvs/Empty)

Service to manually perform update and publish updated particles.

So setup a timer and request the service periodically.

Asked by billy on 2019-03-13 20:38:07 UTC

Comments

That's not what services are meant for and a pretty heavy operation to build and tear down the XMLRPC at any rate > 1hz

Asked by stevemacenski on 2019-03-14 12:30:37 UTC

Easy way to call the service every second:

watch -n 1 rosservice call /request_nomotion_update

Asked by chadi on 2021-05-07 04:12:41 UTC

For it to work most effectively, AMCL requires new information from each lidar scan it ingests. If the robot is not moving, feeding AMCL the same scan over and over will make the algorithm perform much worse.

AMCL is designed to handle Global Localization for difficult cases: imagine multiple identical rooms, each with a doorway to a shared hallway. If the robot is inside one of the rooms, there is no way to determine which room it's in from just the lidar scans - the robot will have to move into the hallway to determine a single solution. This is why AMCL wants "new" scans.

Asked by Mike Scheutzow on 2022-06-19 10:20:39 UTC

Comments