GithubHelp home page GithubHelp logo

dartsim / dart Goto Github PK

View Code? Open in Web Editor NEW
885.0 885.0 286.0 3.02 GB

DART: Dynamic Animation and Robotics Toolkit

Home Page: http://dartsim.github.io/

License: BSD 2-Clause "Simplified" License

CMake 1.28% C++ 97.87% Shell 0.17% Roff 0.01% TeX 0.01% Ruby 0.01% Python 0.65% Dockerfile 0.01%
computer-animation dynamics kinematics lie-group robotics simulation

dart's People

Contributors

a-price avatar ana-gt avatar azeey avatar cerdogan2 avatar chentang avatar chhinze avatar ckarenliu avatar costashatz avatar dependabot[bot] avatar donnyward avatar github-actions[bot] avatar j-rivero avatar jenniferbuehler avatar jietan avatar jslee02 avatar karenliu avatar kasiu avatar mdutton3 avatar mstilman avatar mxgrey avatar olzhas avatar pushkar avatar pushkar3 avatar saulrh avatar scpeters avatar sehoonha avatar tarrasch avatar tobiaskunz avatar traversaro avatar yunfeibai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dart's Issues

Reconsider all uses of `inverse()` etc.

In numerical calculations one is told to avoid a lot of explicit calculations due to instability and or inefficiency. The most common example is to almost never do matrix inverse, but there are other stuff as well like explicitly calculating the Q in QR when factored using Householder reflectors. (iirc)

Whoever knows a lot about the numerical parts of dart may feel free to jump in this discussion and shed some light.

Just to show that there is at least some uses that one could investigate:

$ git grep "inverse()"

apps/balance/Controller.cpp:    MatrixXd invM = (mSkel->getMassMatrix() + mKd * mTimestep).inverse();
apps/balance/Controller.cpp:    VectorXd deltaQdot = aggregateMat.transpose() * (aggregateMat * aggregateMat.transpose()).inverse() * _deltaMomentum;
apps/hybrid/MyWindow.cpp:        VectorXd x = A.inverse() * b;
apps/pdController/Controller.cpp:    MatrixXd invM = (mSkel->getMassMatrix() + mKd * mTimestep).inverse();
docs/dart-tutorial/pdControl.tex:    .inverse();
src/dynamics/ContactDynamics.cpp:        MatrixXd Minv = mMInv;//.inverse();
src/dynamics/SkeletonDynamics.cpp:            mMInv = mM.inverse();
src/dynamics/SkeletonDynamics.cpp:            mMInv = mM.inverse();
src/dynamics/SkeletonDynamics.cpp:                    // new_qdot = newJw.inverse()*w
src/dynamics/SkeletonDynamics.cpp:                    Vector3d new_qdot = newJwBody.inverse()*oldJwBody*old_qdot;
src/dynamics/SkeletonDynamics.cpp:                    // new_qdot = newJw.inverse()*w
src/dynamics/SkeletonDynamics.cpp:                    Vector3d new_qdot = newJwBody.inverse()*oldJwBody*old_qdot;
src/kinematics/BodyNode.h:        inline Eigen::Matrix4d getWorldInvTransform() const { return mW.inverse(); } ///< Transformation from the world coordinates to the local coordinates of this body node
src/kinematics/BodyNode.h:        inline Eigen::Matrix4d getLocalInvTransform() const { return mT.inverse(); } ///< Transformation from the local coordinates of the parent node to the local coordinates of this body node
src/kinematics/Transformation.cpp:        return mTransform.inverse();
src/utils/UtilsRotation.cpp:            Quaterniond qinv = q.inverse();

The rule of thumb I think is that matrix inverse is only ok for very small matrices. So I guess investigation concretely here means that we should remove inverse where the matrices actually aren't tiny and add a "trust me I know what I'm doing comment" on the other places.

We should use CMake config mode

Right now the build script is using a mix of CMake's config and module modes. Pushkar claims we are using module mode. However, I claim we are not, at least not the way it is supposed to be used. Also, I think config mode is preferred because it does not include random guessing where libraries might be installed. The CMake documentation states that a CMake library project should provide the necessary file to find it in config mode (see below).

"Native CMake projects that are intended to be used by other projects [...] should provide at a minimum a Config.cmake or a -config.cmake file."

Short description of CMake's config and module modes:

In module mode, either CMake itself or the software using a library is providing a Find.cmake file that searches for a required library on the system. In config mode the library itself installs a Config.cmake file that provides all the necessary information to link against the library. Note that the Config.cmake does not have to search for the library because it got installed by the library itself and just knows where the library is.

Our current setup:

DART itself (like in config mode) is providing a FindDART.cmake file (named according to module mode). The FindDART.cmake file is generated from a file called DARTConfig.cmake.in (named according to config mode). I am not sure if our FindDART.cmake searches for DART (like in module mode) or just provides the hard paths to DART (like in config mode).

For more information see:
http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries
http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file

Collision detection generates different results

The new collision detection in DART produces different contact points from the older version. If you look at the contact points on the character in "balance" app, the contact points are not at the bottom of the foot.

Create debug and release compiler configurations for GCC

Our CMake script currently only creates a single configuration for GCC, whereas Windows by default has multiple. We want the user to be able to choose whether to apply debug or release compiler options.

In debug mode we want to supply the -g compiler option. In release mode we want to define -NDEBUG such that assert statements are not excecuted.

Use FCL's broad phase

FCL includes functionality to smartly organize objects/link into a data structure such that not all pairs of them need to be checked for collision. We are currently not making use of that functionality and instead check all pairs for collision.

Installation prefix ovewritten

This part of the CMakeList files unables the user to set the install prefix by hand using something like

cmake -DCMAKE_INSTALL_PREFIX=/home/USER/devel ..

if(WIN32)
set(CMAKE_INSTALL_PREFIX "C:/Golems" CACHE PATH "Install prefix" FORCE)
elseif(APPLE)
set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install prefix" FORCE)
else()
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Install prefix" FORCE)
endif()

Directly pass geometric primitives to FCL

We should directly pass geometric primitives to FCL instead of converting them to meshes. Currently DART supports box and ellipsoid shapes. URDF supports box, sphere and cylinder. FCL supports all of them and many more except ellipsoids. We should add shapes to DART for sphere and cylinder and pass all of them except ellipsoids directly to FCL.

boost chrono: Is it needed in Windows?

boost chrono is not available in Boost 1.46 and it has been recently added as a dependency for DART. Is it really needed for DART in Windows ? I cannot compile unless I erase that from my CMake.in (Ubuntu 12.04 32-bits)

DART does not respect Install prefix flag

When running "cmake .", homebrew passes the flag:

-DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/dartsim/2.3

It installs in /usr/local anyway. But brew expects that flag to be respected so it can symlink to /usr/local instead of hard code binaries. This makes upgrading/uninstallation much easier and safer, and let's you have several version of dart downloaded.

CMakeLists needs to be changed so that CMAKE_INSTALL_PREFIX is used instead of the OS defaults if it is specified.

Shape transformations

Three problems:

1- Shape::mOffset is not used and should be removed.
2- The shape is offset by mLocalCOM for visualization and not offset at all for collision checking.
3- Shape class should have a transformation wrt the local frame of the node it belongs to.

FCL: Boost version update required

The current CMake file for DART asks for Boost 1.42 or higher. FCL, however, does NOT work with Boost 1.42 (it spits out errors related with assert. It works fine with Boost 1.49 tough.

Proposed solution: Update the CMake file for dart that requires Boost versions higher than 1.42 (1.43?, 1.44? ). I am currently using 1.49 in Debian Squeeze and 1.48 in Ubuntu 12.04

libparser with robotics branch

It seems that the libparser.a is not installed with the dart/robotics branch while it is needed by grip. I had to first install it with the dart/master branch and switch to robotics for the rest of the libraries. I am not sure if this is done on purpose.

Cannot load URDF files with box/cylinder/sphere geometries

Currently the URDF loader only supports URDF files that only use meshes to specify the link geometries. However, the URDF file format also allows the geometry to be defined as a box, cylinder or sphere.

DART currently has classes for box and ellipsoid shapes. We should probably add sphere and cylinder.

Build error, missing googletest or gtest

When cmaking 0fb16fc I get this error:

dart [robotics] % cmake .
-- The C compiler identification is GNU 4.7.2
-- The CXX compiler identification is GNU 4.7.2
-- Generate makefile/project file for DART
-- CMAKE_SOURCE_DIR = /home/arka3/repos/dart
-- CMAKE_BINARY_DIR = /home/arka3/repos/dart
-- Generate the path header file to  /home/arka3/repos/dart/src/utils/Paths.h
-- Boost version: 1.49.0
-- Found the following Boost libraries:
--   system
--   filesystem
-- MATHPLOT = MATHPLOT_INCLUDE_DIR-NOTFOUND
-- Building DART source
-- (collision) var is 
-- Configuring done
CMake Error at src/unittests/CMakeLists.txt:9 (add_library):
  Cannot find source file:

    /usr/src/gtest/src/gtest-all.cc

  Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
  .hxx .in .txx

Apparently I'm missing googletest or gtest, but it's not mentioned on the wikipage

However revision d007c0c seems to work for me. Maybe @pushkar can shed some light on this?

Move all dynamic properties of a node to BodyNodeDynamics

DART splits up the kinematics and dynamics functionality into 2 different classes for skeleton and nodes. I think this is a good approach to keep things clean and organized.

However, some dynamics-related properties of nodes are misplaced and need to be moved to BodyNodeDynamics. Dynamics-related properties are for example mass and inertia. The mass of a node is currently stored in BodyNode and Shape, but not in BodyNodeDynamics. The inertia is stored in Shape.

We need to fix this in order to be able to have nodes with two different shapes for collision and visualization.

URDF loader does not order DOFs correctly

I am getting the error message "Array not sorted!!!" (BodyNode.cpp, line 204) when loading the Hubo URDF model into DART in debug mode. It seems that DART expects dependent DOFs to be in a certain order and the URDF loader fails to provide this order. I don't know exactly what the expectations of DART are with respect to ordering within its data structures.

In release mode DART skips the sanity check on its data structures. Although it does not report an error in release mode, I assume it would fail to simulate correctly.

Fix make targets for the tests

I think it's weird that make builds the test but make test doesn't. However make test runs them, so that means that

  • Regular developers who don't care about the tests loose time building the tests
  • The test target doesn't really work since it doesn't rebuild anything when you've made changes to the tests.

Is this by design or just a mistake? @pushkar / @cerdogan

Update installation instructions and auto-built debs to use libboost 1.48

One of the more common conflicts I've had is that dart's dependencies are linked against libboost 1.46 while everything else tries to link against libboost 1.48. I believe that this is one of the reasons that users can't use the repositories to satisfy dependencies to build dart/grip. Besides, the installation instructions claim that dart requires boost 1.49 or higher, which is clearly not the case because all the debs use boost 1.46.

URDF models with rotated joint frames are not simulated correctly

This problem appears if the 'origin' tag within a 'joint' has a nonzero 'rpy' value.

Here are the details:

URDF allows to specify a (static) transform that defines the joint frame relative to the parent link frame. Then, the joint axis is defined in this joint frame. If the joint value is zero, the joint frame corresponds to the child node frame. The problem only appears if the rotational part of the static transform of the joint frame is unequal zero. For Hubo this is only the case for the fingers.

W.l.o.g. let’s assume we are dealing with a revolute joint. The URDF loader translates this to the DART data structures by creating a joint with 7 transforms: 3 static translation transforms, 3 static rotation transforms and 1 variable rotation transform. The static transforms specify the pose of the joint frame and the variable transform represents the 1-DOF rotation around the joint axis specified in the joint frame.

This would all make sense. However, DART does not support it. DART provides certain joint types and each type expects certain transforms to be specified. DART’s revolute joint allows the specification of static translation transforms to offset the joint frame, but it does not support any rotational transforms other than the one rotation around the joint axis. The Jacobian calculation is done differently for each joint type. The code that calculates the rotational Jacobian for the revolute joint does not transform the Jacobian according to previous rotational transforms that are part of the joint, which leads to incorrect dynamics.

illegal hardware instruction

Once I install dart and try to run tabEmpty from grip, I get the following error:
"illegal hardware instruction (core dumped)". gdb does not help and I can run wxWidget and openGL applications successfully in other programs.

Why included <stdio.h> in all apps?

I created a new app "hanging" to test the point constraints, but I got compiling errors complaining that MyWIndow is an abstract class. I noticed that all the apps now include stdio.h in MyWindow.h, but they don't need it before. With stdio.h, I don't get compiling errors anymore.

enforce joint limits

For robotics simulations, it would be more physically meaningful to enforce joint limits.

Parser fails when included urdfs are in other directories

An example. Say we have directories scenes and scenes/robot and files scenes/world.urdf, scenes/object/object.urdf, and scenes/object/model.dae. world.urdf includes object/object.urdf using a relative path and object.urdf attempts to include model.dae using another relative path. The parser fails to consider the first relative path and attempts to use a file model.dae instead of the correct object/model.dae.

This issue is preventing us from factoring the hubo models out into a separate repository. It should probably be fixed.

Linux debug mode compiling

Running cmake -DCMAKE_BUILD_TYPE=Debug . causes cmake to append d to library files in dart. There are issues with locating those libraries across dart, grip and grip-samples. Notably, grip-samples seems to request debug libraries which are not associated with dart or grip.

Shape::mMassTensor unused

What is Shape::mMassTensor? It is not used anywhere. We should probably ask Karen. If there is no use for it, we should remove it together with the functions that generate it.

Allow for different visualization and collision shapes

Currently each node has one shape. That shape can either be a geometric primitive (e.g. a box) or a mesh. In the latter case the shape can include 2 different meshes for collision and visualization.

URDF allows to specify a geometric primitive for collision checking and a mesh for visualization. We could just convert everything into meshes, but that probably makes collision checking slower. Thus, we want each node to have 2 shapes, one for collision and one for visualization. Each shape then represents either a geometric primitive or a single mesh.

Depends on issue #33.

Add cpack information to dependencies

This would make the process of installing and updating dependencies rather cleaner. It would also allow users to install build dart and grip packages using DEBs built using cpack instead of depending on make install (which we all know has caused hours and hours of broken builds in the past).

Name collision: EPSILON

The preprocessor definition EPSILON in utils/Mish.h collides with the static member variables EPSILON in collision/intersect.h and collision/vec_3f.h.

I am running code that obviously worked on Linux, but on Windows I am getting "error C2059: syntax error : 'constant'".

Workaround: Reorder includes to make sure that utils/Misc.h does not get included before intersect.h and vec_3f.h.

Proposed Solution: We should get rid of global preprocessor definitions.

URDF loader should report failure

The URDF loader currently does not provide information whether the scene was loaded successfully. Missing files either cause a crash or, worse, an incomplete data structure that is going to lead to a crash somewhere else in DART.

Separate gcc and clang flags

I'm on a Linux machine. I get the following error while compiling.

[  1%] Building CXX object src/CMakeFiles/dart.dir/kinematics/Joint.cpp.o
cc1plus: error: unrecognized command line option ‘-stdlib=libc++’
make[2]: *** [src/CMakeFiles/dart.dir/kinematics/Joint.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/dart.dir/all] Error 2
make: *** [all] Error 2

libassimp issue for installation

Version 3 and 2 conflict on ubuntu (note that ROS depends on version 2). More details in the attachment file.

Installing assimp from source also fails.

-- Jim Mainprice

Post-Doc at the Arc Lab working on DRC, WPI, MA.

UBUNTU LINUX (12.04) INSTALLING FROM apt-get : Fail

REASON : Conflicting version of ASSIMP 2 and 3
note that the ROS framework depends on version 2
install of the assimp.pc file is the same
for version 2 and 3 of the library which make
the installs incompatible

sudo apt-get install freeglut3 freeglut3-dev libglu1-mesa-dev libboost-all-dev cmake cmake-curses-gui libeigen3-dev libassimp3 libassimp-dev libxmu-dev libxi-dev libwx

Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libassimp3 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libassimp3' has no installation candidate
E: Unable to locate package libwx

sudo apt-cache search assimp
assimp-utils - 3D model import library (utilities)
libapache2-authcassimple-perl - Apache2 module to authentificate trough a CAS server
libassimp-dev - 3D model import library (development)
libassimp-doc - 3D model import library (documentation)
libassimp2 - 3D model import library
libassimp2-d-dev - 3D model import library (D bindings)
python-pyassimp - 3D model import library (Python bindings)
assimp - Assimp 3.0.1264 - Open Asset Import Library 3.0.1264
assimp-bin - Assimp 3.0.1264 tools
assimp-dev - Assimp 3.0.1264
libassimp3.0-r1264 - Assimp 3.0.1264 libraries
libassimp3.0-r1264-dev - Assimp 3.0.1264 common headers and installs

sudo apt-get install libassimp3.0-r1264-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
mono-4.0-service mono-runtime-sgen libmono-profiler mono-jay mono-2.0-gac mono-mcs mono-utils mono-2.0-service
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
libassimp3.0-r1264-dev
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/102 kB of archives.
After this operation, 516 kB of additional disk space will be used.
(Reading database ... 457562 files and directories currently installed.)
Unpacking libassimp3.0-r1264-dev (from .../libassimp3.0-r1264-dev_3.0.1264.10-ubuntu1precise1_amd64.deb) ...
dpkg: error processing /var/cache/apt/archives/libassimp3.0-r1264-dev_3.0.1264.10-ubuntu1
precise1_amd64.deb (--unpack):
trying to overwrite '/usr/lib/pkgconfig/assimp.pc', which is also in package libassimp-dev 2.0.863+dfsg-2
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/libassimp3.0-r1264-dev_3.0.1264.10-ubuntu1~precise1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

UBUNTU LINUX (12.04) INSTALL FROM SOURCE : Fail

After installing assimp & tinyxml2 from source
and setting up the path manually to the header folder
in ccmake and having LIBRARY_PATH to point to assimp
installation prefix. 97% of dart was compiled and linked
up to here.

website version : assimp--3.0.1270-source-only.zip

Linking CXX executable ../../../bin/meshCollision
cd /home/jmainpri/workspace/dart/build_clean/apps/meshCollision && /usr/bin/cmake -E cmake_link_script CMakeFiles/meshCollision.dir/link.txt --verbose=1
/usr/bin/c++ -O3 CMakeFiles/meshCollision.dir/MyWindow.cpp.o CMakeFiles/meshCollision.dir/Main.cpp.o -o ../../../bin/meshCollision -rdynamic -L/home/jmainpri/workspace/dart/lib ../../../lib/libdart.a -lccd -lassimp -lglut -lXmu -lXi -lGL -lGLU -lGLU -lGL -lSM -lICE -lX11 -lXext -lfcl -ltinyxml -ltinyxml2 -lboost_system-mt -lboost_filesystem-mt -Wl,-rpath,/home/jmainpri/workspace/dart/lib
../../../lib/libdart.a(ShapeMesh.cpp.o): In function kinematics::ShapeMesh::loadMesh(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': ShapeMesh.cpp:(.text+0x3c2): undefined reference toaiCreatePropertyStore'
ShapeMesh.cpp:(.text+0x3ea): undefined reference to aiImportFileExWithProperties' ShapeMesh.cpp:(.text+0x3f5): undefined reference toaiReleasePropertyStore'
collect2: ld returned 1 exit status
make[2]: *** [../bin/meshCollision] Error 1
make[2]: Leaving directory /home/jmainpri/workspace/dart/build_clean' make[1]: *** [apps/meshCollision/CMakeFiles/meshCollision.dir/all] Error 2 make[1]: Leaving directory/home/jmainpri/workspace/dart/build_clean'
make: *** [all] Error 2

CMake error on Windows

This is the same issue I emailed about earlier.

This is the CMake output on windows:

Generate makefile/project file for DART
CMAKE_SOURCE_DIR = D:/Tobias_2/Code Repositories/dart
CMAKE_BINARY_DIR = D:/Tobias_2/Code Repositories/dart/build
Setup Visual Studio Specific Flags
Generate the path header file to D:/Tobias_2/Code Repositories/dart/src/utils/Paths.h
Defaulting to provided GLUT libraries. Change GLUT_PREFIX_PATH to use a different version of GLUT
Boost version: 1.51.0
Found the following Boost libraries:
system
filesystem
Could not find flann
Could not find ccd
Could not fcl
Could NOT find DARTExt (missing: DARTExt_FOUND)
Dart dependencies were not satisfied, will not build from source
Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
Configuring done
Generating done

Problem with installation from source (DART/GRIP)

Hi all,

I am trying to install DART/Grip from source on a Ubuntu 12.04 (64 bit) and have followed all the steps mentioned here:

https://github.com/golems/dart/wiki/Linux-installation

But I couldn't install the dart due to following reasons:

$$ cmake .

-- Generate makefile/project file for DART
-- CMAKE_SOURCE_DIR = /home/oarslan/git/dart
-- CMAKE_BINARY_DIR = /home/oarslan/git/dart
-- Generate the path header file to /home/oarslan/git/dart/src/utils/Paths.h
-- EIGEN3_INCLUDEDIR = /usr/include/eigen3
-- Boost version: 1.46.1
-- Found the following Boost libraries:
-- system
-- filesystem
-- FLANN_INCLUDEDIR = /usr/include
-- CCD_INCLUDEDIR = /usr/include
-- FCL_INCLUDEDIR = /usr/include
-- ASSIMP_INCLUDEDIR = /usr/include
-- MATHPLOT = MATHPLOT_INCLUDE_DIR-NOTFOUND
-- Building DART source
-- Adding test: testKinematics
-- Adding test: testNearestNeighbor
-- Adding test: testForwardKinematics
-- Adding test: testDynamics
-- Adding test: testUtilities
-- Adding test: testOptimizer
-- Configuring done
-- Generating done
-- Build files have been written to: /home/oarslan/git/dart

$$ make

../lib/libdart.a(ParserVsk.cpp.o): In function readVSKFile(char const*, kinematics::Skeleton*)': ParserVsk.cpp:(.text+0x9e26): undefined reference totinyxml2::XMLDocument::XMLDocument(bool, tinyxml2::Whitespace)'
collect2: ld returned 1 exit status
make[2]: *** [bin/tests/testDynamics] Error 1
make[1]: *** [unittests/CMakeFiles/testDynamics.dir/all] Error 2
make: *** [all] Error 2

It seems there is a problem with tinyxml2 library, but I am sure that I installed it correctly.

Here are the terminal outputs for installation of the tinyxml2.

$$ cmake
-- Configuring done
-- Generating done
-- Build files have been written to: /home/oarslan/git/tinyxml2

$$ make
In source build
[ 0%] Built target DATA_COPY
[ 33%] Built target tinyxml2
[ 66%] Built target test
[100%] Built target tinyxml2static
Install the project...
-- Install configuration: ""
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.so.1.0.11
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.so.1
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.so
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.a
-- Up-to-date: /usr/local/include/tinyxml2.h
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/pkgconfig/tinyxml2.pc

$$ sudo make install
In source build
[ 0%] Built target DATA_COPY
[ 33%] Built target tinyxml2
[ 66%] Built target test
[100%] Built target tinyxml2static
Install the project...
-- Install configuration: ""
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.so.1.0.11
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.so.1
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.so
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/libtinyxml2.a
-- Up-to-date: /usr/local/include/tinyxml2.h
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/pkgconfig/tinyxml2.pc

Does anyone have a guess why I am getting this error?

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.