The growing interest in identifying and tracking aerial objects, particularly those classified as unidentified flying objects (UFOs) or unmanned aerial vehicles (UAVs), has inspired individuals and organizations to explore innovative methods for sky surveillance. One practical approach involves adapting motorized telescopes with RS232 ports and USB cameras to track and record moving objects in the sky. Using a Debian Linux-powered laptop, this setup offers a robust and affordable solution for monitoring, documenting and analyzing aerial phenomena. The ultimate goal of such efforts is to provide actionable evidence for Freedom of Information Act (FOIA) requests to agencies like the Federal Aviation Administration (FAA), aiding in the determination of these objects’ origins.
The first step in this process involves configuring the telescope’s RS232 port to communicate with the laptop, ensuring smooth motorized control. Software such as INDI and OpenCV enables precise adjustments to follow objects that do not adhere to celestial coordinates, such as airplanes or fast-moving UAVs. Unlike traditional telescope tracking, which relies on star maps and constellations, this system uses real-time video feedback from a USB camera to guide the telescope based on the object’s motion. This shift from celestial to dynamic tracking makes it possible to document aerial objects in transit, often with irregular or unexpected flight paths.
The integration of OpenCV, a powerful open-source library for computer vision, enables real-time detection and tracking of moving objects based on video input. By translating pixel movement into altitude and azimuth adjustments, the telescope can maintain focus on the target object. This innovative approach provides high-resolution footage, critical for analyzing object behavior, speed and trajectory. Additionally, the recorded footage can serve as evidence when filing FOIA requests with the FAA or other agencies, demanding records of radar detections, flight plans, or pilot observations that might explain the object’s origin.
Documenting aerial phenomena through telescope tracking serves a dual purpose: it contributes to transparency in airspace management and fosters public understanding of UFO sightings. With the rising number of unidentified aerial object reports, having reliable, independently gathered data helps ensure government accountability. When used in tandem with FOIA requests, this evidence can pressure agencies to release records that would otherwise remain classified or overlooked. By starting with the FAA and expanding to other agencies, this method builds a case for greater disclosure of unexplained aerial events.
The combination of technology, public engagement and legal advocacy through FOIA requests underscores the importance of documenting aerial objects systematically. Whether for scientific inquiry or public awareness, this approach empowers individuals to play an active role in uncovering the mysteries of the skies. By utilizing accessible tools and open-source software, the effort to identify unidentified objects transitions from speculative to methodical, providing a foundation for greater understanding and accountability.
Updated Guide for Setting up a Telescope to Follow Aerial Objects (e.g., Airplanes)
[The following is yet to be tested. This article will be updated later to reflect any important changes to reach my goal of Telescope video autonomously following moving objects in the sky, until the 9v battery dies.]
1. Prerequisites
– Software Requirements:
– INDI server and drivers (indi-bin, indi-full)
– KStars/Ekos (optional for a graphical interface)
– Minicom (for testing RS232 communication)
– GPhoto (if the USB camera supports it)
– OpenCV (optional, for real-time object detection and tracking)
– ffmpeg (for recording)
– Hardware Requirements:
– Laptop with Debian Linux.
– Motorized Meade Telescope with RS232 connectivity.
– USB camera mounted on the telescope.
– USB-to-RS232 adapter (if no native RS232 port is available).
2. Install Additional Software for Object Tracking
– Install OpenCV:
sudo apt install python3-opencv
– Install Pylon (if your camera supports it):
sudo apt install pylon
3. Connect the Telescope and Camera
– RS232 Setup:
– Connect the telescope’s RS232 port to the laptop using a compatible cable.
– Check the serial port:
dmesg | grep tty
– Note the device (e.g., /dev/ttyUSB0).
– Camera Setup:
– Connect the USB camera to the laptop.
– Verify the device is detected:
lsusb
– The camera will likely appear as /dev/video0.
4. Test Telescope RS232 Communication
– Use Minicom to confirm the telescope responds to LX200 commands:
minicom -D /dev/ttyUSB0 -b 9600
– Example commands:
– #:RAHH:MM:SS# – Set Right Ascension (RA).
– #:DecDD:MM:SS# – Set Declination (DEC).
– #:MS# – Slew to the specified coordinates.
5. Real-Time Object Tracking Setup
Since airplanes do not follow celestial coordinates, rely on video-based tracking to guide the telescope.
Option 1: OpenCV-Based Tracking
1. Capture Video from the USB Camera:
Use OpenCV to process the camera feed in real time.
Python Script (track_airplane.py):
import cv2
import serial
ser = serial.Serial(‘/dev/ttyUSB0’, 9600)
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_bound = (0, 100, 100)
upper_bound = (10, 255, 255)
mask = cv2.inRange(hsv, lower_bound, upper_bound)
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
if contours:
c = max(contours, key=cv2.contourArea)
x, y, w, h = cv2.boundingRect(c)
cx, cy = x + w//2, y + h//2
ra_command = f”#:RA{cx}#”
dec_command = f”#:Dec{cy}#”
ser.write(ra_command.encode())
ser.write(dec_command.encode())
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow(“Tracking”, frame)
if cv2.waitKey(1) & 0xFF == ord(‘q’):
break
cap.release()
cv2.destroyAllWindows()
2. Run the Tracking Script:
Save the script and run it:
python3 track_airplane.py
Option 2: INDI Server with Tracking Software
1. Start the INDI server with the telescope driver:
indiserver indi_lx200generic indi_v4l2_ccd
2. Use guiding tools like Ekos or PHD2 Guiding to follow objects.
– Add a “custom object” by manually entering azimuth/elevation values.
– Use the guide module to track the object based on live camera feedback.
6. Adjust for Aerial Motion
– Coordinate System:
Airplanes don’t use RA/DEC coordinates; instead, use alt-azimuth (Alt/Az). Use software to translate pixel movement from the camera feed into Alt/Az coordinates and send commands to the telescope.
– Example Alt/Az command (LX200 protocol):
#:SzAzimuth#
#:SaAltitude#
#:MS# (to slew).
7. Record Content
– Use ffmpeg to record the video feed:
ffmpeg -f v4l2 -i /dev/video0 -r 30 -q:v 2 output.mp4
8. Automate the Workflow
Create a startup script:
#!/bin/bash
indiserver indi_lx200generic indi_v4l2_ccd &
sleep 5
python3 track_airplane.py &
Save as start_telescope.sh, make it executable and run:
chmod +x start_telescope.sh
./start_telescope.sh
9. Fine-Tuning
– Test tracking with slow-moving aerial objects like drones or low-altitude planes before trying high-altitude objects.
– Adjust the camera’s frame rate and detection parameters to improve accuracy.
– Use image filters or AI models for better object detection and noise reduction.
This approach ensures the telescope can autonomously follow airplanes or other moving objects without relying on celestial references.
The guide was generated with some aid using OpenAI ChatGPT4o model.
Troubleshooting:
1. Out of focus / blurred / smudge: [ SOLVED 2024/12/17 : Film on window removed. ]
Currently, this is the best focus I can get. Wondering if issue is a dirty mirror or some optics missing from the setup.
Here is code snippet example for montiring all the COM ports on machine for input upstream from the telescope computer controller:
#!/bin/bash # Check if user has root privileges if [[ $EUID -ne 0 ]]; then echo "This script must be run as root." exit 1 fi # Prompt the user to specify a ttyS# number read -p "Enter the ttyS# number (0-3) to monitor: " tty_number # Validate the input if ! [[ "$tty_number" =~ ^[0-3]$ ]]; then echo "Invalid input. Please enter a number between 0 and 3." exit 1 fi # Construct the port name port="/dev/ttyS$tty_number" # Check if the specified port exists if [ ! -e "$port" ]; then echo "The specified port $port does not exist." exit 1 fi # Display the port being monitored echo "Monitoring the serial port: $port" # Define a function to detect signal commands is_signal_command() { local input="$1" # Customize this pattern to match your signal commands [[ "$input" =~ ^SIGNAL:[A-Za-z0-9_]+$ ]] } # Configure the port stty -F "$port" 9600 cs8 -cstopb -parenb 2>/dev/null || { echo "Error configuring $port. Exiting..." exit 1 } # Monitor the specified port { echo "Listening on $port..." while true; do if read -r line < "$port"; then if is_signal_command "$line"; then echo "[Signal Detected on $port] $line" fi else echo "Error reading from $port. Exiting..." break fi done } & # Capture the PID of the background process pid=$! # Gracefully handle termination signals trap " echo 'Terminating...'; kill $pid 2>/dev/null exit 0 " SIGINT SIGTERM # Wait for the background process to complete wait $pid