Linux-based robot sub wins top award
Oct 15, 2009 — by Eric Brown — from the LinuxDevices Archive — 4 viewsCornell University undergraduates have developed an autonomous underwater vehicle (AUV) that runs Debian Linux on a 2.2GHz Intel Core 2 Duo. The 50-inch mini-sub won first place in the 12th annual Autonomous Underwater Vehicle Competition, and was the first AUV to complete the entire course since 2002.
Developed by the cross-disciplinary Cornell Autonomous Underwater Vehicle Team (CUAUV), whose 35 undergraduate students represent 13 majors and three colleges, the Nova is an improvement on the group's previous Triton sub design. This August, the Nova won first place in the 12th annual Autonomous Underwater Vehicle Competition, sponsored by the Association of Unmanned Vehicle Systems International and the Office of Naval Research.
The CUAUV's Nova in the tank
(Click to enlarge)
The Nova and its creators
(Click to enlarge)
The 78-pound (35 kilogram) AUV can run two to four hours at up to 1.2 Knots, at depths up to 500 feet, says the CUAUV. Sensors include temperature, depth, positioning (GPS), passive acoustics (hydrophone), compass, altimeter, 3DMG-X1, and Doppler Velocity Log. The Nova is further equipped with downward and forward-facing video cameras.
Nova, close up
(Click to enlarge)
The Nova's Commel LS-372-based motherboard
(Click to enlarge)
The serial board, pictured below, is equipped with a USB 2.0 High-Speed device port, as well as 12 RS232 serial ports that connect via an SMSC USB2507 seven-port USB hub and six FTDI FT2232D dual-channel USB-to-RS232 adapters. Each port in turn connects to a three-circuit Molex Microfit-3.0 connector. An additional USB 2.0 port hooks up to the motherboard.
The Nova's serial I/O board
(Click to enlarge)
The Nova's Debian-based software
The Debian-based software stack that controls the Nova includes a shared memory system built on a custom POSIX-based library, providing "thread/process-safe variable updating and notification," says the CUAUV (see architecture diagram below). The memory system stores the vehicle's state in "a litany of type-aware variables," and makes them accessible by all software components. A Kalman Filter is used to fuse sensor data in real time on the vehicle, and then output it to the vehicle's controller.
Nova software architecture
(Click to enlarge)
|
A vehicle abstraction layer (VAL) applies a Python language wrapper around shared variables, creating an abstract "Vehicle" object in Python that has access to physical sensors. The VAL object can also create virtual hybrid sensors that combine data from real or simulated sources, enabling the developers to create virtual sensors such as ''water depth."
Finally, a mission planner component written in Python organizes the task list to build a coherent mission at runtime. The team is also working on a "Dockside U/I" dashboard GUI, which is said to offer a visual representation of data coming from the vehicle.
"Debian works amazingly well for us," stated Benjamin Seidenberg, CUAUV's new software team leader. "Not only do we use it on the vehicle, we also run it on the computers in our lab and our servers, and use it to develop our custom electronics. When I joined the team, we had computers running Windows XP, Windows Server, Debian, Ubuntu, FreeBSD and Gentoo. Now we've settled on Debian for the sub and the servers; our lab workstations dual-boot Debian and Windows. It's a lot easier to manage, and it's great to be able to develop in the same environment that the submarine runs."
Much more information on the Nova may be found here.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.