I have rebuilt my balancing robot. The reason was that I wanted to fit more sensors and functions, and there where no space for that in the previous design. I have also rewritten all the code and replaced the Kalman-filter I previously used for angle estimation with a complimentary filter instead. This in combination with a higher center of mass have made the robot a lot more stable and tolerant against pushes and other disturbances.
A Kalman-filter should work better than a complimentary filter, but the Kalman-filter is a lot more complicated. Since I do not understand exactly how the Kalman-filter worked, it was to hard for my to tune it properly. The estimated angle of the robot was reacting to slow. My current solution with a complimentary filter is much more responsive. That allowed me to increase the parameters of my PID regulators to make the robot more stable.
This video shows the first few flights of a new balsa airplane that I have designed and built during this winter.
The airplane has a wingspan of 90 cm and weighs around 700 grams including battery. I use standard RC equipment, no special functions or microprocessors in this one. I built this airplane just to havs something unique and fun to fly with. The plane is built using traditional building techniques. It is built out of balsa and covered using Oracover.
This is a demo I made using C++, OpenGL and GLFW. It is a proceduraly generated landscape in which the user can “walk around”. The terrain is generated using Simplex-noise and is made up of chunks that are loaded and removed as the user walks over the terrain. It is possible to walk infinity (or at least very very far) in one direction without reaching any edge or crashing the program. The chunks are rendered in different levels of detail depending on the distance from the camera to improve performance.
This is a project I made together with two others students: Mikael Lindhe and Eleonora Petersson. This project was made in the course “Modelling Project TNM085” at Linköping University. The video demonstrates two pieces of cloth that are simulated in two different ways.
The first cloth is represented with particles that are connected with each other using constraints. This mean that whenever the cloth moves, the distances between the particles are corrected to make the cloth retain it’s shape. This is the “usual” method for simulating cloth in computer games.
The second cloth is simulated using a method where the particles are connected with each other using springs. When the cloth moves, forces are applied to all particles to correct them to there original distances from each other. This method proved to be more computationally heavy and less stable then the first method.
I was mainly working on the graphics part for this project, while the others focused more on the simulation part. It was the first time I developed a basic rendering system for modern OpenGL in C++ from scratch. It was also the first time I made a program that updates vertex buffer data for an object every frame.
This video shows some new IR distance sensors I have installed on my self balancing robot robot. The IR sensors are short range (5-10 cm) and should prevent the robot from running into things that the main ultrasonic sensors miss. The video also shows two servos I have installed under the robot. They are not connected yet, but they will later be used to raise the robot up again if it falls over.
Here is a video of me testing my latest DIY home built mini quadcopter at a local indoor flying meetup. This quadcopter is built entirely out of wood and cowered using Oracover. It is strong and lightweight, designed for fast and agile LOS flying outdoors.
I made a new videon showing how I decorate a small island to demonstrate the new improved world editor mode. Now the user can place any abject as well as moving and rotating them. Objects and also be deleted. The world can be saved to a file from the editor. At startup, the program looks for a save file in the same folder as the executable file, if no save file is found, a default file is loaded. The video also shows some post processing effects I have implemented.