Update: Karan 2018-12-30

1. Quick weekly updates
  • Performed proximity flight tests for constant velocity sweeps (both horizontal and vertical sweeps)
  • Changed the integral controller for position
  • Added an integral control for  yaw (via a hack)
  • Attempted some past prelim papers
2. Detailed updates
Change in position controller integral action

Last week, I had added an integral controller for position in the QuadcopterController code. In this approach, I had defined a static variable to store the value of integrated position error. Although this works for one vehicle, turns out that if we have 2 vehicles, both of them will share the same integrated error. This would be wrong, and can result in vehicles maintaining undesirable setpoint (as long as the sum of the position errors of both vehicles is 0).

This was changed and now I have an integral control in rostools itself and not in the low level controller. I added it in ExampleVehicleStateMachine (EVSM) in StageFlight. This works independently for both vehicles and has been tried in an experiment.

The integrated error is multiplied by a gain and then commanded as a desired acceleration which is passed on to the low level controller.

Integral Action for Yaw

Since I am kind of constrained by time, I wanted to add this fast enough and hence did not want to mess with the low level controller (QuadcopterAttitudeController or QuadcopterController). So I again tried adding it in the EVSM code. But it did not have an option to specify angle rates. So I could not command it as a desired angular acceleration. So instead, I just defined a new variable called _commandedYawAngle = _desiredYawAngle + “integral term”. The ‘commanded yaw’ was then passed on as a ‘desired yaw’ as shown below.

This is pretty much a hack and does not get the yaw error to 0. But it does reduce it by a good amount. For example, the miniquad usually has a 60 degrees error between desired and actual yaw. With my hack, this error falls to about 10 degrees.

I would definitely look into improving this once I’m not loaded with time constraints (Prelim + paper deadline). Suggestions are also welcome here.

Velocity Sweep experiments

I shall let some of the videos speak so that it gives an idea of what a velocity sweep experiment looks like. These videos are with the position integral control in action, but Yaw integral control is absent.

Vertical Sweep experiment: https://drive.google.com/open?id=1ms2R763VcEkyg-ZMC-IVnZbgf5GTP_jn

Horizontal Sweep experiment: https://drive.google.com/open?id=12nmPSODpRGuCwMkyAsrFe8sWKKqy-3so


I also tried vertical sweep experiments with yaw integrator but no videos were taken for those. The only thing I can conclude is that integral action to yaw is making the quads unstable – they keep oscillating horizontally.

Here are some results for force vs. separation for the vertical sweep experiments at various yaw angle differences:

At yaw difference of 0 degrees the aligned props of top and bottom quad rotate in the same direction, whereas at 90 degrees, the aligned props are contra-rotating.

The magnitude of forces are similar for all experiments, but the slopes are not. The values of slopes are as follows:

  • Yaw diff = 00 deg -> slope = 0.064 N/m
  • Yaw diff = 45 deg -> slope = 0.118 N/m
  • Yaw diff = 90 deg -> slope = 0.208 N/m

I have also repeated the experiments, and slope values are similar for the same desired yaw differences. So I can conclude that the rate of change of forces with vertical separation increases as the yaw difference increases from 0 deg to 90 deg.

3. Planned work for the next week
  • Analyze data of horizontal separation experiments and compare the spread of forces with the theoretical model.
  • Study more for the prelim exam