Crazyflie 2 with GPS
Posted: Thu Apr 14, 2016 1:43 am
Hi,
This week I've been experimenting with the latest crazyflie-firmware and crazyflie-client-python installing both from source code using releases 2016-02 Feb 17 along with adding GPS to the crazyflie platform.
The PC client has been installed in Windows 7 64-bit after pre-loading Python 3.4. This PC client is also used to update the crazyflie firmware. While posting this message, I now see PC client 2016.4 Apr 13 was released today and I will try this out later.
Also, I've installed in Windows 7 64-bit the VMware Player with Bitcraze VM 0.6 and VM 0.8 in order to build the stm and nrf firmware from source code.
GPS was added to the crazyflie using the Ublox Max M8C Pico Breakout with chip antenna and mounted approximately 6 cm above the control board. Currently, the combined total weight is 32 g and I hope to reduce this somewhat later. See attached image of the setup.
Software supporting the GPS receiver was adopted from my earlier development work using Python 2,7 with Folium Leaflet javascript. This prior work used 2015 releases of crazyflie-firmware and PC client for the baseline. One of the many benefits of the newer 2016 PC client releases is it is simpler to create maps and update the flight position of the Crazyflie. Specifically this made modifications to the GpsTab.py module much easier. An image of a working PC client GpsTab map that was being updated by the Crazyflie 2 while running in GPS 3D fix and WAAS (DGPS) correction mode is shown The small red circle shows the starting or “Home Position” and the blue circle shows the current latitude & longitude “GPS Fix” position of the Crazyflie.
One of the challenging issues with the Ublox GPS receiver has been it's weak ground plane potential and it's susceptibility to electromagnetic interference when mounted in close proximity to the Crazyflie electronics. The chip antenna on the Pico breakout board favors size and weight for less favorable lower reception sensitivity performance (antenna radiation pattern gain, phase and directivity). The Crazyflie itself emanates a certain level of radiated and conducted emissions that can interfere with the GPS antenna's ability to receive satellite signals. During the GPS satellite signal acquisition phase, the charger cannot be used and the Crazyflie control board when turned off causes less of a problem. Once sufficient satellites have been acquired, tracking the satellites in the receiver is made easier. When a 3D Fix is achieved , the Crazyflie electronics can safely be turned on to commence flight operations.
The Crazyflie stabilizer firmware has been modified to include position hold capability along side the existing altitude hold feature. In order to take advantage of latitude and longitude position updates, the Crazyflie control board's magnetometer sensor (3-axis magnetic compass) is being used to provide the reference for the Earth's orientation. Compensation for magnetic inclination (True North correction) and Crazyflie platform attitude compensation (roll-pitch orientation corrections) have been fully implemented. In addition, compass calibration has been implemented. My experimental development with position hold was last left off at the point of flight testing and tuning the PID controllers to hopefully achieve a stable position hold capability.
The reliability of the crazyradio performance (sending data packets at possibly higher transfer rates and with fewer lost or delayed packets) is something I'm interested in. I don't know if the recent software releases/updates incorporate any improvements in this area.
This week I've been experimenting with the latest crazyflie-firmware and crazyflie-client-python installing both from source code using releases 2016-02 Feb 17 along with adding GPS to the crazyflie platform.
The PC client has been installed in Windows 7 64-bit after pre-loading Python 3.4. This PC client is also used to update the crazyflie firmware. While posting this message, I now see PC client 2016.4 Apr 13 was released today and I will try this out later.
Also, I've installed in Windows 7 64-bit the VMware Player with Bitcraze VM 0.6 and VM 0.8 in order to build the stm and nrf firmware from source code.
GPS was added to the crazyflie using the Ublox Max M8C Pico Breakout with chip antenna and mounted approximately 6 cm above the control board. Currently, the combined total weight is 32 g and I hope to reduce this somewhat later. See attached image of the setup.
Software supporting the GPS receiver was adopted from my earlier development work using Python 2,7 with Folium Leaflet javascript. This prior work used 2015 releases of crazyflie-firmware and PC client for the baseline. One of the many benefits of the newer 2016 PC client releases is it is simpler to create maps and update the flight position of the Crazyflie. Specifically this made modifications to the GpsTab.py module much easier. An image of a working PC client GpsTab map that was being updated by the Crazyflie 2 while running in GPS 3D fix and WAAS (DGPS) correction mode is shown The small red circle shows the starting or “Home Position” and the blue circle shows the current latitude & longitude “GPS Fix” position of the Crazyflie.
One of the challenging issues with the Ublox GPS receiver has been it's weak ground plane potential and it's susceptibility to electromagnetic interference when mounted in close proximity to the Crazyflie electronics. The chip antenna on the Pico breakout board favors size and weight for less favorable lower reception sensitivity performance (antenna radiation pattern gain, phase and directivity). The Crazyflie itself emanates a certain level of radiated and conducted emissions that can interfere with the GPS antenna's ability to receive satellite signals. During the GPS satellite signal acquisition phase, the charger cannot be used and the Crazyflie control board when turned off causes less of a problem. Once sufficient satellites have been acquired, tracking the satellites in the receiver is made easier. When a 3D Fix is achieved , the Crazyflie electronics can safely be turned on to commence flight operations.
The Crazyflie stabilizer firmware has been modified to include position hold capability along side the existing altitude hold feature. In order to take advantage of latitude and longitude position updates, the Crazyflie control board's magnetometer sensor (3-axis magnetic compass) is being used to provide the reference for the Earth's orientation. Compensation for magnetic inclination (True North correction) and Crazyflie platform attitude compensation (roll-pitch orientation corrections) have been fully implemented. In addition, compass calibration has been implemented. My experimental development with position hold was last left off at the point of flight testing and tuning the PID controllers to hopefully achieve a stable position hold capability.
The reliability of the crazyradio performance (sending data packets at possibly higher transfer rates and with fewer lost or delayed packets) is something I'm interested in. I don't know if the recent software releases/updates incorporate any improvements in this area.