gazebosim / gz-math Goto Github PK
View Code? Open in Web Editor NEWGeneral purpose math library for robot applications.
Home Page: https://gazebosim.org/libs/math
License: Apache License 2.0
General purpose math library for robot applications.
Home Page: https://gazebosim.org/libs/math
License: Apache License 2.0
Original report (archived issue) by John Hsu (Bitbucket: hsu, GitHub: hsu).
Current comparison strategy math::equal is using primitive absolute magnitude comparison. This may not be sufficient in some cases, for example where relative magnitudes are large, or the values being compared border numerical precision boundaries.
Per @sherm1 recommendation in pull request #82, we should add math::numericallyEqual
and math::relativelyEqual
.
Also, see issue #42 for extension to Vector3 class.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
We should write some awesome documentation with pictures, especially for the Pose math, which has been a source of confusion in gazebo.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
I believe the dependency on boost/random.hpp can be elminated with c++11 random number improvements. The other dependency is boost::math::round, and I believe this is now std::round in c++11.
Original report (archived issue) by Jose Luis Rivero (Bitbucket: Jose Luis Rivero, GitHub: j-rivero).
It will have the pull request #41 which will help us to release it on armhf.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
The private static GeneratorType*
class variable ignition::math::Rand::randGenerator is allocated with new
but is never delete
d so I think it will leak.
Since it is a private static variable, I wonder if we can change it to a std::unique_ptr
without breaking ABI?
Original report (archived issue) by Davide Faconti (Bitbucket: facontidavide).
Hi,
just a question/suggestion.
A quick inspection of the code reveals that no SSE or similar vectorization was used.
Being this library a potential building block of several robotic components (kinematics, graphics, dynamics, etc.) I wonder why you need to build from scratch yet another implementation when Bullet 3 has a vectorized one.
Why aren't you using Eigen?
This is of course an observation that I would give to anyone writing somethin like Matrix4x4.h... ;)
Kind regards
Davide
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
The 2.3.0 release was tagged from the default branch, not the ign-math2
branch:
There are some things on default that aren't on ign-math2
(though some of them probably should have been on ign-math2
(9e48b64)):
This means that we will have a problem if we tag the next release from ign-math2
(ABI checker).
Original report (archived issue) by John Hsu (Bitbucket: hsu, GitHub: hsu).
Curently, the Vector3::Equal with tolerance check uses a single tolerance for all three elements.
Proposal to extend it by adding:
/// \brief Equality test with tolerance vector.
/// \param[in] _v the vector to compare to
/// \param[in] _tol a vector containing equality tolerances.
/// \return true if the elements of the vectors are equal within
/// the tolerence specified by _tol.
public: bool Equal(const Vector3 &_v, const Vector3 &_tol) const
{
return equal<T>(this->data[0], _v[0], _tol[0])
&& equal<T>(this->data[1], _v[1], _tol[1])
&& equal<T>(this->data[2], _v[2], _tol[2]);
}
Based on discussion in pull request #82, we might need to extend it further with:
public: bool NumericallyEqual(const Vector3 &_v, const Vector3 &_tol) const;
public: bool RelativelyEqual(const Vector3 &_v, const Vector3 &_tol) const;
Original report (archived issue) by Carlos Agüero (Bitbucket: caguero, GitHub: caguero).
The default build type on Windows is set to Debug
. I believe is should be Release
following the same convention we use in Gazebo
or sdformat
for example.
There's a small patch in this branch waiting for the next round of pull requests.
Original report (archived issue) by Jose Luis Rivero (Bitbucket: Jose Luis Rivero, GitHub: j-rivero).
5: Running main() from gtest_main.cc
5: [==========] Running 5 tests from 1 test case.
5: [----------] Global test environment set-up.
5: [----------] 5 tests from FilterTest
5: [ RUN ] FilterTest.OnePole
5: [ OK ] FilterTest.OnePole (0 ms)
5: [ RUN ] FilterTest.OnePoleQuaternion
5: [ OK ] FilterTest.OnePoleQuaternion (0 ms)
5: [ RUN ] FilterTest.OnePoleVector3
5: [ OK ] FilterTest.OnePoleVector3 (0 ms)
5: [ RUN ] FilterTest.Biquad
5: /Users/jenkins/workspace/ign_math-default-devel-homebrew-amd64/ignition-math/src/Filter_TEST.cc:76: Failure
5: The difference between filterA.GetValue() and 0.0 is 5.0138471862048961e+180, which exceeds 1e-10, where
5: filterA.GetValue() evaluates to 5.0138471862048961e+180,
5: 0.0 evaluates to 0, and
5: 1e-10 evaluates to 1e-10.
5: /Users/jenkins/workspace/ign_math-default-devel-homebrew-amd64/ignition-math/src/Filter_TEST.cc:77: Failure
5: The difference between filterA.Process(1.1) and 0.0 is 3.3896412903724768e+203, which exceeds 1e-10, where
5: filterA.Process(1.1) evaluates to 3.3896412903724768e+203,
5: 0.0 evaluates to 0, and
5: 1e-10 evaluates to 1e-10.
5: /Users/jenkins/workspace/ign_math-default-devel-homebrew-amd64/ignition-math/src/Filter_TEST.cc:80: Failure
5: Value of: 0.66924691484768517
5: Expected: filterA.Process(1.2)
5: Which is: nan
5: /Users/jenkins/workspace/ign_math-default-devel-homebrew-amd64/ignition-math/src/Filter_TEST.cc:83: Failure
5: Value of: 0.96057152402651302
5: Expected: filterA.Process(10.25)
5: Which is: nan
5: [ FAILED ] FilterTest.Biquad (0 ms)
5: [ RUN ] FilterTest.BiquadVector3
5: [ OK ] FilterTest.BiquadVector3 (0 ms)
5: [----------] 5 tests from FilterTest (0 ms total)
5:
5: [----------] Global test environment tear-down
5: [==========] 5 tests from 1 test case ran. (0 ms total)
http://build.osrfoundation.org/job/ign_math-default-devel-homebrew-amd64/1/console
Original report (archived issue) by Silvio Traversaro (Bitbucket: traversaro).
The SignalStats class uses the pimpl idiom, but the memory allocated in the constructor is never properly deallocated. Furthermore the copy constructor is used in the code (for example in [1]) but the default copy constructor is used, so multiple SignalStats
objects are pointing to the same SignalStatsPrivate struct.
Original report (archived issue) by Louise Poubel (Bitbucket: chapulina, GitHub: chapulina).
It would be helpful to be able to do pose.X()
instead of pose.Pos.X()
.
How about this?
pose.Pos.X()
-> pose.X()
pose.Pos.Y()
-> pose.Y()
pose.Pos.Z()
-> pose.Z()
pose.Rot.Roll()
-> pose.Roll()
pose.Rot.Pitch()
-> pose.Pitch()
pose.Rot.Yaw()
-> pose.Yaw()
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
If we add a few functions like begin
and end
to the Vector classes, I think we would use std::sort
.
Original report (archived issue) by Louise Poubel (Bitbucket: chapulina, GitHub: chapulina).
The documentation is clear, the function sets the translation. But the function name suggests it would add the translation.
Since we have Matrix4::Translation()
to return the translation, wouldn't it make more sense to have a function SetTranslation
to set it and have Translate
add the translation?
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
I created a drone.io continuous integration job. Should we add a link to it somewhere?
Original report (archived issue) by Louise Poubel (Bitbucket: chapulina, GitHub: chapulina).
The current implementation of Line2
(which are actually line segments, i.e. not infinite) has implicit start and end points.
The equality operator for example checks if lineA->pts[0] == lineB->pts[0] && lineA->pts[1] == lineB->pts[1]
, but not if lineA->pts[0] == lineB->pts[1] && lineA->pts[1] == lineB->pts[0]
.
Is that done on purpose, that is, we want the start and end points of a line to mean something, or is it something which was overlooked?
Original report (archived issue) by Denys Kotelovych (Bitbucket: ilidar).
This commit caused undefined behavior or even assert for sorting Vector3
1a0288f, e.g.:
v1 = (1.0, 2.0, 3.0), v2 = (3.0, 2.0, 1.0)
Probably would be better to use something like this:
#!c++
bool operator<(const Vector3d &lhs, const Vector3d &rhs) {
if (lhs.X() < rhs.X())
return true;
if (lhs.X() > rhs.X())
return false;
return lhs.Y() < rhs.Y();
}
Original report (archived issue) by Jose Luis Rivero (Bitbucket: Jose Luis Rivero, GitHub: j-rivero).
19: [==========] Running 2 tests from 1 test case.
19: [----------] Global test environment set-up.
19: [----------] 2 tests from RandTest
19: [ RUN ] RandTest.Rand
19: /Users/jenkins/workspace/ign_math-default-devel-homebrew-amd64/ignition-math/src/Rand_TEST.cc:48: Failure
19: The difference between d and 4.72597 is 9.1128212257392374, which exceeds 1e-5, where
19: d evaluates to -4.3868512257392371,
19: 4.72597 evaluates to 4.7259700000000002, and
19: 1e-5 evaluates to 1.0000000000000001e-05.
19: [ FAILED ] RandTest.Rand (0 ms)
19: [ RUN ] RandTest.SetSeed
19: [ OK ] RandTest.SetSeed (0 ms)
19: [----------] 2 tests from RandTest (0 ms total)
19:
19: [----------] Global test environment tear-down
19: [==========] 2 tests from 1 test case ran. (0 ms total)
http://build.osrfoundation.org/job/ign_math-default-devel-homebrew-amd64/1/console
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
We should make these consistent.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
I was trying to use -DCMAKE_CXX_FLAGS=-Werror
as a cmake argument in the dronie.io build to make the build fail on compiler warnings, but the CMAKE_CXX_FLAGS variable is over-ruled. I'll just cc @_jrivero_ on this for advice on how to do compiler flags for this project and will possibly mark it wontfix if it turns out to not be a problem.
Original report (archived issue) by Louise Poubel (Bitbucket: chapulina, GitHub: chapulina).
Pull request #17 refers to the following link, which is broken:
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
It was copied from gazebo, but it needs to be modified for this repository.
$ sh tools/code_check.sh
find: ./plugins: No such file or directory
find: ./gazebo: No such file or directory
find: ./examples: No such file or directory
find: ./interfaces: No such file or directory
find: ./test/examples: No such file or directory
find: ./test/plugins: No such file or directory
find: ./test/cmake: No such file or directory
find: ./test/pkgconfig: No such file or directory
find: ./test/ServerFixture.*: No such file or directory
find: ./plugins: No such file or directory
find: ./gazebo: No such file or directory
find: ./examples: No such file or directory
find: ./interfaces: No such file or directory
find: ./test/examples: No such file or directory
find: ./test/plugins: No such file or directory
find: ./test/cmake: No such file or directory
find: ./test/pkgconfig: No such file or directory
find: ./test/ServerFixture.*: No such file or directory
cppcheck: No C or C++ source files found.
cppcheck: No C or C++ source files found.
tools/code_check.sh: line 161: ./tools/msg_check.py: No such file or directory
Original report (archived issue) by Jose Luis Rivero (Bitbucket: Jose Luis Rivero, GitHub: j-rivero).
Fix cmake module to not contain full paths.
Full information and background in this gazebo pull request
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
In order to fix integration with sdformat, we need to implement the DLL visibility macros.
See discussion in sdformat pull request 173.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
I'm playing with erb for parameterized sdf files. In order to generate pose values, for example, it would be convenient to have ruby bindings to some of the pose math functions.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
It's pretty clever the way the Matrix and Vector classes share code across different types. I wonder if we considered using templates instead? I'm not suggesting that we change; I'm just wondering if templates were considered and what are the pros/cons.
Original report (archived issue) by Nate Koenig (Bitbucket: Nathan Koenig).
Once k-means has been integrated into ign-math, we should setup more rigorous tests. Just the first two hits on google
Original report (archived issue) by Rich Mattes (Bitbucket: richmattes).
The original report had attachments: ignition-math-2.4.1-arm.patch
It looks like on ARMv7, the "long double" type is the same as the "double" type. This means that the Szudzek pair function (Pair() and Unpair()) don't work as expected, and the unit tests for large numbers fail. I'm seeing the tests in src/Helpers_TEST.cc:411 fail quite badly while building: see "build.log" at http://koji.fedoraproject.org/koji/taskinfo?taskID=14931350 (the log is quite big due to the number of tests that fail)
Attached is a patch that adds an __arm__ check to the _MSC_VER check that downgrades the PairInput and PairOutput data types and blocks the large number unit tests.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
We need to install a cmake version config file. See sdformat pull request 114 for an example.
This is another reason to try to share cmake code between projects rather than duplicating fixes like this all the time.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
There's mostly math in the gazebo::physics::Inertial class. It would be convenient to move it to ignition-math so that it could be used without linking to the physics library.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
I think we could put the ignition folder inside an include folder.
Original report (archived issue) by Jose Luis Rivero (Bitbucket: Jose Luis Rivero, GitHub: j-rivero).
Two different failures appear in debian when building ign-math2 in architectures different than amd64: https://buildd.debian.org/status/package.php?p=ignition-math2
UNIT_Line2_TEST (mostly in 32 bits)
#!bash
/«BUILDDIR»/ignition-math2-2.1.1+dfsg1/src/Line2_TEST.cc:150: Failure
Value of: lineA.Collinear(pt, 1e-4)
Actual: false
Expected: true
/«BUILDDIR»/ignition-math2-2.1.1+dfsg1/src/Line2_TEST.cc:162: Failure
Value of: lineA.Collinear(pt, 1e-4)
Actual: false
Expected: true
I suspect that there is some cast problem involved. I was not able to reproduce it on my 64 bits machine running the test with the linux32 command.
UNIT_SignalStats_TEST
No output, but failing on armel and mips.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
There's an overloaded operator for multiplying Matrix3 with Matrix4, which seems weird to me. I suspect there's a useful reason for this, but we should document what it does because it's not standard linear algebra.
Original report (archived issue) by Silvio Traversaro (Bitbucket: traversaro).
The CMake of the examples directory need to be updated with a proper find_package(ignition-math2 QUIET REQUIRED)
command.
Furthermore, the examples are not linked to the library.
Original report (archived issue) by John Hsu (Bitbucket: hsu, GitHub: hsu).
compiling
ign-math - ign-math2 branch, 1025:73afd4c86ae8ca8d4c97d1567a9682e1e4838624
sdformat - sdf3 branch, 1948:5e77af4e606b
gazebo - gazebo6 branch, 30538:b259500cf75a
encountered error:
[ 53%] Building CXX object gazebo/gui/model/CMakeFiles/gazebo_gui_model.dir/moc_JointMaker.cxx.o
cd /home/hsu/projects/gazebo_6/build_release/gazebo/gui/model && /usr/bin/c++ -DLIBBULLET_VERSION=2.83 -DLIBBULLET_VERSION_GT_282 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dgazebo_gui_model_EXPORTS -Wall -Wextra -Wno-long-long -Wno-unused-value -Wno-unused-value -Wno-unused-value -Wno-unused-value -Wfloat-equal -Wshadow -Winit-self -Wswitch-default -Wmissing-include-dirs -pedantic -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -DBUILDING_DLL_GZ_GUI_MODEL -s -O3 -DNDEBUG -msse4.2 -msse4.1 -mssse3 -msse3 -mfpmath=sse -msse -msse2 -fPIC -I/home/hsu/projects/gazebo_6/test/gtest/include -I/home/hsu/projects/gazebo_6 -I/home/hsu/projects/gazebo_6/build_release -I/home/hsu/projects/gazebo_6/deps -I/home/hsu/projects/gazebo_6/build_release/gazebo/gui/model -I/usr/include/libusb-1.0 -isystem /home/hsu/local_ign-math/include/ignition/math2 -isystem /usr/include/OGRE/RTShaderSystem -isystem /usr/include/OGRE -isystem /usr/include/OGRE/Terrain -isystem /usr/include/OGRE/Paging -isystem /home/hsu/local_sdformat_3/include/sdformat-3.7 -isystem /usr/include/qt4 -isystem /usr/include/qt4/QtGui -isystem /usr/include/qt4/QtCore -fPIC -std=c++11 -o CMakeFiles/gazebo_gui_model.dir/moc_JointMaker.cxx.o -c /home/hsu/projects/gazebo_6/build_release/gazebo/gui/model/moc_JointMaker.cxx
/home/hsu/projects/gazebo_6/gazebo/sensors/ForceTorqueSensor.cc: In member function ‘virtual void gazebo::sensors::ForceTorqueSensor::Load(const string&, sdf::ElementPtr)’:
/home/hsu/projects/gazebo_6/gazebo/sensors/ForceTorqueSensor.cc:112:29: error: no match for ‘operator=’ (operand types are ‘ignition::math::Matrix3d {aka ignition::math::Matrix3<double>}’ and ‘ignition::math::Quaternion<double>’)
this->rotationSensorChild = rotationChildSensor.Inverse();
^
/home/hsu/projects/gazebo_6/gazebo/sensors/ForceTorqueSensor.cc:112:29: note: candidate is:
In file included from /home/hsu/local_ign-math/include/ignition/math2/ignition/math/MassMatrix3.hh:28:0,
from /home/hsu/local_ign-math/include/ignition/math2/ignition/math.hh:13,
from /home/hsu/local_sdformat_3/include/sdformat-3.7/sdf/Param.hh:35,
from /home/hsu/local_sdformat_3/include/sdformat-3.7/sdf/Element.hh:25,
from /home/hsu/local_sdformat_3/include/sdformat-3.7/sdf/sdf.hh:5,
from /home/hsu/projects/gazebo_6/gazebo/physics/World.hh:35,
from /home/hsu/projects/gazebo_6/gazebo/sensors/ForceTorqueSensor.cc:25:
/home/hsu/local_ign-math/include/ignition/math2/ignition/math/Matrix3.hh:33:11: note: ignition::math::Matrix3<double>& ignition::math::Matrix3<double>::operator=(const ignition::math::Matrix3<double>&)
class Matrix3
^
/home/hsu/local_ign-math/include/ignition/math2/ignition/math/Matrix3.hh:33:11: note: no known conversion for argument 1 from ‘ignition::math::Quaternion<double>’ to ‘const ignition::math::Matrix3<double>&’
/usr/bin/cmake -E cmake_progress_report /home/hsu/projects/gazebo_6/build_release/CMakeFiles
...
following patch fixed the problem:
diff -r 73afd4c86ae8ca8d4c97d1567a9682e1e4838624 include/ignition/math/Matrix3.hh
--- a/include/ignition/math/Matrix3.hh Wed May 11 09:54:09 2016 -0700
+++ b/include/ignition/math/Matrix3.hh Thu May 26 16:18:32 2016 -0700
@@ -364,6 +364,22 @@
return this->Equal(_m, static_cast<T>(1e-6));
}
+ public: Matrix3<T> operator=(const Quaternion<T> &_q)
+ {
+ Quaternion<T> qt = _q;
+ qt.Normalize();
+ this->Set(1 - 2*qt.Y()*qt.Y() - 2 *qt.Z()*qt.Z(),
+ 2 * qt.X()*qt.Y() - 2*qt.Z()*qt.W(),
+ 2 * qt.X() * qt.Z() + 2 * qt.Y() * qt.W(),
+ 2 * qt.X() * qt.Y() + 2 * qt.Z() * qt.W(),
+ 1 - 2*qt.X()*qt.X() - 2 * qt.Z()*qt.Z(),
+ 2 * qt.Y() * qt.Z() - 2 * qt.X() * qt.W(),
+ 2 * qt.X() * qt.Z() - 2 * qt.Y() * qt.W(),
+ 2 * qt.Y() * qt.Z() + 2 * qt.X() * qt.W(),
+ 1 - 2 * qt.X()*qt.X() - 2 * qt.Y()*qt.Y());
+ return *this;
+ }
+
/// \brief Inequality test operator
/// \param[in] _m Matrix3<T> to test
/// \return True if not equal (using the default tolerance of 1e-6)
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
Eigen provides Vector, Matrix, Quaternion, and Affine transform (pose) types. We should consider using it. (Migrated from gazebo issue 929).
It looks like it is portable. One major thing we are missing is the ability to use arbitrary matrices (necessary for Jacobians). Eigen supports arbitrarily-sized matrices, as well as sparse matrices.
Original report (archived issue) by Rich Mattes (Bitbucket: richmattes).
The changes from pull request #58 aren't included in the 2.4.1 release. Was that intentional, or did the change just get lost somewhere along the way?
Original report (archived issue) by Victor Mataré (Bitbucket: vmatare).
The generated pkgconfig file ignition-math2.pc should specify -lm under the Libs: section since there are template classes like Quaternion (and probably others) that use cmath functions. When I use those generic classes, my code has to be linked directly against libm, so pkg-config --libs ignition-math2 should output -lm as well.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
We modified cpplint.py in ea78961; we should consider updating to the latest version:
http://code.google.com/p/google-styleguide/source/browse/trunk/cpplint/cpplint.py
Original report (archived issue) by Nate Koenig (Bitbucket: Nathan Koenig).
See comments pull request #104 .
This will require visual studio 2015.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
The stream operators in several classes currently have limited precision, presumably for decluttering console output. Several examples:
This is a warning not to use them for lexical casting, as they will lose significant precision.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
pull request #19 (change _
to -
in package name) broke the examples for me. The example CMakeLists.txt can't find the ignition math library properly anymore.
Also, we should build the examples in continuous integration, like in gazebo pull request 938.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
There are several places in templated functions where scalar values are passed by reference instead of value (Vector4 constructor for example). @iche033 recently pointed out that it is often better to pass primitive types by value rather than by reference (reference 1 and reference 2).
We can evaluate this sometime if we set up some performance tests. I've marked this as a minor issue for the time being.
Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).
Helpers.hh has functions parseInt
and parseFloat
that are similar to std::stoi and std::stof. These should use the STL functions where possible.
Original report (archived issue) by Jose Luis Rivero (Bitbucket: Jose Luis Rivero, GitHub: j-rivero).
As @scpeters commented, the windows compilation is broken from pull request #14.
Changes: http://build.osrfoundation.org/job/ign_math-default-devel-windows7/11/
ctor2_TEST.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall ignition::math::Vector2<double>::Vector2<double>(void)" (__imp_??0?$Vector2@N@math@ignition@@QAE@XZ) referenced in function "private: virtual void __thiscall Vector2Test_Vector2_Test::TestBody(void)" (?TestBody@Vector2Test_Vector2_Test@@EAEXXZ) [C:\Jenkins\workspace\ign_math-default-devel-windows7\build\src\UNIT_Vector2_TEST.vcxproj]
Vector2_TEST.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall ignition::math::Vector2<double>::Vector2<double>(double const &,double const &)" (__imp_??0?$Vector2@N@math@ignition@@QAE@ABN0@Z) referenced in function "private: virtual void __thiscall Vector2Test_Vector2_Test::TestBody(void)" (?TestBody@Vector2Test_Vector2_Test@@EAEXXZ) [C:\Jenkins\workspace\ign_math-default-devel-windows7\build\src\UNIT_Vector2_TEST.vcxproj]
Vector2_TEST.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall ignition::math::Vector2<double>::~Vector2<double>(void)" (__imp_??1?$Vector2@N@math@ignition@@UAE@XZ) referenced in function "private: virtual void __thiscall Vector2Test_Vector2_Test::TestBody(void)" (?TestBody@Vector2Test_Vector2_Test@@EAEXXZ) [C:\Jenkins\workspace\ign_math-default-devel-windows7\build\src\UNIT_Vector2_TEST.vcxproj]
Vector2_TEST.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: double __thiscall ignition::math::Vector2<double>::Distance(class ignition::math::Vector2<double> const &)const " (__imp_?Distance@?$Vector2@N@math@ignition@@QBENABV123@@Z) referenced in function "private: virtual void __thiscall Vector2Test_Vector2_Test::TestBody(void)" (?TestBody@Vector2Test_Vector2_Test@@EAEXXZ) [C:\Jenkins\workspace\ign_math-default-devel-windows7\build\src\UNIT_Vector2_TEST.vcxproj]
...
http://build.osrfoundation.org/job/ign_math-default-devel-windows7/11/console
Seems to be a problem with linking of all _TEST files.
Original report (archived issue) by Silvio Traversaro (Bitbucket: traversaro).
Go to http://ignitionrobotics.org/libraries/math and click the "Download" button.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.