A little project to show one use of quaternion, different ways to model a ball on a plate and teach a bit of control theory.
The notation used in this project is q = [q0, q1, q2, q3] = [q0, qv] where q0 = cos(\theta/2) qv = sin(\theta/2)e with e the axis of rotation (with a unit norm)
Will soon be described on the draft of my website.
Clone this repository
Make sure you have all the required python and Ubuntu packages then run:
python3 main.py
-
Quaternion class (easy): Done
-
Pose class (easy): Done
-
Solid class (easy): Done
-
Frame class (medium): Done
-
Frame Manager (medium): Done
-
the graphic side (medium): On going (90%)
- Solids (ball and plate): Done
- Axes: Done
- Improving Classes
-
Ball plate dynamics equation: Not started
-
Adding C\Cpp externals for faster computation: Not started
-
Tests: On going
- frames (100%)
- quaternion (0%)
- pose (0%)
- solids (0%)
- Python 3.5
- Numpy (developed with V1.10.4)
- PyQt4 (developed with V4.11.4)
- Installed using Homebrew on Mac
- matplolib (developed with V1.5.1)
- Not required anymore (switched to OpenGl for visual representation)
- PyOpenGL (developed with V3.1.0)
The first four are contained in the Anaconda Python 3.5 distribution.
The last one can be obtained by using pip:
pip install numpy PyOpenGL PyOpenGL_accelerate
sudo apt-get install build-essential libgl1-mesa-dev libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
sudo apt-get install python3-pyqt4