Software considerations

Many posts focus on hardware aspects—camera, motor, lighting, etc.—but far fewer address software aspects.
I think it would be useful to share our experiences on this point.

Capture software should allow the camera or DSLR to:

  • Modify settings
  • Trigger frame capture and saving
    But also, synchronously control the motor, its speed, etc.
  • Advance one frame
  • Forward or backward, etc.

We can consider the following criteria:

  • The hardware of the computer (PC/Mac/Raspberry Pi) and the chosen camera
  • The architecture (stand-alone or client-server)
  • The operating system (Windows, Linux, macOS)
  • Use an existing application or develop a dedicated application
  • For a dedicated application, choose the language and available libraries
  • Portable or camera-specific solution

Firstly, applications based on a Raspberry Pi and the HQ camera are a special case.

Raspberry Pi 4
On the Windows PC: A graphical Python application using Qt
On The Raspberry Pi: A Python application controlling the motor with the PiGPIO library and the Picamera HQ with the picamera library

Raspberry Pi 5
On the PC: A Python Qt application
On the Raspberry Pi: Motor control with an Arduino
Camera control with the picamera2 library based on libcamera
A bit more complicated!

For example, we have my yart project (Pi4) or Manuel’s project (Pi4 and Pi5)

Secondly, for a USB/Wi-Fi camera or a DSLR, here are a few possibilities:

Develop an application with PTP
PTP is theoretically standard, but in reality, each vendor uses specific and poorly documented commands for their device.

Develop an application with the vendor’s SDK
No choice of software architecture or language
Can be complex
Specific and not portable

Use the vendor’s control application
The camera vendor always provides a more or less complete control application.
But how do you integrate motor control?

Using a more universal control application
I see two applications of this type:
Digicamcontrol on Windows
Gphoto2 on Unix
How to integrate motor control

In the end, my two experiences with my Canon EOS 90D on a Windows PC:

A python QT application with:

Remote motor control with pigpio on a Pi4
Capture with the Canon SDK
Works, but there are some difficulties with the Canon SDK

Remote motor control with pigpio on a Pi4
Remote capture with Digicamcontrol
A very good, easy-to-implement solution for cameras supported by Digicamcontrol

1 Like

Very good summary of alternatives @dgalland.
Additional information for consideration.

UVC
Another option some are exploring with… using UVC. Here is a facebook post on a project.
I think UVC has bit-depth limitations… so not my prefered path. But for many it may be sufficient.

Stepper alternatives to Raspberry Pi
My first scanning round was with digicamcontrol and arduino (coded in C). The gate that I used (Canon S400 projector) had a microswitch to detect the end-of-film, so it would stop by itself.

This post also provides an alternative to stepper control with the PICO. Simple USB-serial control of the stepper. @Manuel_Angel developed his own as a workaround to the RPi5 lack of pigpio.

The above adds alternatives to the Canon SDK or Digicamcontrol without RPi pigio. In both cases, the movement/light control is down to a USB wire (Arduino or PICO doing the work).

No QT for me
In the latest project I also made different choices from your analysis, and would like to share why, in case is helpful.
For those who know QT, it is a very powerful option with many advantages… but it is proprietary and the commercial license limits what one can do. It is also heavy for a RPi4.

I instead chose GTK4. The main reason is that it provides memory-to-display with zero copies. Using shared memory allows to present it with less CPU overhead. That is how I can show all the gui components -with the remote VNC overhead- running everything in a RPi 4.


And… it is not proprietary.

Understand in your breakdown the RPi + HQ is a special case, which this last comment falls under.

2 Likes