andre van calster's Posts (16)

Sort by

DIY tracking drone

My Holybro 500 v2 is equipped with a Luxonis OAK-D-Lite camera (depthAI) and a RPi4. A python artificial intelligence (AI) code on the RPi4 detects objects (f.i. persons) using mobilenet ssd. The area of the enclosing object rectangle estimates the distance of the object, while the center determines the yaw of the drone. 2 PID controllers determine the forward speed and yaw of the drone. Once the track switch is on, the drone is controlled in guided mode by the custom python code. This algorithm yields a satisfactory tracking behavior as shown in the video.

Read more…

I have upgraded my quadcopter XJ470 with a Skydroid T12 radio, an OAK-D depthAI stereo camera and a Raspberry Pi 4 companion computer. This configuration enables state-of-the art artificial intelligence drone piloting. The skydroid t12 enables long distance telemetry and video. The OAK-D combines depth measurements and artificial object detection. The RPi 4 has an WiFi access point enabling remote desktop communication by means of VNC. Avoidance python scripts are uploaded to the RPi 4, generating mavlink drone messages controlling the quadcopter. A test video demontrates the new features.

Read more…

DJI TELLO becomes smart

This video demonstrates face tracking using a DJI TELLO drone. By means of the Python DJITELLOPY SDK and the mobilenet ssd artificial intelligence neural network the drone is converted into a smart drone. Tensorflow Lite and Google's Coral usb accelerator enables real time inference.

Read more…

VTOL testflight

Simple testflight of my E-Flite Convergence equipped with a pixracer flight controller complemented with a "sbus to pwm" home-made circuit to extend the number of servo outputs. Flight stack: Ardupilot Quadplane; Flight mode: loiter.

Read more…

By changing the CNN of my previous post CNN (1) into a multi-classification CNN (fly, go left, go right, stop) and adding an appropriate multi-thread python dronekit script, my drone bypasses most of the obstacles encountered at our "Model Club de la Côte de Beauté - MCCB". The YouTube video demonstrates the obstacle avoidance of my drone in loiter flight mode.

Read more…

Recently I started working on convolutional neural networks (cnn) for obstacle avoidance. With the help of "DroNet" from ETH Zurich and the "Deep Learning for Computer Vision" book from Adrian Rosebrock, I managed to build my first cnn algorithm for obstacle avoidance. The cnn module is written in python, using a keras module with tensorflow backend. I included my cnn algorithm in a dronekit script. By sending mavlink distance messages to the flight controller in loiter or altitude hold flight mode, my drone is able to avoid obstacles. A brief description and demonstration of the developed cnn is given in the YouTube video. First results are promising.

Read more…

My XJ470 rebuilt

best viewed with 720p HD settings

This winter I rebuilt my XJ470: added a PiZero with a Picam. This PiZero functions as a companion computer with a python dronekit and a WiFi access point enabling a mavlinkbridge. Hence an android tablet, running Tower, can be connected to this WiFi access point for monitoring and telemetry. Moreover the PiZero-Picam streams video from the multicopter. This new configuration was successfully tested at the Model Club de la Côte de Beauté (MCCB) Charente Maritime (France).

Read more…

comment on complementary filtering

3689648626?profile=original

Complementary filters enable sensor fusion, are easy to implement and eliminate integrating errors from gyro’s or accelerometers. Normally complementary filters are discussed in the frequency domain.  Using simple Python code a 1st order linear complementary filter for determining the quadcopter ground speed was analyzed in the time domain. The results are depicted in the figure shown above.  voff represents the filter output of the accelerometer offset,  acc(n) the filter output  of the accelerometer, vgps(n) the output  of the GPS velocity, vgps,  and v(n) the sensor fusion output of the filter.

It follows from the figure above that the integrating drift of the accelerometer is converted into a constant steady state error.  Moreover this error can be eliminated by deriving the filter output at the start of the quadcopter with GPS input zero, and subtracting this value from the complementary filter output during flight mode. It also follows that the output v(n)  (steady state error corrected) corresponds nicely with the GPS velocity (noise added at simulation) and equals the algebraic sum of the more slowly varying acc(n) and vgps(n) contribution. Output noise is suppressed due to the low pass filtering of vgps.

Although these results confirm the already known features of complementary filtering, it helped me a lot in a better understanding of the basic mechanisms of complementary filtering, especially how a delayed, filtered signal vgps(n) nevertheless results in a correct complementary filter response.

The simulated results are confirmed by actual recorded data from my quadcopter, see figure below. For more details consult my google site.

3689648647?profile=original

Read more…

FPV testflight 3D printed crossfire

I upgraded my 3D printed crossfire with a Boscam transmitter TS351 and a all-in-one monitor RX-LCD5802. The FPV camera is a GoPro Hero 3. Simultaneously a Sparkfun GPS LS23060 was added. This implied adding code for reading, parsing and processing nmea data. I have chosen a complementary filter approach for fusion of accelerometer data and GPS data. I managed to implement the additional code in my DIY flight controller with a 8 bit PSoC 3 from Cypress running at 45 MHz. In order to minimize the magnetic field from the power distribution print, mu-metal shielding was applied. At the moment the code is being debugged and tested for GPS position hold applications. Speed & position detection is ok. Magnetic interference is reasonable. Flight tests are scheduled in the near future. In the mean time test FPV flights were carried out (see video), showing the Boscam-GoPro setup works satisfactory.

Read more…

2nd (3d printed) quadcopter

3689594578?profile=original

Having a background in electronics I wanted to build my own flightcontroller. At the same time I decided to build a new quadcopter. Having bought a 3d printer from Ultimaker, I printed a quadcopter frame inspired on the original Crossfire design from MickeyB (thingiverse).

printed part

3689594820?profile=originalInspired by the ArduCopter, KK2.0 and AeroQuad firmware I wrote my own code using the PSOC3 (Programmable System on Chip) platform form Cypress. The custom flightcontroller circuit board was fabricated using Elektor printservice.

assembled flightcontroller

3689594882?profile=originalThe 9DOF sensor stick of Sparkfun is mounted on top of circuit.

topview mounted flightcontroller

3689594842?profile=originalA cheap Nokia 5110 LCD is used as a simple flightcontroller UI. A RS232 interface links the flightcontroller to the PC in order to load the calculated/calibrated offsets and PID parameters using a simple python script.

python quadcopter pc ui

3689594600?profile=original3d graph of a calibrated magnetometer sensor

3689594955?profile=original

Finally I tweeked a little bit the FrSky Taranis transmitter in order to display the pitch, roll and heading calculated by the flightcontroller on the telemetry page.

telemetry screen Taranis

3689595022?profile=originalThe pitch is dispalyed as T1 (temperature1), the roll as T2 (temperature2) and the heading as Curr (current).

At present first testflights are carried out.

Read more…