diff --git a/src/multibody/model.hpp b/src/multibody/model.hpp index 5bd77d650832b6fc647339b7108aabd2298fc40d..24d7f8fdc2510b1f38dc362b513b0e03ccbdf793 100644 --- a/src/multibody/model.hpp +++ b/src/multibody/model.hpp @@ -123,8 +123,8 @@ namespace se3 const SE3 & getJointToFrameTransform( const std::string & name ) const; const SE3 & getJointToFrameTransform( Index index ) const; - void addFrame ( const Frame & frame ); - void addFrame ( const std::string & name, Index index, const SE3 & placement ); + bool addFrame ( const Frame & frame ); + bool addFrame ( const std::string & name, Index index, const SE3 & placement ); }; diff --git a/src/multibody/model.hxx b/src/multibody/model.hxx index e58a089105f2050ff42b5d43cdfc25a644a1d40e..4e154279bc5d65290ad61094e55b8cfb4dabaf7f 100644 --- a/src/multibody/model.hxx +++ b/src/multibody/model.hxx @@ -223,16 +223,26 @@ namespace se3 return operational_frames[index].frame_placement; } - inline void Model::addFrame ( const Frame & frame ) + inline bool Model::addFrame ( const Frame & frame ) { if( !existFrame(frame.name) ) - operational_frames.push_back(frame);nOperationalFrames++; + { + operational_frames.push_back(frame); + nOperationalFrames++; + return true; + } + else + { + return false; + } } - inline void Model::addFrame ( const std::string & name, Index index, const SE3 & placement) + inline bool Model::addFrame ( const std::string & name, Index index, const SE3 & placement) { if( !existFrame(name) ) - addFrame(Frame(name, index, placement)); + return addFrame(Frame(name, index, placement)); + else + return false; } diff --git a/src/python/frame.hpp b/src/python/frame.hpp index a76df1697a845902b3fbe20196961cb5e877634c..0a709dd0dabc754390e5754b38b1ad746e691f3b 100644 --- a/src/python/frame.hpp +++ b/src/python/frame.hpp @@ -49,16 +49,19 @@ namespace se3 .def(bp::init<const std::string&,Index, const SE3_fx&> ((bp::arg("name"),bp::arg("parent id"), bp::arg("placement")), "Initialize from name, parent id and placement wrt parent joint.")) - .def("name", &FramePythonVisitor::getName) - .def("parent_id", &FramePythonVisitor::getParentId) - .def("placement", &FramePythonVisitor::getPlcaementWrtParentJoint) + .add_property("name", &FramePythonVisitor::getName, &FramePythonVisitor::setName) + .add_property("parent_id", &FramePythonVisitor::getParentId, &FramePythonVisitor::setParentId) + .add_property("placement", &FramePythonVisitor::getPlacementWrtParentJoint, &FramePythonVisitor::getPlacementWrtParentJoint) ; } static std::string getName( const Frame & self) { return self.name; } + static void setName(Frame & self, const std::string & name) { self.name = name; } static Index getParentId( const Frame & self) { return self.parent_id; } - static SE3_fx getPlcaementWrtParentJoint( const Frame & self) { return self.frame_placement; } + static void setParentId(Frame & self, Index & parent_id) { self.parent_id = parent_id; } + static SE3_fx getPlacementWrtParentJoint( const Frame & self) { return self.frame_placement; } + static void setPlacementWrtParentJoint(Frame & self, const SE3_fx & placement) { self.frame_placement = placement; } static void expose() {