Robot Control
How are high-level commands (software) translated into lower-level commands (physics)?
There are 2 layers:
- Software-defined control
- This will be the main focus of this page
- Hardware control
- Really, the physics is just sending “electricity” to motors. There’s generally some motor controller
- See Motor Control for how it works
- Motor Encoders also really help
Take a look for example at this:
You can see that the motors give you those different options to do software-defined control.
Really important
You need to understand the physics of how motors are controlled.
Autonomous Cars / AMR
At the highest level of control, in ROS, you send some form of velocity command + steering. More specifically:
For non-holonomic robots (like autonomous cars), you generally send a ackermann_msgs, which consists of:
- steering angle
- velocity
OR, for Differential Drive robots (like roombas), you send a geometry_msgs/Twist command, which consists of:
- linear velocity
- angular velocity (2 3D vectors)
However, you don’t just magically tell the robot to go at some velocity and it tracks it. There is a lower level controller that takes care of this.
On the F1TENTH, there is the VESC that converts high-level commands into PWM signals
There’s also fancier things like FOC.
Note that you can also achieve Position Control.
On actual autonomous racing cars like the A2RL cars, you also need to worry about gear changes, and throttle percentages.
More generally...
There’s ome
Robot Arms
Robot arms get interesting, because unlike cars / robots where it’s pretty straightforward to tell them to go from point A to point B and follow some velocity, we actually have quite a few options.
Types of robot control:
- Position Control
- Think of this like a super stiff arm, you send out max current so it’s always maxed out, but it’s still moving (think back to BLDC Motor)
- You need some sort of Motor Encoder
- Velocity Control
- Torque Control
Can't you also do position control on a robot car?
Yes.
Torque control is often employed in traction control systems and stability control systems, where fine adjustments to wheel torque are required to prevent slipping or skidding.
- Position control is often implemented at a higher-level of planning, like when you want your robot to go from point a to point b, actually now I’m confused
Like robot arms often ship with those options.
My F1TENTH shipped with velocity control (of course, someone implemented it).
At the end of the day, everything boils down to the physics of how motors move.
I’m not sure where Impedance Control fits?