Population vs Sample Standard Deviation
The difference between population standard deviation and sample standard deviation boils down to who you’re measuring and how you correct for bias...
Sensor Fusion & Navigation Engineer
Personal website and blog about UAVs, robotics, control systems, navigation, and embedded software engineering.
The difference between population standard deviation and sample standard deviation boils down to who you’re measuring and how you correct for bias...
Navigation at sea was one of history’s greatest intellectual and engineering challenges. For sailors who ventured beyond sight of shore, the ocean...
An inertial navigation system that is perfectly tuned to Earth's geometry will oscillate with a period of 84.4 minutes — a consequence...
A practical reference for converting small angular differences in latitude or longitude into metric distances, with interactive tools and the Haversine formula...
A concise guide to constructing a rotation matrix in SO(3) for coordinate frame transformations, with an interactive visualizer.
“Shopping” for a job is not always a fun process. After a large layoff at my previous employment (a start-up company) in...
A concise reference for horizontal and vertical matrix concatenation in Simulink — covering block behaviour, dimension rules, and worked examples.
If you are using Python for visualizing data, plotly is an awesome open-source library (also, plotly is not limited to Python). This...
The Kalman filter, despite its optimality guarantees under Gaussian assumptions, is susceptible to numerical degradation in practice. This post examines the root...
The repository fdcl-uav/gazebo_uav_control is a basic example for using ROS and Gazebo to position control a quadrotor UAV, using C++. A simple...
This is an extension of the Autonomous Landing of a UAV on a Moving Ship project. Here, a GPS-denied environment is assumed...
This is a quick cheatsheet for git aliases that I use often.
You can a quick snapshot view to your GitHub profile page like the image above. The process is as simple as creating...
PX4 is one of the most widely used open-source autopilot stacks in both academia and industry. This post walks through its layered...
This post tries to explain the basics of a trajectory that tries to limit the acceleration or the jerk. If you are...
If you are visualizing anything with Python, Matplotlib is probably going to be an essential tool. While the library provides really great...
For an autonomous UAV, or for any aerial vehicle in general, one of the most safety critical operations is the landing. This...
Copy elision in C++ is a powerful optimization technique where the compiler eliminates unnecessary copying or moving of objects. It’s like the...
These two forces often get tangled up in physics discussions, especially when dealing with circular motion. Let’s break them down clearly:
A technical treatment of the Special Orthogonal Group SO(3): its algebraic structure, topological properties, and practical role in rigid-body attitude representation, with...
The OpenCV library uses rvec and tvec to represent the rotations and translations, respectively. When you are learning OpenCV, this could be...
A detailed walkthrough of the error-state EKF with SO(3) attitude, ECEF-frame INS propagation, and GPS PVT corrections — including an interactive visualization...
A comparative treatment of the standard, extended, unscented, and particle filter families — covering their theoretical foundations, computational properties, and practical trade-offs....
A UAV is an inherently unstable system, which is similar to an inverted pendulum. The system has a single directional control input...
A concise reference for transforming a covariance matrix from one coordinate frame to another via a rotation matrix, with derivation and worked...
Loop nest optimization is a powerful technique used in compiler design and performance engineering to improve the efficiency of programs—especially those involving...
Smart pointers in C++ are powerful tools that help manage memory automatically, reducing the risk of memory leaks and dangling pointers. Instead...
When a ship moves on a water surface, we can clearly see a water wake right behind it. Its size and the...
A first-order low-pass filter passes low-frequency signals while attenuating high-frequency noise. This post derives the discrete-time update equation, explains the role of...
An introduction to simple averaging and moving average filters — two foundational techniques for reducing measurement noise — with an interactive comparison....
If you need to download your GitHub repositories, one option you have is to open each of them on GitHub and manually...
A hybrid image is an image that is perceived in one of two different ways, depending on viewing distance. A technique for...
For the final year undergrad group project at the Mechanical Engineering Department at the University of Peradeniya, I was involved in an...
As a third year undergrad student of the Mechanical Engineering Department at the University of Peradeniya, we are required to an individual...