My short answer to the question in the title is yes, Twist is the velocity command interface as it defines a 6DoF velocity of a rigid body.

Whether a controller or a planner is compatible with this is a different question. I think that as a standard interface, Twist has been sufficient and I would refrain from any sort of splitting up or extending it.

The question of whether mobile bases should stick to Twist as their primary interface is a very valid one. Especially now with the advent of many ackermann vehicles (aka consumer cars) entering the robotics domain there is room for improvement on this front.

First, I would strongly advise against dropping structure from messages and relying on client code to reverse engineer what data on a certain topic means (even if it’s done through provided libs). Yes there is precedent for this with certain sensor data types but I’d argue that this flexibility in size/shape is native to those sensors, it would not be possible to define camera messages for every single imaginable resolution and encoding setting.

Second, instead of aiming for “one size fits all”, I suggest sticking to well-defined interfaces and extending the nav stack and relevant controllers to operate using these interfaces. ROS messages - for the most part - provide a statically typed interface to nodes which define whether two components can talk to each other or not without having to assess what goes on in runtime. This is a very powerful tool which we shouldn’t risk in favour of simpler graphic charts and a false illusion of universal compatibility.

An intuitive example is that if you have a local planner that natively plans with ackermann constraints, it could output both ackermann command messages and Twist (a holonomic vehicle can perform all commands kinematically although suboptimal). If one wants to smarten-up an ackermann controller to reverse engineer what to do from a Twist message, so be it, but at the same time they may choose to not provide this input interface and only take ackermann commands.
In short: message interfaces should define which pieces of the system fit together before ever trying to run anything.

We are very happy to host and provide feedback for these new messages over at control-msgs as well as new controllers in ros-controllers and ros2-controllers.