A differential drive robot uses two independently controlled wheels to achieve omnidirectional movement, where the robot's position (x, y) and heading (φ) are controlled through wheel velocities (Vr, Vl); however, for intuitive controller design, the unicycle model is preferred, which uses translational velocity (V) and angular velocity (ω) as inputs, with the relationship V = (R/2)(Vr + Vl) and ω = (R/L)(Vr - Vl) enabling conversion between the two models using the robot's wheel base (L) and wheel radius (R).
Control of Mobile Robots | Differential Drive Kinematics & Unicycle Model
Added:in order to design behaviors or controllers for for robots we inevitably need models of how the robots actually behave and we're going to start with one of the most common models out there which is the model of a differential Drive Mobile robot so differential Drive wheeled mobile robot has two wheels and the wheels can turn uh at different rates and by turning the the wheels at different rates you can make the robot move around so this is the robot we're going to start with and the reason for it is that it's extremely common in fact the Kera 3 which is the robot that we're going to be using quite a lot in this course U is a differential Drive wielded mobile robot but a lot of them out there are in fact differential Drive robots typically they have the two wheels and then a Caster wheel in the back uh and the way these robots work is you have the right wheel velocity that you can control and the left wheel velocity that you can control control so for instance if they're turning at the same rate the robot is moving straight ahead if one wheel is turning slower than another then you're going to be turning towards the direction in which the slower wheel is so this is a way of actually being able to uh to make the robot move around so let's start with this kind of robot and see what does a robot model actually look like well here's my cartoon of the robot the circle is the robot and the black uh rectangles are supposed to be the wheels the first thing we need to know is what are the dimensions of the robot and I know that I've said that a good controller shouldn't have to know exactly what particular parameters are because typically you don't know what the friction coefficient is well in this case you are going to need to know two parameters and one parameter you need to know is the wheel base meaning how far away are the wheels from each other we're going to call that l so L is the wheel base of the robot you're also going to need to know the the radius of the wheel meaning how big are the wheels and call that capital r now luckily for us these are parameters that are inherently easy to measure you take out the ruler and you measure it on your robot but these parameters will actually play a little bit of a role when we're trying to uh to design controllers for these robots now that's the cartoon of the robot what is it about the robot that we want to be able to control well we want to be able to control how the robot body is moving but at the end of the day the control signals that we have at our disposal are V subr which is the rate at which the right wheel is turning and V subel which is the rate at which the left wheel is turning and these are the two inputs to our system so these are the inputs now what are the states well here's the robot now I've drawn it as a triangle because I want to stress the fact that the things that we care about typically for a robot is where is it X and Y it's the position and which direction is it heading in so fi is going to be the heading or the orientation of the robot so the things that we care about are where is the robot and in which direction is it going so the robot model needs to connect the inputs which is V subel and V subar to the states somehow so we need some way of doing this transition well this is not a course on kinematics so instead of me spending 20 minutes deriving this voila here it is this is the differential Drive robot model it tells me how VR and VL translates into x dot which is how does the exposition of the robot change or to Y dot which is how is the Y position or F dot meaning how is the robot turning so this is a model that gives us what we need in terms of mapping control inputs onto States the problem is that it's very cumbersome and unnatural to think in terms of rates of various Wheels if I ask you how should I drive to get to a door you probably aren't going to tell me what V subel and V sub R are you're probably going to tell me uh don't go too fast and turn in this direction meaning you're giving me instructions that are not given in terms of visel and visar which is why this model is not that common used when you're designing controllers however when you implement them this is the model you're going to have to use so instead of using the different IAL Drive model directly we're going to move to something called a unicycle model and the unicycle model overcomes this issue of dealing with unnatural or unintuitive terms like wheel velocities instead what it's doing is it's saying you know what I care about position I care about heading why don't I just control those directly in the sense that let's talk about the speed of the robot how fast is it moving and how quickly is it turning meaning the angular velocity so translational velocity speed and angular velocity is how quickly is the robot turning so if I have that my inputs are going to be V which is speed and Omega which is uh angular velocity so these are the two inputs they're very natural in the sense that we can actually feel what they're doing which we typically can't when we have VR and VL so if we have that how do we map them on to the actual robot well the unit cycle Dynamics looks as follows x dot is V cosine F the reason this is right is if you put Co F equal to zero then cosine fi is one in this case x dot is equal to V which means that you're moving in a straight line in the X Direction which makes sense similarly for y so y dot is V sin fi and F dot is Omega because I'm controlling The Heading directly or the the the the rate at which the heading is changing directly so this model is highly useful we're going to be using it quite a lot which is why it deserves one of the patented sweethearts okay there is a little bit of a problem though because this is the model we're going to design our controllers for the unicycle model now this model is not the differential Drive wield model this is so we're going to have to implement it on this model and now here we have V and Omega these are our the the control inputs we're going to design for but here V subr and vbbl are the actual control parameters that we have so we somehow need to map them together well the trick to doing that is to find out that this x dot that's the same as this x dot right they're the same thing this y dot is the same as the other y dot so if we just identify the two x dots together then divide it by cosine 5i we actually get that the velocity V is simply R / 2 V sub R plus v sub l or 2 v/ R is v r + v l so this is an equation that connects V which is the translational velocity or the speed to these real velocities and we do the same thing for Omega we get this equation so Omega L / R is VR minus VL now these are just two uh linear equations we can actually solve these explicitly for V subr and V sub L and if we do that we get that V subar is this thing and V subel is this other thing but the point now is this is what I designed for this is what a designed for so V and Omega are designed parameters L and R are my known measured parameters for the robot the base of the robot meaning how far the wheels are apart and the radius of the wheel and with these parameters you can map your designed inputs V and Omega onto the actual inputs that are indeed running on the robot so this is step one meaning we have a model now step two is okay how do we know anything about the world around us
Up Next

LiDAR Sensors for AGV Navigation & Mobile Robot Positioning
@pepperlfuchs
5.1K views•2021-07-20

RatSLAM: Biologically Inspired Robot Mapping and Navigation
@milfordrobotics
20.9K views•2012-08-03

How to Build a Self-Balancing Robot: Arduino Nano & MPU6050
@easytechzones
16.8K views•2022-03-09

Introduction to Robotics | Stanford CS223A Lecture 1
@stanford
744.4K views•2008-07-22
Related Study Plans & Knowledge Roadmaps
Structured learning paths in Robotics












































