Showing posts with label control system. Show all posts
Showing posts with label control system. Show all posts

Wednesday, 22 June 2016

The derivative magic

I have been facing some problems which I was not able to solve for a few days. The problem of high rise time of the P controller and the problem of P controller over the heading control. In brief, the heading error could not be compensated using P controller for small errors because say a response of 1RPM is a very slow wheel speed. And if I gain it would oscillate till eternity.

I met a M.Tech senior (because he was facing some problem in MATLAB) yesterday and he showed me a PID video of MIT. So when I sat today in lab I thought to tinker with my controller instead of parameters or logic or frequencies. I added a derivative term and this how my system evolved,

P = 0.02, D = 0.0 This was my earlier P response. Efficient but slow.

P = 0.08
System oscillations apparently visible
P = 0.08, D = 0.1
Derivative starts nullifying oscillations
P = 0.08, D = 0.2
P = 0.08, D = 0.3
P = 0.08, D = 0.4
Almost no oscillations
P = 0.08, D = 0.5
P = 0.08, D = 0.6
Oscillations start to increase back. Guess this is D limit
P = 0.06, D = 0.5
Decreasing P gain now to damp the overshoot
Almost perfect
P = 0.06, D = 0.4
Derivative decreased a little more because it would bring some over response when motor stopped

This is the video of the robot with all wheels tuned with PD controller and the heading feedback going through a PD controller. The Heading PD controller needs further tuning.

So this was the evolution of my P controller to PD controller.

- Aniket

Saturday, 11 June 2016

Taking a better way off course.

I recently found out that my QEI (Quadrature Encoder Interface) codes were not correct. How can your brain help you stop from being hit by a street lamp if you are seeing it at the wrong place from its original place? Savvy? So we followed an advice from our mentor and sketched a module tree of our system and picked out the lower most branch of the module and start perfecting each module in the reverse hierarchy of their appearance. The scribbled rough diagram looks like this, I will try to fair it out ASAP and have my readers a look to it


I tried to vary frequency of QEI and looked if there is any redundancy in the readings and the fluctuations in the readings. While redundancy was not an issue, at 40Hz of QEI the readings fluctuated a lot. As the frequency was decreased the readings started to smoothen. This was observed and plotted on MATLAB and attached to the experiment's excel sheet which can be found here.

The next phase of the RPM calculator module will be proceeded with, tomorrow. Till then, ciao.

- Aniket

Thursday, 9 June 2016

Three wheel driving - without control system

From my previous post, you can find a pdf regarding a "n wheeled driving equations". From the paper I was able to formulate equations for a three wheel drive and it followed as below,

v1 = -vx/2 + vy*sqrt(3)/2 + R*w
v2 = -vx/2 - vy*sqrt(3)/2 + R*w
v3 = vx + R*w

where,
v1 , v2, v3 are RPMs of the three wheels
vx is velocity of robot in x direction, vy is velocity of robot in y direction, w is angular velocity, R is radius of wheel

So I coded an interface for PS2 and motor control on ATMega128 controller and started testing a no control system run of the system. The code can be found here.
Considerations of no angular velocity was taken and hence w = 0. vx and vy were equalled 100cm/s initially but the response at this RPM was sluggish and often the mechanical errors dominated a lot leading to stoppage of wheels due to gear friction itself. Later the vx and vy were updated to 200cm/s and it got rid of gear friction and mechanical imperfections. Several runs were made on robot and the PWM on each wheel was "biased" according to the compensation required. For example, if the robot moved more to the left then the left wheel PWM was decreased. After testing several sets, today the driving concluded with the below results of no control system three wheel driving.

Obviously, the response is really bad. But it could be finer with some more tuning. This clearly declares the need of a control system.

Mechanical difficulties faced :

  • The L mountings of the motor has very less ground clearance and hence touches unlevelled ground.
  • Positioning wheels Allen bolts might have threads worn out.
  • Gear friction is considerable.
  • Some eccentricity on gear mountings.

Wednesday, 8 June 2016

Getting started with Three wheel omnidrive driving

So I will put up from where I left last time. I was working on four wheel omnidrive robot till my teammates worked on fabricating the three wheel chassis. Finally it was completed last week and we have started shifting the driving from four wheel to three wheel.

Probably, shifting the electronics and control system might only round up to changing the equations that correlate the individual RPMs and linear and angular velocity of robot. I found a really good paper work on it which can be found here.

Today we completed rewiring the triwheel chassis and managed to test all motors. Successfully tuned two of the motors but couldn't tune the third due to mechanical malfunctioning observed in it. The following are the videos of the P-regulator responses by each wheel, Used Tiva TM4C123 Launchpad. Due to lack of resources, we could accomplish only this much today.




The next steps will probably be to arrange the resources as soon as possible and make the changes in the equation and start trying out a no heading feedback system ASAP to compare triwheel and four wheel and solve actuator problems.

Thursday, 12 May 2016

Four wheeled omnidrive robot driving

It has been quite a while since I last blogged. I have been working on driving of a mobile robot lately. Driving plays a really important role in case of a mobile robot. So what do I mean by driving?

Driving is basically another term of control of mobile robot. Controlling a robot's motion ain't as easy as you think at the first approach. The first robot you ever made might have had four motors with two switches controlling motor state on or off. If you had been a genius then you might have had even applied some embedded electronics and microcontrollers to make a variable speed robot using PWM. The systems mentioned above were open loop systems.

Open Loop v/s Closed Loop
To understand importance of driving, consider an example where you are walking on the side of a road. Now if you were an open loop system, you must have been blindfolded. Maybe you could have a person giving you inputs of where to walk. But would you risk your life by walking on the road blindfolded on someone else's input?

Here's the drill, the input and feedback are the important terms here. A system with no feedback but only input signals can be called open loop while a system with feedback is, of course, a closed loop.

The advantages of a closed loop system is that the system knows what output it gives out and gets feedback from outside world what output actually reached in the world. Here comes the concept of error. Error is, as usual, the quantity you desire minus the quantity you have currently. In closed loop systems, this error is the subtraction of feedback signal from input signal. This error is fed in an error reduction algorithm or controllers that change the output according to the error. The famous PID controller is one such controller. Google about it.

Why Driving?
So let's get back to where we started. Why driving? Because running four motors (in my case 4) at the same time irrespective of load ain't a piece of cake. And for a "perpetual mechanically perfect" robot, it is a must for all the motors to run at the same rpm in order to get a nice straight resultant direction of motion. Autonomous robots have these skills as their prerequisites. Plus driving ensures the robot to be immune of the external forces disrupting its path, for e.g. if you increase load on one wheel, then by nature, the rpm of that wheel should be decrease. This decrease in rpm can be fed back to the system which then will compensate the rpm of this wheel to make it back normal and hence the resultant direction shall be unchanged. (Theoretically)

Driving of robots can also be further expanded to line tracing, curve tracing, swarm robotics etc.

Currently I am working on Texas Instruments Tiva C series microcontrollers and Raspberry Pi 2 to apply my CONTROL SYSTEM on the robot. Control system. Explore it. Driving is an application of the control theory.

Aniket.