Skip to content

NaturalHistoryMuseum/GERTIE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GERTIE

Grouped Electronic Real-time Imaging Environment

An 8-camera distributed Raspberry Pi system for high-throughput specimen digitisation, developed at the Natural History Museum London.

GERTIE captures synchronised 12.3 MP images from 8 networked cameras simultaneously, providing real-time video preview and centralised control through a Qt GUI. Built as a 3,000 GBP open-source alternative to 30,000 GBP commercial imaging systems.


πŸš€ Quick Start

New to GERTIE? Start here:

  1. INSTALL.md β€” Complete deployment guide (USB setup, control1 configuration, node deployment)
  2. Project Structure β€” How the codebase is organised
  3. Keyboard shortcuts β€” Control the GUI

For development:

License: MIT (see LICENSE)


πŸ“š Table of Contents


System Architecture

                    +------------------+
                    |    control1      |
                    |  (Qt GUI host)   |
                    |  + rep8 (local)  |
                    +--------+---------+
                             |
                     Gigabit PoE Switch
                             |
        +------+------+------+------+------+------+
        |      |      |      |      |      |      |
      rep1   rep2   rep3   rep4   rep5   rep6   rep7
      IMX477 IMX477 IMX477 IMX477 IMX477 IMX477 IMX477

Each remote node (rep1-rep7) runs a Python camera service communicating with control1 over TCP. Rep8 is a local camera on the control node. The entire cluster operates air-gapped with no internet connectivity.

Features

  • Real-time 8-stream video at 16+ FPS in grid view, 30 FPS in exclusive single-camera view
  • Synchronised capture across all cameras with sub-second latency
  • Per-camera controls: exposure, white balance, saturation, crop, with AE/WB lock indicators
  • Guard-Then-Act safety: 2-click confirmation for destructive operations (AE/WB clear)
  • Gallery with automatic refresh after batch capture
  • Context-sensitive shortcuts bar adapting to grid vs exclusive mode
  • Per-tile overflow menus for camera restart/reboot
  • DNG raw capture support
  • Automated file naming: device ID + timestamp + structured folder hierarchy
  • Museum workflow compatible: BardecodeFiler and EMu ingestion support

Tech Stack

Component Technology
GUI Python, Qt/PySide6
Networking Custom TCP controller/node protocol
Camera API libcamera / PiCamera2
Sensors IMX477 (HQ Camera), IMX296 (Global Shutter)
Services systemd units with auto-restart
Hardware Raspberry Pi 4/5, Gigabit PoE
Deployment rsync + Bash verification scripts
CAD Autodesk Fusion 360, FDM 3D printing

Performance

  • System overhead reduced from 40% to under 10% through async streaming optimisation
  • 8 concurrent camera streams at 16+ FPS (grid), 30 FPS (exclusive)
  • 12.3 MP capture (4056x3040) per camera, full sensor utilisation
  • Camera footprint reduced to 15 cm through custom 3D-printed mounts
  • User testing: 5 testers, 255 specimens, 3,418 files, 22.51 GB

Deployment

GERTIE operates air-gapped. Deployment follows a USB transfer pipeline:

MacBook (development) --> USB drive --> control1 (production)
                                    --> sync_to_nodes.sh --> rep1-rep7

Pre-deployment verification: bash verify.sh (5 automated checks).

Network Requirements

IMPORTANT: GERTIE uses UDP-based messaging for video streaming and commands. This design is suitable for local network (LAN) deployment only.

Suitable Deployments

  • βœ… Museum/lab networks (controlled environment)
  • βœ… Single subnet, <100m distance
  • βœ… Dedicated Ethernet (not shared with heavy traffic)
  • βœ… Packet loss <1%

Not Suitable For

  • ❌ Wide Area Network (WAN) or internet-facing
  • ❌ Wireless networks (unless <50m line-of-sight)
  • ❌ Congested shared networks
  • ❌ Cloud-hosted controllers

Specifications

Minimum: 100 Mbps Ethernet switch, latency <50ms, CAT5e+ cabling
Recommended: 1 Gbps switch, latency <10ms, CAT6+ cabling

For complete messaging protocol details, see MESSAGING_PROTOCOL.md.

Project Status

  • Phase A: 10/10 complete (v2 feature ports)
  • Phase B: 5/7 complete (interaction refinements)
  • Under consideration for national deployment across partner institutions

Keyboard Shortcuts

Key Action
Space / C Capture All
1-8 Toggle exclusive view
Esc Grid view (all cameras)
R Restart camera
S Settings
G Gallery
D DNG toggle
F Focus mode
Q Quit

Project Structure

GERTIE_Qt/
β”œβ”€β”€ src/              # Qt GUI application (PySide6)
β”œβ”€β”€ node/             # Remote camera node code (synced to rep1-rep7)
β”œβ”€β”€ shared/           # Shared configuration and utilities
β”œβ”€β”€ local_camera_node.py  # Local rep8 camera handler (systemd service)
β”œβ”€β”€ tools/            # Utilities (deployment, testing, etc.)
β”œβ”€β”€ docs/             # Architecture and reference documentation
└── INSTALL.md        # Complete deployment guide

Background

GERTIE was built from scratch by a single developer with no prior programming background, progressing from zero Python experience to a deployed distributed system in 18 months. The project encompasses hardware design (Fusion 360 + 3D printing), software development (Python/Qt), network protocol design (TCP), service management (systemd), and deployment automation (Bash/rsync).

Contributing

Contributions welcome. Please:

  1. Review the Project Structure to understand the codebase
  2. Check GitHub Issues for known issues
  3. Read CONTRIBUTING.md for development guidelines
  4. Submit a pull request with clear commit messages

For questions about deployment or architecture, start with INSTALL.md or open an issue.

License

MIT License β€” See LICENSE for full text.

Copyright (c) 2024-2026 Natural History Museum London

GERTIE is provided as-is for research, educational, and commercial use. Please cite this work if you use it:

Crane, A. (2026). GERTIE: Multi-camera specimen digitisation system.
Natural History Museum London. Available at:
https://github.com/andrc2/GERTIE-Qt

About

An 8-node distributed Raspberry Pi imaging array for pinned insect specimen digitisation.

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors