Retrotechtacular: The Early Days of CGI

We all know what Computer-Generated Imagery (CGI) is nowadays. It’s almost impossible to get away from it in any television show or movie. It’s gotten so good, that sometimes it can be difficult to tell the difference between the real world and the computer generated world when they are mixed together on-screen. Of course, it wasn’t always like this. This 1982 clip from BBC’s Tomorrow’s World shows what the wonders of CGI were capable of in a simpler time.

In the earliest days of CGI, digital computers weren’t even really a thing. [John Whitney] was an American animator and is widely considered to be the father of computer animation. In the 1940’s, he and his brother [James] started to experiment with what they called “abstract animation”. They pieced together old analog computers and servos to make their own devices that were capable of controlling the motion of lights and lit objects. While this process may be a far cry from the CGI of today, it is still animation performed by a computer. One of [Whitney’s] best known works is the opening title sequence to [Alfred Hitchcock’s] 1958 film, Vertigo.

Later, in 1973, Westworld become the very first feature film to feature CGI. The film was a science fiction western-thriller about amusement park robots that become evil. The studio wanted footage of the robot’s “computer vision” but they would need an expert to get the job done right. They ultimately hired [John Whitney’s] son, [John Whitney Jr] to lead the project. The process first required color separating each frame of the 70mm film because [John Jr] did not have a color scanner. He then used a computer to digitally modify each image to create what we would now recognize as a “pixelated” effect. The computer processing took approximately eight hours for every ten seconds of footage. Continue reading “Retrotechtacular: The Early Days of CGI”

A Tutorial on Using Linux for Real-Time Tasks

[Andreas] has created this tutorial on real-time (RT) tasks in Linux. At first blush that sounds like a rather dry topic, but [Andreas] makes things interesting by giving us some real-world demos using a Raspberry Pi and a stepper motor. Driving a stepper motor requires relatively accurate timing. Attempting to use a desktop operating system for a task like this is generally ill-advised. Accurate timing is best left to a separate microcontroller. This is why we often see the Raspi paired with an Arduino here on Hackaday. The rationale behind this is not often explained.

[Andreas] connects a common low-cost 28BYJ-48 geared stepper motor with a ULN2003 driver board to a Raspberry Pi’s GPIO pins. These motors originally saw use moving the louvers of air conditioners. In general, they get the job done, but aren’t exactly high quality. [Andreas] uses a simple program to pulse the pins in the correct order to spin the motor. Using an oscilloscope, a split screen display, and a camera on the stepper motor, [Andreas] walks us through several common timing hazards, and how to avoid them.

The most telling hazard is shown last. While running his stepper program, [Andreas] runs a second program which allocates lots of memory. Eventually, Linux swaps out the stepper program’s memory, causing the stepper motor to stop spinning for a couple of seconds. All is not lost though, as the swapping can be prevented with an mlockall() call.

The take away from this is that Linux is not a hard real-time operating system. With a few tricks and extensions, it can do some soft real-time tasks. The best solution is to either use an operating system designed for real-time operation, or offload real-time operations to a separate controller.

Continue reading “A Tutorial on Using Linux for Real-Time Tasks”

Real-time Arduino interpreter ditches the PC

computerless_arduino

When prototyping a project using an Arduino, there are a few things that are pretty much required equipment. A computer for generating sketches is typically one of those things, but [Adam] over at Teague Labs is looking to change all that with his current project, the Computerless Arduino.

Instead of using a computer to alter the code running on the Arduino, they have implemented a real-time code interpreter using a Teensy 2.0. The microcontroller is connected to a 5-button LCD display where the user can view the status of any port, view the current running code, as well as alter that code on the fly.

The real-time instruction set is somewhat limited, making it a breeze for newcomers to begin using the Arduino. While that may turn some people off, it still has enough functionality baked in to handle moderately sized projects as well.

Be sure to check out the video we have posted below to see the interpreter in action.

Continue reading “Real-time Arduino interpreter ditches the PC”

Upgrading the Freetronics twentyten with a real-time clock

[John Boxall] finds himself doing a fair amount of projects that require a realtime clock. He does fast and frequent prototyping, usually using the Freetronics twentyten which is an Arduino alternative that boasts a few features like a nice prototyping area, edge visible LEDs, and Mini USB. What is lacking, however, is a real-time clock. Instead of making another shield type system, he just wanted to permanently add this feature to his board. He shares the whole process is photographed and explained quite well for anyone who would want to follow along.