Using Osm-Gps-Map Widget With Vala

Download and extract the latest source from github Make sure you’ve got libgirepository-dev with sudo apt-get install libgirepository-dev Run ./autogen.sh Run ./configure –prefix /usr Run make & sudo make install cd into the src folder Run ‘vapigen –pkg gtk+-3.0 –library OsmGpsMap OsmGpsMap-1.0.gir’. This produces the OsmGpsMap.vapi VAPI file needed to use OsmGpsMap with Vala. Go… Read More »

Estimating Gyro Bias – Calculating Orientation pt5

Estimating Gyroscope Bias MEMs gyroscopes never read zero when they are stationary. There is always a small measurement offset. This gyro bias is often related to temperature, so warming up the gyro with a heat gun will cause the bias to change – sometimes quite dramatically. The most common way to remove gyro bias is… Read More »

Modelling Acceleration – Calculating Orientation pt4

Modelling Acceleration Dynamics The accuracy of an orientation sensing system can generally be improved if the acceleration dynamics of the system can be estimated. Accelerometers are commonly used in orientation sensing systems because they can sense gravity (the down vector). They also measure acceleration due to changes in motion – of course. Modelling acceleration dynamics… Read More »

Magnetometer Calibration – Calculating Orientation pt3

Magnetometer Calibration Calibrating magnetometers is critically important. Without a good mag cal, you’ll get rubbish out of your magnetometers. Fortunately it isn’t that hard to do a basic calibration. If you were to create a scatter plot of your magnetometer readings, it would probably show both hard iron and soft iron errors. An ideal plot… Read More »

Quaternion Formulas

Here’s a collection of quaternion formulas. Quaternions are very useful for orientation sensing, game programming and augmented reality applications. Magnitude Normal Quaternion Conjugate Axis Angle To Quaternion Where the axis is v and the angle is theta Quaternion To Axis Angle Where theta is the angle and v is the axis vector Quaternion From Angular… Read More »

Integrating Gyroscopes – Calculating Orientation pt2

Integrating Gyroscopes Gyroscopes measure angular velocity. As with regular velocity, by multiplying by time you get change in position – a distance. By adding these distances up as you go, you can estimate position. Naturally, every little error will also get added up and eventually you’ll end up with large errors. This is called drift… Read More »

Quaternions And How to Really Use Them

Quaternions are often used in attitude and heading systems to represent orientation. This post describes quaternions and how to use them in orientation and navigation systems. Quaternions If you type ‘quaternion’ into google, it’ll tell you something like this a complex number of the form w + xi + yj + zk, where w, x,… Read More »

IMU Maths – How To Calculate Orientation

IMUs typically contain 9DOF sensors and are used to calculate orientation. Let’s talk about the maths required to get orientation (pitch, roll, yaw) from these sensors. Getting The IMU Maths Library There once was an IMU maths library that I made and it’s been incorporated into quite a few cool projects ( such as this… Read More »

Ninjaskit Keypad Library

I’ve just finished making a groovy little library for button matrix keypads. GitHub Page Matrix keypads are fairly simple to use. They’ve got rows and columns, and each button connects a particular row to a given column. To check if a switch is pressed – let’s say SW1 – you could put a digital high… Read More »

Driving Servos With STM32F103C8T6

PWM Using Timers The STM32F103C8T6 has four hardware timers that can be used to generate PWM signals to drive servos. Ninjaskit has two classes (Pulse1 and Pulse2) that wrap two of the hardware timers to produce PWM on up to four digital pins each. For Pulse1 these pins are PA0, PA1, PA2 and PA3. For… Read More »