Hydroptere real-time model
The Hydropter is a sailing boat using hydrofoils (lifting surfaces operating in liquids). The hydrofoils generate enough lift to carry the boat and balance the forces produced by the sails at a level of drag far inferior to those obtained with classical hulls : the boat flies on the water. The speeds reached by the hydropter exceed largely those obtained with standard sailing boats. The main drawback of this type of system is the lack of stability with respect to waves and the difficult steering.
The model for the hydroptere in its current state is a stand alone application written in cross-platform C/C++ code.
The model is first generated though symbolic calculations in MATLAB and then partially automatically translated to C/C++ by a custom programm. The rest of the programm consisting mainly in the numerical integration of the drift vector field, the real-time 3D display and the user input handling is hand written using dedicated libraries.
The model runs now in real-time and is controllable via joystick or keybord in the same manner as a “gaming” flight simulator. So it is possible to get something of the look and feel of piloting the actual machine.
The next steps in the project will probably involve:
- improved foil model
- hull model
- controller for the machine
Program binaries and videos
Source code & goodies
Download source code (cross-platform, Xcode project for OS X), documentation (Doxygen) and compiled app: Hydroptere.zip
Download source code of previous version (WinXP), and MATLAB scripts and functions: MATLABscripts_and_old_hydro_src.zip
Download LinTool, a simple linear algebra library in C++ (basic operations, solve linear systems) LinTool.zip
Download PlotTool, a simple (experimental) plotting library in C++/openGL (2D plot, 3D surf) PlotTool.zip
Download Xfoil compiled for OS X Xfoil_OS_X.zip Note: I only compiled the source code for OS X, see Xfoil home page for credits
A number of external C/C++ libraries have been used for performances purposes and to keep code cross-platform.
SDL For windowing, keyboard, joystick,…
OpenGL For real-time 3D rendering
Sundials CVODE For numerical integration with variable step size and lots of other goodies…
basile.graf (at) epfl (dot) ch
sebastien.gros (at) epfl (dot) ch
philippe.muellhaupt (at) epfl (dot) ch
christophe.salzmann (at) epfl (dot) ch