diff --git a/src/icub/CMakeLists.txt b/src/icub/CMakeLists.txt index 475aa9631cd..de55ef303da 100644 --- a/src/icub/CMakeLists.txt +++ b/src/icub/CMakeLists.txt @@ -7,8 +7,8 @@ project(iDynTree_ICUB CXX) SET(iDynTree_ICUB_source src/iKinConversions.cpp src/skinDynLibConversions.cpp) -SET(iDynTree_ICUB_header include/iDynTree/iCub/iKinConversions.h - include/iDynTree/iCub/skinDynLibConversions.h) +SET(iDynTree_ICUB_header include/iDynTree/iKinConversions.h + include/iDynTree/skinDynLibConversions.h) SOURCE_GROUP("Source Files" FILES ${iDynTree_ICUB_source}) SOURCE_GROUP("Header Files" FILES ${iDynTree_ICUB_header}) @@ -52,9 +52,13 @@ install(TARGETS ${libraryname} RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib - PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/iDynTree/iCub" COMPONENT dev) + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/iDynTree" COMPONENT dev) set_property(GLOBAL APPEND PROPERTY ${VARS_PREFIX}_TARGETS idyntree-icub) set_property(GLOBAL APPEND PROPERTY IDYNTREE_TREE_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include) +# Install headers in deprecated location +install(DIRECTORY include/iDynTree/iCub + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/iDynTree/iCub") + diff --git a/src/icub/include/iDynTree/iCub/skinDynLibConversions.h b/src/icub/include/iDynTree/iCub/skinDynLibConversions.h index d317339f0be..bdc61a163cb 100644 --- a/src/icub/include/iDynTree/iCub/skinDynLibConversions.h +++ b/src/icub/include/iDynTree/iCub/skinDynLibConversions.h @@ -1,182 +1,17 @@ /* - * Copyright (C) 2016 Fondazione Istituto Italiano di Tecnologia + * Copyright (C) 2017 Fondazione Istituto Italiano di Tecnologia * Authors: Silvio Traversaro * CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT * */ -#ifndef IDYNTREE_SKINDYNLIB_CONVERSIONS_H -#define IDYNTREE_SKINDYNLIB_CONVERSIONS_H +#ifndef IDYNTREE_SKINDYNLIB_CONVERSIONS_H_LEGACY_LOCATION +#define IDYNTREE_SKINDYNLIB_CONVERSIONS_H_LEGACY_LOCATION -#include -#include - -#include -#include - -#include -#include - -namespace iDynTree -{ -class Model; -class LinkContactWrenches; - -/** - * Identifier for a link and a body frame in skinDynLib. - */ -class skinDynLibLinkID -{ -public: - int body_part; - int local_link_index; - - bool operator<(const skinDynLibLinkID& k) const - { - if(this->body_part < k.body_part) - { - return true; - } - else if(this->body_part > k.body_part) - { - return false; - } - else - { - return this->local_link_index < k.local_link_index; - } - } - - bool operator==(const skinDynLibLinkID& k) const - { - return (this->body_part == k.body_part && - this->local_link_index == k.local_link_index); - } -}; - -/** - * Identifier for a link and frame couple in an iDynTree model. - */ -class iDynTreeLinkAndFrame -{ - public: - LinkIndex link_index; - FrameIndex frame_index; -}; - - -/** - * \brief Helper for conversion between iDynTree data structures and skinDynLib data structures. - * - * There are several differences to handle: - * * In iDynTree, link and frames and identified by name - * and (in the context of an instantiated model) by their index, while in - * skinDynLib link are identified by the bodyPart, a numeric id representing a part of the robot - * the linkIndex, a progressive numeric id uniquely identifyng the link in the part. - * * The link frame of a link in iDynTree does not match the link frame assumed in skinDynLib. - * For this reason we need to specify an additional frame to specify the frame of the link - * used by skinDynLib, to properly convert the contact data back and forth. - */ -class skinDynLibConversionsHelper -{ -private: - std::map skinDynLibLinkMap; - -public: - /** - * This function enables interoperability between the iDynTree library - * and the iCub skinDynLib library. - * - * This function can be used to assign a match between a skinDynLib link, - * and a iDynTree link. - * - * In skinDynLib a link is represented by two numbers: - * * the bodyPart, a numeric id representing a part of the robot - * * the linkIndex, a progressive numeric id uniquely identifyng the link in the part - * We associate this to two iDynTree concept - * * the link_name of the considered link - * * the frame_name of the frame used by skinDynLib when dealing with that link. - * This frame can be the link frame, in this case frame_name == link_name, - * otherwise another frame can be used, under the constraint that this frame - * must be rigidly attached to the considered link. - * - */ - bool addSkinDynLibAlias(const Model& model, - const std::string iDynTree_link_name, const std::string iDynTree_frame_name, - const int skinDynLib_body_part, const int skinDynLib_link_index); - - /** - * Retrieve the skinDynLib alias of a link, added to the class using the addSkinDynLibAlias method. - */ - bool getSkinDynLibAlias(const Model & model, - const std::string iDynTree_link_name, - std::string & iDynTree_frame_name, - int & skinDynLib_body_part, - int & skinDynLib_link_index) const; - - /** - * Retrieve the skinDynLib alias of a link, added to the class using the addSkinDynLibAlias method. - */ - bool getSkinDynLibAlias(const Model & model, - const LinkIndex iDynTree_link_index, - LinkIndex & iDynTree_frame_index, - int & skinDynLib_body_part, - int & skinDynLib_link_index) const; - - /** - * Convert a skinDynLib identifier to a iDynTree link/frame identifier. - */ - bool skinDynLib2iDynTree(const int skinDynLib_body_part, - const int skinDynLib_link_index, - int & iDynTree_link_index, - int & iDynTree_frame_index) const; - /** - * Remove a alias in the form (body_part, link_index) for a link - */ - bool removeSkinDynLibAlias(const Model & model, const std::string linkName); - - /** - * Convert a dynContactList to a LinkUnknownWrenchContacts. - * - * The contactId contained in the dynContactList is preserved and saved - * in the appropriate attribute in the LinkUnknownWrenchContacts class. - */ - bool fromSkinDynLibToiDynTree(const Model& model, - const iCub::skinDynLib::dynContactList & dynList, - LinkUnknownWrenchContacts & unknowns); - - /** - * Convert a skinContactList to a LinkUnknownWrenchContacts. - * - * The contactId contained in the skinContactList is preserved and saved - * in the appropriate attribute in the LinkUnknownWrenchContacts class. - */ - bool fromSkinDynLibToiDynTree(const Model& model, - const iCub::skinDynLib::skinContactList & skinList, - LinkUnknownWrenchContacts & unknowns); - - /** - * Convert a LinkContactWrenches to a iCub::skinDynLib::dynContactList. - * - * This function creates a new dynContactList. - * - */ - bool fromiDynTreeToSkinDynLib(const Model& model, - const LinkContactWrenches & contactWrenches, - iCub::skinDynLib::dynContactList & dynList); - - /** - * Update an existing skinContactList in which some forces and torque are - * unknown using the estimated contact wrenches contained in - * a LinkContactWrenches. The matching between the skinContactList and - * the LinkContactWrenches contacts is done through the contactId, that then - * should be consistent between the two functions. - */ - bool updateSkinContactListFromLinkContactWrenches(const Model& model, - const LinkContactWrenches & contactWrenches, - iCub::skinDynLib::skinContactList & skinContactListToUpdate); -}; +#ifdef __DEPRECATED +#warning is deprecated. Please use . To disable this warning use -Wno-deprecated. +#endif -} +#include -#endif +#endif /* IDYNTREE_SKINDYNLIB_CONVERSIONS_H_LEGACY_LOCATION */ diff --git a/src/icub/include/iDynTree/iCub/iKinConversions.h b/src/icub/include/iDynTree/iKinConversions.h similarity index 100% rename from src/icub/include/iDynTree/iCub/iKinConversions.h rename to src/icub/include/iDynTree/iKinConversions.h diff --git a/src/icub/include/iDynTree/skinDynLibConversions.h b/src/icub/include/iDynTree/skinDynLibConversions.h new file mode 100644 index 00000000000..d317339f0be --- /dev/null +++ b/src/icub/include/iDynTree/skinDynLibConversions.h @@ -0,0 +1,182 @@ +/* + * Copyright (C) 2016 Fondazione Istituto Italiano di Tecnologia + * Authors: Silvio Traversaro + * CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT + * + */ + +#ifndef IDYNTREE_SKINDYNLIB_CONVERSIONS_H +#define IDYNTREE_SKINDYNLIB_CONVERSIONS_H + +#include +#include + +#include +#include + +#include +#include + +namespace iDynTree +{ +class Model; +class LinkContactWrenches; + +/** + * Identifier for a link and a body frame in skinDynLib. + */ +class skinDynLibLinkID +{ +public: + int body_part; + int local_link_index; + + bool operator<(const skinDynLibLinkID& k) const + { + if(this->body_part < k.body_part) + { + return true; + } + else if(this->body_part > k.body_part) + { + return false; + } + else + { + return this->local_link_index < k.local_link_index; + } + } + + bool operator==(const skinDynLibLinkID& k) const + { + return (this->body_part == k.body_part && + this->local_link_index == k.local_link_index); + } +}; + +/** + * Identifier for a link and frame couple in an iDynTree model. + */ +class iDynTreeLinkAndFrame +{ + public: + LinkIndex link_index; + FrameIndex frame_index; +}; + + +/** + * \brief Helper for conversion between iDynTree data structures and skinDynLib data structures. + * + * There are several differences to handle: + * * In iDynTree, link and frames and identified by name + * and (in the context of an instantiated model) by their index, while in + * skinDynLib link are identified by the bodyPart, a numeric id representing a part of the robot + * the linkIndex, a progressive numeric id uniquely identifyng the link in the part. + * * The link frame of a link in iDynTree does not match the link frame assumed in skinDynLib. + * For this reason we need to specify an additional frame to specify the frame of the link + * used by skinDynLib, to properly convert the contact data back and forth. + */ +class skinDynLibConversionsHelper +{ +private: + std::map skinDynLibLinkMap; + +public: + /** + * This function enables interoperability between the iDynTree library + * and the iCub skinDynLib library. + * + * This function can be used to assign a match between a skinDynLib link, + * and a iDynTree link. + * + * In skinDynLib a link is represented by two numbers: + * * the bodyPart, a numeric id representing a part of the robot + * * the linkIndex, a progressive numeric id uniquely identifyng the link in the part + * We associate this to two iDynTree concept + * * the link_name of the considered link + * * the frame_name of the frame used by skinDynLib when dealing with that link. + * This frame can be the link frame, in this case frame_name == link_name, + * otherwise another frame can be used, under the constraint that this frame + * must be rigidly attached to the considered link. + * + */ + bool addSkinDynLibAlias(const Model& model, + const std::string iDynTree_link_name, const std::string iDynTree_frame_name, + const int skinDynLib_body_part, const int skinDynLib_link_index); + + /** + * Retrieve the skinDynLib alias of a link, added to the class using the addSkinDynLibAlias method. + */ + bool getSkinDynLibAlias(const Model & model, + const std::string iDynTree_link_name, + std::string & iDynTree_frame_name, + int & skinDynLib_body_part, + int & skinDynLib_link_index) const; + + /** + * Retrieve the skinDynLib alias of a link, added to the class using the addSkinDynLibAlias method. + */ + bool getSkinDynLibAlias(const Model & model, + const LinkIndex iDynTree_link_index, + LinkIndex & iDynTree_frame_index, + int & skinDynLib_body_part, + int & skinDynLib_link_index) const; + + /** + * Convert a skinDynLib identifier to a iDynTree link/frame identifier. + */ + bool skinDynLib2iDynTree(const int skinDynLib_body_part, + const int skinDynLib_link_index, + int & iDynTree_link_index, + int & iDynTree_frame_index) const; + /** + * Remove a alias in the form (body_part, link_index) for a link + */ + bool removeSkinDynLibAlias(const Model & model, const std::string linkName); + + /** + * Convert a dynContactList to a LinkUnknownWrenchContacts. + * + * The contactId contained in the dynContactList is preserved and saved + * in the appropriate attribute in the LinkUnknownWrenchContacts class. + */ + bool fromSkinDynLibToiDynTree(const Model& model, + const iCub::skinDynLib::dynContactList & dynList, + LinkUnknownWrenchContacts & unknowns); + + /** + * Convert a skinContactList to a LinkUnknownWrenchContacts. + * + * The contactId contained in the skinContactList is preserved and saved + * in the appropriate attribute in the LinkUnknownWrenchContacts class. + */ + bool fromSkinDynLibToiDynTree(const Model& model, + const iCub::skinDynLib::skinContactList & skinList, + LinkUnknownWrenchContacts & unknowns); + + /** + * Convert a LinkContactWrenches to a iCub::skinDynLib::dynContactList. + * + * This function creates a new dynContactList. + * + */ + bool fromiDynTreeToSkinDynLib(const Model& model, + const LinkContactWrenches & contactWrenches, + iCub::skinDynLib::dynContactList & dynList); + + /** + * Update an existing skinContactList in which some forces and torque are + * unknown using the estimated contact wrenches contained in + * a LinkContactWrenches. The matching between the skinContactList and + * the LinkContactWrenches contacts is done through the contactId, that then + * should be consistent between the two functions. + */ + bool updateSkinContactListFromLinkContactWrenches(const Model& model, + const LinkContactWrenches & contactWrenches, + iCub::skinDynLib::skinContactList & skinContactListToUpdate); +}; + +} + +#endif diff --git a/src/icub/src/iKinConversions.cpp b/src/icub/src/iKinConversions.cpp index fe6bdb23bc5..b9b809f6b0c 100644 --- a/src/icub/src/iKinConversions.cpp +++ b/src/icub/src/iKinConversions.cpp @@ -8,7 +8,7 @@ * http://www.codyco.eu */ -#include +#include #include #include diff --git a/src/icub/src/skinDynLibConversions.cpp b/src/icub/src/skinDynLibConversions.cpp index 760bcccdda8..f99b98174ad 100644 --- a/src/icub/src/skinDynLibConversions.cpp +++ b/src/icub/src/skinDynLibConversions.cpp @@ -8,7 +8,7 @@ * http://www.codyco.eu */ -#include +#include #include #include diff --git a/src/tests/icub_consistency/iCubExternalWrenchesEstimationConsistencyTest.cpp b/src/tests/icub_consistency/iCubExternalWrenchesEstimationConsistencyTest.cpp index 5cbcaaca8bd..f5498e5ade0 100644 --- a/src/tests/icub_consistency/iCubExternalWrenchesEstimationConsistencyTest.cpp +++ b/src/tests/icub_consistency/iCubExternalWrenchesEstimationConsistencyTest.cpp @@ -42,7 +42,7 @@ #include #include #include -#include +#include using namespace iCub::iDyn; using namespace iCub::ctrl; diff --git a/src/tests/icub_consistency/iKinConsistencyTest.cpp b/src/tests/icub_consistency/iKinConsistencyTest.cpp index 5b3f7a0c4bf..b361415c6e5 100644 --- a/src/tests/icub_consistency/iKinConsistencyTest.cpp +++ b/src/tests/icub_consistency/iKinConsistencyTest.cpp @@ -7,7 +7,7 @@ #include -#include +#include #include diff --git a/src/tools/urdf2dh.cpp b/src/tools/urdf2dh.cpp index 7ae9d7e5cf7..4f67bd2d73e 100644 --- a/src/tools/urdf2dh.cpp +++ b/src/tools/urdf2dh.cpp @@ -42,7 +42,7 @@ #include #include #include -#include +#include #include #include