Research related to computational modeling on projects for contact, biomechanics, soft robots and more
Make sure you got latest version of CMake installed on your system and your favorite IDE/compiler.
Before compiling and linking one needs to install Boost, Glew, Qt, and Atlas.
Atlas is not a strong dependency and could be omitted. However, it is there then PROX/FOUNDATION/BIG will take advantage of it.
Atlas is already bundled with Mac OS, so no need to do anything for this.
Other dependencies can be easy installed using macport (you need to install macport if you do not already have it)
sudo port install [email protected]_1+no_single+no_static+python27+universal
sudo port install [email protected]_0+universal
Install dependencies:
$ sudo apt-get install build-essential cmake cmake-curses-gui libboost-all-dev libglew-dev libxi-dev libxmu-dev --assume-yes
$ sudo apt-get install libatlas-dev libatlas3gf-base libatlas-base-dev --assume-yes
This has been tested on a Precise64 Virtual Box and results in the following versions:
- gcc (Ubuntu/Linaro 4.6.3-1ubuntu5)
- cmake version 2.8.7
- libglut.so.3.9.0, libGLU.so.1.3.08004, libGLEW.so.1.6.0, libGL.so.1.2
- Boost 1.46.1
- libXi.so.6.1.0, libXmu.so.6.2.0
- libatlas.so.3gf.0 with libcblas.so.3gf.0 and liblapack_atlas.so.3gf.0
Unknown as of this writing
CMake should be used for generating make/solution files.
-
Open the cmake gui application
-
Browse the source path to the top most folder containing a CMakeLists.txt file.
-
For binary destination use the same folder location but add a subfolder to contain the binary tree. You can name it whatever you want. For instance "build". Press configure button, resolve any conflicts or issues.
-
If you want to have unit-testing find the cmake variable ENABLE_UNIT_TESTS and set it to true (=1)
-
Press configure button again until no red variables appear. Now press generate button.
-
Goto the build folder and locate your solution/make files and use these to compile and link the sub project.
Merge SIMULATORS into PROX... Currently it only contains the prox::Engine implementation so it seems unneeded to have a whole separate library for this
Add proper ProxEngine params for gravity and damping parameters so they too use the set_parameter interface
Add proper material+lighting setup to RIGID_BODY_XML2MEL application
Add run-time control of all input/output folders to all applications (not sure how we want this to work?)
Eliminate redundant code/functionality between GUI and CMD applications
Eliminate redundant code/functionality between RIGID_BODY_GUI and RIGID_BODY_GUI_CHALK applications
Make sure all unit-tests are working, currently these tests fails
11 - unit_big_gmres (Failed)
88 - unit_geometry_contacts_obb_cylinder (Failed)
106 - unit_mesh_array_compute_distance_map (Failed)
183 - unit_prox_mappings (Failed)
184 - unit_prox_solver (Failed)
Investigations:
unit_big_gmres only fails when used with the CMake RUN_TESTS target. When invoked individually it does not fail?
The unit_geometry_contacts_obb_cylinder is not implemented at all.
The algorithm for computing distance fields is not working, hence unit_mesh_array_compute_distance_map fails (See bug ID 11).
The unit_prox_mappings seems to fail due too aggressive tolerance settings for GJK?
It is not clear why unit_prox_solver fails?
Investigate if we can drop the CMake setup parts
CMake Warning at CMakeLists.txt:37 (MESSAGE): Forcing to use CMAKE_CXX_FLAGS = -Wall -Wno-unused-local-typedef because Kenny is lazy
CMake Warning at CMakeLists.txt:52 (MESSAGE): Forcing to use CMAKE_OSX_DEPLOYMENT_TARGET = 10.10 because Kenny is lazy
RIGID_BODY_GUI and RIGID_BODY_GUI_CHALK loads cfg-files twice. The reason is that first load_from_config reads in the cfg file in order to set up application logic. Later prox engine loads the cfg-files again when trying to set its parameters from a cfg-file.
This seems a little "wasteful" to parse the same files twice... However, it make prox engine have a clean interface with minimal usage of data types.
Investigate why CMake fails to handle BLAS/LAPACK, currently we have the error messages
A library with BLAS API not found. Please specify library location. LAPACK requires BLAS A library with LAPACK API not found. Please specify library location.
Debug mesh_array_compute_distance_map so it works Complete unit-test of mesh_array_compute_surface_map
Add a function to compute area weighted face normals of a T3Mesh
Add functions to compute quality measures of T4Meshes
Add functionality to bind (couple) a T3Mesh to a T4Mesh