amino
Lightweight Robot Utility Library
|
aarxc
, to generate code from the URDF file. Note that URDF support has additional dependencies; see ./INSTALL
for details../configure
fails with when checking for cffi-grovel../INSTALL
for details.Unable to load any of the alternatives: ("libamino_planning.so" (:DEFAULT "libamino_planning"))
.A: This means that SBCL is unable to load the planning library or one of its dependecies, such as OMPL. Typically, this means your linker is not configured properly.
Sometimes, you just need to run ldconfig
or sudo ldconfig
to update the linker cache.
If this doesn't work, you can set the LD_LIBRARY_PATH variable. First, find the location of libompl.so, e.g., by calling locate libompl.so
. Then, add the directory to your LD_LIBRARY_PATH variable. Most commonly, this will mean adding one of the following lines to your shell startup files (e.g., .bashrc):
export LD_LIBRARY_PATH="/usr/local/lib/:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/usr/local/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH"
A: (Debian and Ubuntu) Typically, the package manager will select the fastest installed BLAS/LAPACK implementation which is probably openblas:
sudo apt-get install libopenblas-dev
You can configure also manually configure the system-wide BLAS and LAPACK libraries via the update-alternatives
mechanism.
sudo update-alternatives --config liblapack.so sudo update-alternatives --config libblas.so
./configure --without-accelerate-framework LDFLAGS="-lopenblas"
./configure LDFLAGS="-lopenblas"
A: The scene graph compiler prepossesses meshes to reduce load time. Mesh data is arranged in the compiled scene graph according to its in-memory layout, eliminating the need to parse or copy meshes at load time. However, the processing itself is somewhat expensive.
Using Clang
instead of GCC
may improve compilation times. To do so, configure amino with ./configure CC=clang CXX=clang++
.
A: Ray tracing is computationally expensive. Here are a few notes to help performance.
Distribute: Ray tracing is embarassingly parallel, both across multiple frames and across pixels within a frame. The easiest way to render faster is to throw more cores at the problem.
Parsing: While POV-Ray can use multiple threads to render a frame, parsing the input file uses only a single core. If large meshes are used, this can take a noticeable amount of time, and must be repeated for each frame. Consequently, rather than using multiple threads per frame, it may often be better to render multiple frames in parallel so that parsing is parallelized across the different frames.
Optimize POV-Ray: Ray tracing is floating-point heavy. A few compilation flags make a small but noticable (~10%) improvement in performance.
-march=native
: optimize for the current CPU. This may take advantage of FPU instructions available on newer CPUs, e.g., AVX.-ffast-math
: optimize floating-point computation in ways that my violate IEEE semantics. Note that this could flag may slightly change the resulting image.-flto
: enable link-time optimization. This optimizes across multiple translation units.