Just to quickly respond. Yes its closed loop control - and you need it. But given that you will always have multiple closed looped control systems in a robot like this - which control loop are you going to set up the coordinate system for? Clearly the lowest level control loop with the highest bandwidth. The current “standard” arrangement that you describe doesn’t do that. Actually its worse than that we constantly convert from the coordinate system that these systems operate in (position for most sensors, and position change for most odometery) and then change that measurement in to speed using non-real time systems??? Then after we’ve done that we convert it back in to position again. If you take a step back doesn’t that seem slightly bonkers to you? You loose information and bandwidth and thus performance. Some people try to make up for it by getting more expensive sensors and odometery and thus reduce the discretization errors that I will talk about in a minute - essentially in an attempt to improve the information and bandwidth of their system - but thinking clearly about coordinate systems is probably cheaper.

As to position based mobile robots: Yes they exist that’s how ubiquity builds its mobile bases. Why? Because we found we got much better performance that way. More precisely we got much better performance that way with inexpensive hardware. So how do we link up to the rest of the stack that as you rightly point out is mostly velocity based? Well we convert from velocity to position and back when needed - its trivial to do and you do it all the time in your velocity base systems - its just that you loose information when you do. If you think about it saying “I am going to go at target velocity 1 m/s and stop when the deadman timer runs out in 0.1 seconds” is mathematically equivalent to saying “I am going to go forward 0.1 meters in 0.1 seconds”.

Its just that, in practice, you loose less information in computing the later compared to the former because you don’t need to measure differentials of x all the time (an operation thats subject to discretization problems and lots of information loss). Not only that but you can also make very high speed loops because you don’t need to measure differentials which usually requires two position measurements separated in time. Thus you can build very high bandwidth control loops.

Now that we come back (or perhaps I should say looped back :slight_smile: ) to the subject of control loops - perhaps you can see why I am keen on the idea of building good ones.

That’s obviously my main motivation - however given that this arrangement also solves the problem that ingo pointed out of difficulty in having a single command that works for different robot types - specifically ackerman and diff drive. I thought it would be a productive way forward.

1 Like