User Tools

Site Tools


marvin:ecp3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
marvin:ecp3 [2009/01/29 00:42] riepermarvin:ecp3 [2009/01/29 11:01] (current) rieper
Line 15: Line 15:
   * Create a Motor Control class that can append extra power to the motors individually to control how the robot is behaving.   * Create a Motor Control class that can append extra power to the motors individually to control how the robot is behaving.
  
-=====The Motor in Theory===== +=====Theory===== 
-=== DC Motor Drives ===+====DC Motor Drives====
 {{ :marvin:motor.png |The NXT DC Motor}} {{ :marvin:motor.png |The NXT DC Motor}}
 The Lego Mindstorm kit comes with a set of DC Motors and therefore we shall give a short introduction to the DC motor and the DC motor controller. This will hopefully add nicely to the presentation of the H-bridge and DC servo motors(([[http://csel.cs.colorado.edu/~bauerk/legorobots/motors.html#SECTION001210000000000000000|motors]])) given in week 4 of the course. Let us begin with the DC motor.(([[http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html|Hyper Physics]]))\\ The Lego Mindstorm kit comes with a set of DC Motors and therefore we shall give a short introduction to the DC motor and the DC motor controller. This will hopefully add nicely to the presentation of the H-bridge and DC servo motors(([[http://csel.cs.colorado.edu/~bauerk/legorobots/motors.html#SECTION001210000000000000000|motors]])) given in week 4 of the course. Let us begin with the DC motor.(([[http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html|Hyper Physics]]))\\
Line 26: Line 26:
 {{ :marvin:4quadrant.png?300 |4 Quadrant Motor Control}} {{ :marvin:4quadrant.png?300 |4 Quadrant Motor Control}}
  
-=== Power Electronic Converter ===+====Power Electronic Converter====
 We see that the four quadrants refers to the four combinations of voltage and current directions. As mentioned the motor is actually transferring energy back to the supply when breaking and this requires special attention when designing a motor controller. In order to control the DC motor a Power Electric Converter (PEC) that satisfies the following conditions is needed. ((Power Electronics, Mohan, Undeland and Robbins, Wiley, ISBN 0-471-22693-9)) We see that the four quadrants refers to the four combinations of voltage and current directions. As mentioned the motor is actually transferring energy back to the supply when breaking and this requires special attention when designing a motor controller. In order to control the DC motor a Power Electric Converter (PEC) that satisfies the following conditions is needed. ((Power Electronics, Mohan, Undeland and Robbins, Wiley, ISBN 0-471-22693-9))
   * The converter must allow both output voltage and current to reverse in order to yield a four-quadrant operation.    * The converter must allow both output voltage and current to reverse in order to yield a four-quadrant operation. 
Line 43: Line 43:
 Fortunately the motor control is linear, which is a requirement in our control loop as it is a linear controller. However, the average voltage output does not vary linear with the control input voltage during the blanking time, which occurs when the motor direction changes. In our case this happens all the time to keep the robot in state of equilibrium and we may therefore expect some non linear behaviour from the motors.  Fortunately the motor control is linear, which is a requirement in our control loop as it is a linear controller. However, the average voltage output does not vary linear with the control input voltage during the blanking time, which occurs when the motor direction changes. In our case this happens all the time to keep the robot in state of equilibrium and we may therefore expect some non linear behaviour from the motors. 
  
-=== Motor Encoder/Tacho Counter ===+====Motor Encoder/Tacho Counter====
 When designing the motors, wheels and drive train, it will almost always be important to have some sort of encoder feedback. In the LeJOS framework there are methods to get readings from the tacho counters and these sensor readings have proven to be very useful when designing a balancing robot cf. the research literature in the [[http://wiki.aasimon.org/doku.php?id=marvin:ecp0|introduction]]. In order to illustrate the concept of an encoder we use this simple set-up, which is explained in the excellent SRS Encoder article by David Anderson(([[http://www.seattlerobotics.org/encoder/200109/dpa.html|Home-Brew Shaft Encoders]])). Imagine a DC motor without an encoder which is illustrated in the top of the figure. If we mount a circular image with a pattern determining our resolution, we can use a simple IR transceiver to get readings back to our micro controller or signal processing unit. In the LEGO Mindstorm Kit(([[http://mindstorms.lego.com/overview/|LEGO Mindstorms]])) each motor has a built-in Rotation Sensor. This allows us to control the robot’s movements quite accurate. The Rotation Sensor measures motor rotations in degrees or full rotations [accuracy of +/- one degree]. One rotation is equal to 360 degrees, so if we set a motor to turn 180 degrees, its output shaft will make half a turn. This allows us to evaluate both the body angle and angle velocity of the balancing robot by means of simple differentiation, which is explained in one of the following sections.  When designing the motors, wheels and drive train, it will almost always be important to have some sort of encoder feedback. In the LeJOS framework there are methods to get readings from the tacho counters and these sensor readings have proven to be very useful when designing a balancing robot cf. the research literature in the [[http://wiki.aasimon.org/doku.php?id=marvin:ecp0|introduction]]. In order to illustrate the concept of an encoder we use this simple set-up, which is explained in the excellent SRS Encoder article by David Anderson(([[http://www.seattlerobotics.org/encoder/200109/dpa.html|Home-Brew Shaft Encoders]])). Imagine a DC motor without an encoder which is illustrated in the top of the figure. If we mount a circular image with a pattern determining our resolution, we can use a simple IR transceiver to get readings back to our micro controller or signal processing unit. In the LEGO Mindstorm Kit(([[http://mindstorms.lego.com/overview/|LEGO Mindstorms]])) each motor has a built-in Rotation Sensor. This allows us to control the robot’s movements quite accurate. The Rotation Sensor measures motor rotations in degrees or full rotations [accuracy of +/- one degree]. One rotation is equal to 360 degrees, so if we set a motor to turn 180 degrees, its output shaft will make half a turn. This allows us to evaluate both the body angle and angle velocity of the balancing robot by means of simple differentiation, which is explained in one of the following sections. 
  
 {{ :marvin:ecoder.jpg?300 |Principle of TACHO Encoder}} {{ :marvin:ecoder.jpg?300 |Principle of TACHO Encoder}}
  
-=====Driving the Robot=====+=====Implementation=====
 ====Right/Left Steering==== ====Right/Left Steering====
 Now that the robot is balancing it ought to be simple to make it drive around. We expect the controller to maintain its balance even though we apply the necessary offset to the PWM in order to make it move. At first we added a small offset to one wheel and subtracted from the other, which caused the robot to drive in a circle. The robot actually seemed to be more robust when turning and we were able to reach a high speeds when pivoting "on the spot" Maybe this has to do with the angular momentum that is being build up when turning on the spot - similar to the ice skater doing a pirouette. Also we reduce the slip in the motor by keeping the robot rotating. This can be seen on the following video\\ Now that the robot is balancing it ought to be simple to make it drive around. We expect the controller to maintain its balance even though we apply the necessary offset to the PWM in order to make it move. At first we added a small offset to one wheel and subtracted from the other, which caused the robot to drive in a circle. The robot actually seemed to be more robust when turning and we were able to reach a high speeds when pivoting "on the spot" Maybe this has to do with the angular momentum that is being build up when turning on the spot - similar to the ice skater doing a pirouette. Also we reduce the slip in the motor by keeping the robot rotating. This can be seen on the following video\\
Line 78: Line 78:
  
 All of these considerations lead to the programming of the ''MotorControl'' class. All of these considerations lead to the programming of the ''MotorControl'' class.
-=====The MotorControl class=====+====The MotorControl Class====
 {{ :marvin:motorcontrol.png?450 }} {{ :marvin:motorcontrol.png?450 }}
 The MotorControl class  handles the motors exclusively. It works as a control interface on top of the actual Motor ports, and can report angle and angle velocity (using the TACHO counter) of both of them, as well as set the power and direction.\\ The MotorControl class  handles the motors exclusively. It works as a control interface on top of the actual Motor ports, and can report angle and angle velocity (using the TACHO counter) of both of them, as well as set the power and direction.\\
Line 135: Line 135:
  
  
-=====Ctrl=====+====Ctrl====
 {{ :marvin:ctrl.png?500 }} {{ :marvin:ctrl.png?500 }}
 The Ctrl class is used to handle the control parameters of Marvin. The Ctrl class is used to handle the control parameters of Marvin.
marvin/ecp3.1233186169.txt.gz · Last modified: 2009/01/29 00:42 by rieper