Toward the Optionally Piloted Aircraft

Aviation Week and Space Technology, the industry’s leading magazine, has been publishing “pilot reports,” on new aircraft for decades. Its pilot report on an aircraft called Centaur ⁠was the first in which the pilot doing the test never touched the controls. Centaur is an optionally-piloted aircraft, or OPA.

The reporter conducted the test while sitting in the back seat of the small, twin engine aircraft. Up front sat a person acting as the safety pilot, his arms calmly resting on his lap. Sitting beside him, in what is ordinarily the co-pilot’s seat, was an engineered series of linkages, actuators, and servos. The safety pilot pulled a lever to engage the mechanisms, and they began moving the pilot’s control stick and pressing the rudder pedals. The actuators are double and redundant; if one set fails another will immediately take over. The safety pilot can disengage the mechanism with a single pull of the lever if something goes wrong; unless something goes wrong he does not touch the controls.

In the back seat, the “operator,” commanded the plane through a laptop, using an interface identical to that of the ground control station for an unmanned vehicle. Through the screen, he could change altitude, fly to waypoints, takeoff or land. Pushing the “launch” button began an autonomous takeoff. The computer held the brakes, pushed the throttles forward, checked the engines and instruments, and released the brakes for the takeoff roll. The plane accelerated, took to the air, and began to climb out on a semi-autonomous flight.

Continue reading “Toward the Optionally Piloted Aircraft”

Embeded Sieve of Eratosthenes: Hunting Primes on ARM

Embeded Sieve of Eratosthenes

I ended up with just enough time over the weekend to pull together a quick project. I implemented the Sieve-of-Eratosthenes on an ARM chip.

If you haven’t heard of the Sieve of Eratosthenes then you really need to work your way through Project Euler. That’s where I first learned about this method of finding prime numbers. You begin with a list of all numbers, find a prime, then remove all multiples of that prime from the list. The real trick with doing it on a microcontroller is to figure out how to store a large list of numbers in a limited space. The gist of my method was to use a boolean array (I call it a bit-packed array but that may be the wrong way of saying it). The details are found in my project linked at the top.

‘Why?’ is almost always the wrong question to ask around here. But in this case, I did this because I wanted to try out the Bit Banding functionality of the ARM core. These chips have alias addresses that map to a single bit in the SRAM and also some of the peripheral registers. This allows read or write access for a single bit using a single instruction. Turns out that one side effect of 32-bit architecture is having addresses to burn.