Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

PenguPilot/PenguPilot

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

858 Commits
858 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOTE: This the Next-Generation Work-In-Progress Branch of PenguPilot. For a stable release, check the master branch!

PenguPilot

Build Status

What is PenguPilot?

PenguPilot is a GNU/Linux based Multi-Rotor UAV Autopilot.

Unlike other platforms, PenguPilot does not require a dedicated low-level microcontroller for real-time

  • sensor data acquisition,
  • data fusion / filtering, and
  • motor control.

The whole flight infrastructure is based on Linux (PREEMPT/PREEMPT_RT) user-space tasks.

Some highlights of the PenguPilot software are:

  • component based software architecture allows to run code on demand (power savings in standby)
  • memory protection among critical and non-critical components
  • message-passing among components via ZeroMQ/MessagePack/Protobuf
  • process/priority management and dependency tracking
  • online parameter configuration usable for in-flight parameter updates
  • SSH based user interfaces for parameters, calibration, ...
  • blackbox functionality to log sensor values at each control step to sdcard
  • sensor data replay capabilitiy for offline PC-based optimization, filter tuning, ...
  • quick integration of new hardware through Linux HAL
  • platform-neutral code without low-level interrupt and timer programming

What's different compared to other Approaches?

The three main factors that make PenguPilot based systems different, compared to microcontroller-based autopilots, are the

  • Linux operating system, the
  • powerful underlying computer-on-module (COM), and
  • PenguPilot's component-based software architecture.

These factors generate a lot of possibilities and benefits for UAV software development, summarized as follows:

  • Powerful Hardware and OS:

    • no microcontroller-like flash/RAM memory restrictions
    • high memory bandwidth allows to log every sensor value per control step
    • memory protection for improved task safety
    • USB host support (Cameras, WiFi and UMTS sticks, FTDI's, ...)
    • symmetric multi-processing (e.g. ODROID U3)
  • Advanced Programming Possibilities:

    • high-level programming languages and libraries (Bash, Python/numpy)
    • rich networking and routing functionality
    • file system abstractions instead of raw memory access
    • debugging via GDB and code profiling without extra effort
    • myriads of open source device drivers and software libraries
  • Advanced Field Software Development:

    • software development on the UAV via SSH from virtually any device
    • native source code compilation (no cross-compiler required)
    • on-device software version control via Git

Filesystem Contents

Flight Infrastructure:

  • autopilot: automatic flight code with/without remote control based safery
  • i2c_sensors: ready gyro, acc, mag, baro, and ultrasonic sensors
  • gyro_cal: gyroscope calibration
  • acc_cal: accelerometer calibration
  • mag_adc_cal: magnetometer calibration
  • cmc: current magnetometer calibration
  • rs_ctrl: rotation speed control for stabilizing the UAV
  • rp_ctrl: rotation position control
  • vs_ctrl: vertical speed control using barometer
  • vp_ctrl: vertical position control using barometer/ultrasonic/elevation map
  • hs_ctrl: horizontal speed control
  • hp_ctrl: horizontal position control
  • battmon: battery monitor; warns the user when the battery is low
  • gpsp: gps publisher, similar to gpsd but much simpler; uses NMEALib
  • remote: remote control channels publisher
  • rc_cal: remote control channel calibration service
  • geomag: subscribes to gps position and date/time; publishes magnetic declination in degrees
  • elevmap: subscribes to gps position; publishes SRTM3 elevation data
  • ads1x15: Raspberry PI I2C ADC voltage/current publisher
  • arduino: ODROID U3 Arduino R/C, ADC voltage/current publisher; reads from ttySAC0
  • twl4030_madc: Gumstix Overo ADC voltage/current publisher

Support Infrastructure:

Additional Features:

  • aircomm: encrypted aerial communication daemon, using NRF24L01+
  • display: shows battery, mem, cpu, satellite status via I2C SSD1307 128x64 display from Adafruit
  • wifi_sensor: publishes wireless network data acquired via iwlist
  • wifi_loc: combines gps measurements and wifi scan results and publishes it

Build System and Environment:

Software Dependencies:

  • Gentoo: app-admin/sudo app-misc/screen dev-lang/python dev-lang/swig dev-libs/glib dev-libs/libyaml dev-libs/msgpack dev-libs/protobuf dev-libs/protobuf-c dev-python/imaging dev-python/msgpack dev-python/numpy dev-python/psutil dev-python/python-daemon dev-python/pyyaml dev-python/pyzmq dev-util/scons sys-power/cpufrequtils dev-python/pyproj sci-libs/gdal
  • Ubuntu: realpath scons swig python-msgpack protobuf-compiler python-protobuf libmsgpack-dev libprotobuf-dev python-yaml protobuf-c-compiler libprotobuf-c0-dev libzmq-dev python-zmq libyaml-dev libglib2.0-dev python-daemon python-dev

Service Dependencies

The service dependencies of PenguPilot are depicted in the figure below:

Services Dependency Graph

Services indicated in yellow are platform-specific, as specified in file config/services.yaml.

Example UAV System

Here's an example of a Gumstix Overo Air based PenguCopter with GPS receiver and I2C OLED display:

PenguCopter

PenguCopter Video

Flying Penguins from BBC :)

About

GNU/Linux based Multi-Rotor UAV Autopilot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.