Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrating from Eigen2 to Eigen3 #3

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ endif()


## Eigen2
find_package(Eigen2 REQUIRED)
include_directories(${EIGEN2_INCLUDE_DIR})
set(exported_include_dirs ${exported_include_dirs} ${EIGEN2_INCLUDE_DIR})
find_package(Eigen3 REQUIRED)
include_directories(${Eigen_INCLUDE_DIRS})
set(exported_include_dirs ${exported_include_dirs} ${Eigen_INCLUDE_DIRS})


## curses
Expand Down
41 changes: 41 additions & 0 deletions cmake/modules/FindEigen3.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# - Try to find Eigen3 lib
#
# This module supports requiring a minimum version, e.g. you can do
# find_package(Eigen3 3.1.2)
# to require version 3.1.2 or newer of Eigen3.
#
# Once done this will define
#
# Eigen_FOUND - system has eigen lib with correct version
# Eigen_INCLUDE_DIR - the eigen include directory
# Eigen_VERSION - eigen version

# Copyright (c) 2006, 2007 Montel Laurent, <[email protected]>
# Copyright (c) 2008, 2009 Gael Guennebaud, <[email protected]>
# Copyright (c) 2009 Benoit Jacob <[email protected]>
# Redistribution and use is allowed according to the terms of the 2-clause BSD license.

find_package(PkgConfig)
pkg_check_modules(PC_EIGEN eigen3)
set(EIGEN_DEFINITIONS ${PC_EIGEN_CFLAGS_OTHER})

find_path(EIGEN_INCLUDE_DIR Eigen/Core
HINTS ${PC_EIGEN_INCLUDEDIR} ${PC_EIGEN_INCLUDE_DIRS} "${EIGEN_ROOT}" "$ENV{EIGEN_ROOT}"
PATHS "$ENV{PROGRAMFILES}/Eigen" "$ENV{PROGRAMW6432}/Eigen"
"$ENV{PROGRAMFILES}/Eigen 3.0.0" "$ENV{PROGRAMW6432}/Eigen 3.0.0"
PATH_SUFFIXES eigen3 include/eigen3 include)

set(EIGEN_INCLUDE_DIRS ${EIGEN_INCLUDE_DIR})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Eigen DEFAULT_MSG EIGEN_INCLUDE_DIR)

mark_as_advanced(EIGEN_INCLUDE_DIR)

if(EIGEN_FOUND)
message(STATUS "Eigen found (include: ${EIGEN_INCLUDE_DIRS})")
endif(EIGEN_FOUND)


set(Eigen_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS})
set(Eigen_FOUND ${EIGEN_FOUND})
2 changes: 1 addition & 1 deletion examples/ex10_haptics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ typename units::JointTorques<DOF>::type saturateJt(const typename units::JointTo
int index;
double minRatio;

minRatio = (limit.cwise() / (x.cwise().abs())).minCoeff(&index);
minRatio = (limit.array() / (x.cwiseAbs())).minCoeff(&index);
if (minRatio < 1.0) {
return minRatio * x;
} else {
Expand Down
2 changes: 1 addition & 1 deletion include/barrett/math/detail/matrix-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ inline void Matrix<R,C, Units>::copyFrom(const libconfig::Setting& setting)

if (setting[0].isNumber()) { // if setting is a row vector
for (int i = 0; i < this->size(); ++i) {
(*this)[i] = barrett::detail::numericToDouble(setting[i]);
(*this)(i) = barrett::detail::numericToDouble(setting[i]);
}
return;
} // else setting is a column vector or a matrix
Expand Down
62 changes: 31 additions & 31 deletions include/barrett/math/detail/utils-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@ template<typename Scalar> struct CwiseSignOp {

template<typename Derived>
inline const Eigen::CwiseUnaryOp<
detail::CwiseSignOp<typename Eigen::ei_traits<Derived>::Scalar>,
Derived
detail::CwiseSignOp<typename Eigen::internal::traits<Derived>::Scalar>,
const Derived
> sign(const Eigen::MatrixBase<Derived>& x)
{
return x.unaryExpr(detail::CwiseSignOp<typename Eigen::ei_traits<Derived>::Scalar>());
return x.unaryExpr(detail::CwiseSignOp<typename Eigen::internal::traits<Derived>::Scalar>());
}

inline double sign(double x)
Expand All @@ -69,22 +69,22 @@ using std::abs;

template<typename Derived>
inline const Eigen::CwiseUnaryOp<
Eigen::ei_scalar_abs_op<typename Eigen::ei_traits<Derived>::Scalar>,
Derived
Eigen::internal::scalar_abs_op<typename Eigen::internal::traits<Derived>::Scalar>,
const Derived
> abs(const Eigen::MatrixBase<Derived>& x)
{
return x.cwise().abs();
return x.cwiseAbs();
}


template<typename Derived1, typename Derived2>
inline const Eigen::CwiseBinaryOp<
Eigen::ei_scalar_min_op<typename Eigen::ei_traits<Derived1>::Scalar>,
Derived1,
Derived2
Eigen::internal::scalar_min_op<typename Eigen::internal::traits<Derived1>::Scalar>,
const Derived1,
const Derived2
> min(const Eigen::MatrixBase<Derived1>& a, const Eigen::MatrixBase<Derived2>& b)
{
return a.cwise().min(b);
return a.cwiseMin(b);
}

inline double min(double a, double b)
Expand All @@ -95,12 +95,12 @@ inline double min(double a, double b)

template<typename Derived1, typename Derived2>
inline const Eigen::CwiseBinaryOp<
Eigen::ei_scalar_max_op<typename Eigen::ei_traits<Derived1>::Scalar>,
Derived1,
Derived2
Eigen::internal::scalar_max_op<typename Eigen::internal::traits<Derived1>::Scalar>,
const Derived1,
const Derived2
> max(const Eigen::MatrixBase<Derived1>& a, const Eigen::MatrixBase<Derived2>& b)
{
return a.cwise().max(b);
return a.cwiseMax(b);
}

inline double max(double a, double b)
Expand Down Expand Up @@ -129,21 +129,21 @@ template<typename Scalar> struct CwiseBinarySaturateOp {

template<typename Derived>
inline const Eigen::CwiseUnaryOp<
detail::CwiseUnarySaturateOp<typename Eigen::ei_traits<Derived>::Scalar>,
Derived
detail::CwiseUnarySaturateOp<typename Eigen::internal::traits<Derived>::Scalar>,
const Derived
> saturate(const Eigen::MatrixBase<Derived>& x, double limit)
{
return x.unaryExpr(detail::CwiseUnarySaturateOp<typename Eigen::ei_traits<Derived>::Scalar>(-limit, limit));
return x.unaryExpr(detail::CwiseUnarySaturateOp<typename Eigen::internal::traits<Derived>::Scalar>(-limit, limit));
}

template<typename Derived1, typename Derived2>
inline const Eigen::CwiseBinaryOp<
detail::CwiseBinarySaturateOp<typename Eigen::ei_traits<Derived1>::Scalar>,
Derived1,
Derived2
detail::CwiseBinarySaturateOp<typename Eigen::internal::traits<Derived1>::Scalar>,
const Derived1,
const Derived2
> saturate(const Eigen::MatrixBase<Derived1>& x, const Eigen::MatrixBase<Derived2>& limit)
{
return x.binaryExpr(limit, detail::CwiseBinarySaturateOp<typename Eigen::ei_traits<Derived1>::Scalar>());
return x.binaryExpr(limit, detail::CwiseBinarySaturateOp<typename Eigen::internal::traits<Derived1>::Scalar>());
}

inline double saturate(double x, double limit)
Expand All @@ -154,11 +154,11 @@ inline double saturate(double x, double limit)

template<typename Derived>
inline const Eigen::CwiseUnaryOp<
detail::CwiseUnarySaturateOp<typename Eigen::ei_traits<Derived>::Scalar>,
Derived
detail::CwiseUnarySaturateOp<typename Eigen::internal::traits<Derived>::Scalar>,
const Derived
> saturate(const Eigen::MatrixBase<Derived>& x, double lowerLimit, double upperLimit)
{
return x.unaryExpr(detail::CwiseUnarySaturateOp<typename Eigen::ei_traits<Derived>::Scalar>(lowerLimit, upperLimit));
return x.unaryExpr(detail::CwiseUnarySaturateOp<typename Eigen::internal::traits<Derived>::Scalar>(lowerLimit, upperLimit));
}

inline double saturate(double x, double lowerLimit, double upperLimit)
Expand Down Expand Up @@ -195,21 +195,21 @@ template<typename Scalar> struct CwiseBinaryDeadbandOp {

template<typename Derived>
inline const Eigen::CwiseUnaryOp<
detail::CwiseUnaryDeadbandOp<typename Eigen::ei_traits<Derived>::Scalar>,
Derived
detail::CwiseUnaryDeadbandOp<typename Eigen::internal::traits<Derived>::Scalar>,
const Derived
> deadband(const Eigen::MatrixBase<Derived>& x, double cutoff)
{
return x.unaryExpr(detail::CwiseUnaryDeadbandOp<typename Eigen::ei_traits<Derived>::Scalar>(cutoff));
return x.unaryExpr(detail::CwiseUnaryDeadbandOp<typename Eigen::internal::traits<Derived>::Scalar>(cutoff));
}

template<typename Derived1, typename Derived2>
inline const Eigen::CwiseBinaryOp<
detail::CwiseBinaryDeadbandOp<typename Eigen::ei_traits<Derived1>::Scalar>,
Derived1,
Derived2
detail::CwiseBinaryDeadbandOp<typename Eigen::internal::traits<Derived1>::Scalar>,
const Derived1,
const Derived2
> deadband(const Eigen::MatrixBase<Derived1>& x, const Eigen::MatrixBase<Derived2>& cutoff)
{
return x.binaryExpr(cutoff, detail::CwiseBinaryDeadbandOp<typename Eigen::ei_traits<Derived1>::Scalar>());
return x.binaryExpr(cutoff, detail::CwiseBinaryDeadbandOp<typename Eigen::internal::traits<Derived1>::Scalar>());
}

inline double deadband(double x, double cutoff)
Expand Down
Loading