00001 #include <boost/python.hpp> 00002 #include "hrpsys/util/BodyRTC.h" 00003 #include "hrpsys/util/GLbody.h" 00004 00005 class PyLink; 00006 class PySimulator; 00007 00008 class PyBody : public BodyRTC, public GLbody 00009 { 00010 public: 00011 enum{STRUCTURE, KINEMATICS}; 00012 00013 PyBody(RTC::Manager* manager = &RTC::Manager::instance()); 00014 virtual ~PyBody(); 00015 //std::vector<double> getPosition(); 00016 PyObject *getPosition(); 00017 void setPosition(PyObject *v); 00018 PyObject *getRotation(); 00019 void setRotation(PyObject *v); 00020 PyObject *getPosture(); 00021 void setPosture(PyObject *v); 00022 std::string getName(); 00023 void calcForwardKinematics(); 00024 PyLink *rootLink(); 00025 PyLink *link(std::string name); 00026 PyObject *links(); 00027 PyLink *joint(int i); 00028 PyObject *joints(); 00029 PyObject *calcCM(); 00030 void notifyChanged(int change); 00031 void setListener(PySimulator *i_sim); 00032 static void moduleInit(RTC::Manager*); 00033 private: 00034 static const char* pybody_spec[]; 00035 PySimulator *simulator; 00036 }; 00037