Drone compass calibration

From Rsewiki
(Difference between revisions)
Jump to: navigation, search
(Rotate drone and save result)
 
(7 intermediate revisions by one user not shown)
Line 1: Line 1:
back to [[Drone control]
+
back to [[Drone control]]
  
 
== Calibration setup ==
 
== Calibration setup ==
Line 8: Line 8:
  
 
Run the calibration app - in the bin directory for Linux, or here for other platforms https://www.pjrc.com/store/prop_shield.html  
 
Run the calibration app - in the bin directory for Linux, or here for other platforms https://www.pjrc.com/store/prop_shield.html  
 +
 +
=== Compass calibration app ===
 +
 +
If on Linux go to
 +
 +
cd mobotware/drone_ctrl/trunk/CalibrateSensors
 +
./MotionCal
  
 
[[File:compass-calibrate-app.png | 400px]]
 
[[File:compass-calibrate-app.png | 400px]]
  
 
Calibration app - with a fair set of values.
 
Calibration app - with a fair set of values.
 +
Runs directly on Ubuntu 18.04, for Ubuntu 20.04 see below
 +
 +
==== Ubuntu 20.04 ====
 +
 +
The calibration app is rather old, so it asks for libpng12.so.0.
 +
 +
I managed to install it through package nsight-systems
 +
 +
sudo apt install nsight-systems
 +
cd /usr/lib/x86_64-linux-gnu
 +
sudo ln -s ../nsight-systems/Host-x86_64/libpng12.so.0
 +
 +
Another option is to get the source code, but the Makefile asks for wxwidgets/3.0.2.gtk2-opengl/bin/wx-config, which I couldn't find.
 +
 +
== Arduino code for compas calibration ==
 +
 +
In arduino open the calibration firmware in mobotware/drone_ctrl/trunk/CalibrateSensors
 +
 +
Run the arduino version, where you have installed the Teensyduino and open the CalibrateSensors.ino
 +
 +
In my case
 +
 +
cd mobotware/drone_ctrl/trunk/CalibrateSensors
 +
/home/chr/Downloads/arduino-1.8.13/arduino
 +
 +
* Select board Teensy3.5
 +
* Compile
 +
* upload (to /dev/ttyACM0 or the port to which the Teensy is connected)
  
 
[[File:arduino-compass-calibrate.png | 400px]]
 
[[File:arduino-compass-calibrate.png | 400px]]
  
 
Arduino with sensor calibration code. Sending raw data to app and receive the calibration data when send is pressed on the calibration app.
 
Arduino with sensor calibration code. Sending raw data to app and receive the calibration data when send is pressed on the calibration app.
 +
 +
== Rotate drone and save result ==
 +
 +
In the Calibration app, clear the buffer when you are ready to rotate the drome in all directions.
 +
 +
* press 'clear'
 +
 +
Rotate the drone in all directions, until you get a sphere or an ellipsoid as in the figure above.
 +
 +
I got a 'Fit error' of 2.3% and gaps of just 1.1% - seems to be OK, in the above figure it is even lower.
 +
 +
When it looks good, upload to the Teensy by "Send Cal"
 +
 +
* press 'send Cal'
 +
 +
And the reply should be a green tick-mark as shown.
 +
 +
It is then saved in the Teensy flash (addresses below the first 512 bytes, that is not used by the drone firmware).
 +
 +
== Reload drone control firmware ==
 +
 +
Go back to the drone_ctrl directory and reload
 +
 +
cd mobotware/drone_ctrl/trunk/drone_ctrl
 +
make
 +
make upload
 +
 +
The new compas calibration should be in effect.

Latest revision as of 13:17, 2 December 2020

back to Drone control

Contents

[edit] Calibration setup

Once the controller is mounted on the drone, it is time to calibrate the compass.

Upload the calibration firmware to the Teensy (using the Arduino GUI)

Run the calibration app - in the bin directory for Linux, or here for other platforms https://www.pjrc.com/store/prop_shield.html

[edit] Compass calibration app

If on Linux go to

cd mobotware/drone_ctrl/trunk/CalibrateSensors
./MotionCal

Compass-calibrate-app.png

Calibration app - with a fair set of values. Runs directly on Ubuntu 18.04, for Ubuntu 20.04 see below

[edit] Ubuntu 20.04

The calibration app is rather old, so it asks for libpng12.so.0.

I managed to install it through package nsight-systems

sudo apt install nsight-systems
cd /usr/lib/x86_64-linux-gnu
sudo ln -s ../nsight-systems/Host-x86_64/libpng12.so.0

Another option is to get the source code, but the Makefile asks for wxwidgets/3.0.2.gtk2-opengl/bin/wx-config, which I couldn't find.

[edit] Arduino code for compas calibration

In arduino open the calibration firmware in mobotware/drone_ctrl/trunk/CalibrateSensors

Run the arduino version, where you have installed the Teensyduino and open the CalibrateSensors.ino

In my case

cd mobotware/drone_ctrl/trunk/CalibrateSensors
/home/chr/Downloads/arduino-1.8.13/arduino 
  • Select board Teensy3.5
  • Compile
  • upload (to /dev/ttyACM0 or the port to which the Teensy is connected)

Arduino-compass-calibrate.png

Arduino with sensor calibration code. Sending raw data to app and receive the calibration data when send is pressed on the calibration app.

[edit] Rotate drone and save result

In the Calibration app, clear the buffer when you are ready to rotate the drome in all directions.

  • press 'clear'

Rotate the drone in all directions, until you get a sphere or an ellipsoid as in the figure above.

I got a 'Fit error' of 2.3% and gaps of just 1.1% - seems to be OK, in the above figure it is even lower.

When it looks good, upload to the Teensy by "Send Cal"

  • press 'send Cal'

And the reply should be a green tick-mark as shown.

It is then saved in the Teensy flash (addresses below the first 512 bytes, that is not used by the drone firmware).

[edit] Reload drone control firmware

Go back to the drone_ctrl directory and reload

cd mobotware/drone_ctrl/trunk/drone_ctrl
make
make upload

The new compas calibration should be in effect.

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox