From e69d61e6dba4dcba4b0a83c375708fa3bf6fbb71 Mon Sep 17 00:00:00 2001 From: Mansard <nmansard@laas.fr> Date: Wed, 12 Nov 2014 19:04:53 +0100 Subject: [PATCH] Python: Added urdf parser. --- CMakeLists.txt | 3 +++ src/python/module.cpp | 1 + src/python/parsers.hpp | 41 +++++++++++++++++++++++++++++++++++++++++ src/python/python.cpp | 5 +++++ src/python/python.hpp | 1 + 5 files changed, 51 insertions(+) create mode 100644 src/python/parsers.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c16a48728..cc144480f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,6 +84,7 @@ SET(HEADERS python/model.hpp python/data.hpp python/algorithms.hpp + python/parsers.hpp ) MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio") @@ -117,6 +118,7 @@ MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}") SET(PYWRAP ${PROJECT_NAME}_pywrap) ADD_LIBRARY(${PYWRAP} SHARED src/python/module.cpp src/python/python.cpp) PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy) +PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} urdfdom) TARGET_LINK_LIBRARIES(${PYWRAP} ${Boost_LIBRARIES} eigenpy) SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}") @@ -128,6 +130,7 @@ INSTALL(FILES SET(PYTHON_FILES python/__init__.py python/utils.py + python/robot_wrapper.py ) FOREACH(python ${PYTHON_FILES}) GET_FILENAME_COMPONENT(pythonFile ${python} NAME) diff --git a/src/python/module.cpp b/src/python/module.cpp index 690ba9c0f..677e2390b 100644 --- a/src/python/module.cpp +++ b/src/python/module.cpp @@ -25,5 +25,6 @@ BOOST_PYTHON_MODULE(libpinocchio_pywrap) se3::python::exposeModel(); se3::python::exposeAlgorithms(); + se3::python::exposeParsers(); } diff --git a/src/python/parsers.hpp b/src/python/parsers.hpp new file mode 100644 index 000000000..e1755beec --- /dev/null +++ b/src/python/parsers.hpp @@ -0,0 +1,41 @@ +#ifndef __se3_python_parsers_hpp__ +#define __se3_python_parsers_hpp__ + +#include <eigenpy/exception.hpp> +#include <eigenpy/eigenpy.hpp> + +#include "pinocchio/python/model.hpp" +#include "pinocchio/python/data.hpp" + +#include "pinocchio/multibody/parser/urdf.hpp" + +namespace se3 +{ + namespace python + { + struct ParsersPythonVisitor + { + static ModelHandler buildModelFromUrdf( const std::string & filename, + bool ff ) + { + Model * model = new Model(); + *model = se3::urdf::buildModel(filename,ff); + return ModelHandler(model,true); + } + + /* --- Expose --------------------------------------------------------- */ + static void expose() + { + bp::def("buildModelFromUrdf",buildModelFromUrdf, + bp::args("Filename (string)", + "Free flyer (bool, false for a fixed robot)"), + "Parse the urdf file given in input and return a proper pinocchio model " + "(remember to create the corresponding data structure)."); + } + + }; + + }} // namespace se3::python + +#endif // ifndef __se3_python_data_hpp__ + diff --git a/src/python/python.cpp b/src/python/python.cpp index 8554689a5..8ad5ee078 100644 --- a/src/python/python.cpp +++ b/src/python/python.cpp @@ -7,6 +7,7 @@ #include "pinocchio/python/model.hpp" #include "pinocchio/python/data.hpp" #include "pinocchio/python/algorithms.hpp" +#include "pinocchio/python/parsers.hpp" namespace se3 { @@ -41,4 +42,8 @@ namespace se3 { AlgorithmsPythonVisitor::expose(); } + void exposeParsers() + { + ParsersPythonVisitor::expose(); + } }} // namespace se3::python diff --git a/src/python/python.hpp b/src/python/python.hpp index f79d68dce..c9952eca9 100644 --- a/src/python/python.hpp +++ b/src/python/python.hpp @@ -12,6 +12,7 @@ namespace se3 void exposeModel(); void exposeAlgorithms(); + void exposeParsers(); }} // namespace se3::python -- GitLab