00001 #ifndef __RTCBODY_H__ 00002 #define __RTCBODY_H__ 00003 00004 #include <rtm/idl/BasicDataType.hh> 00005 #include <rtm/idl/ExtendedDataTypes.hh> 00006 #include "hrpsys/idl/HRPDataTypes.hh" 00007 #include <hrpModel/Body.h> 00008 #include <rtm/DataFlowComponentBase.h> 00009 #include <rtm/DataInPort.h> 00010 #include <rtm/DataOutPort.h> 00011 #include <rtm/idl/BasicDataTypeSkel.h> 00012 #include <rtm/idl/ExtendedDataTypesSkel.h> 00013 00014 class RTCBody : public hrp::Body 00015 { 00016 public: 00017 RTCBody(); 00018 ~RTCBody(); 00019 void createPorts(RTC::DataFlowComponentBase *comp); 00020 void input(); 00021 void output(OpenHRP::RobotState& state); 00022 private: 00023 RTC::TimedDoubleSeq m_tau; 00024 RTC::TimedDoubleSeq m_qCmd, m_dqCmd, m_ddqCmd; 00025 00026 RTC::InPort<RTC::TimedDoubleSeq> m_tauIn; 00027 RTC::InPort<RTC::TimedDoubleSeq> m_qCmdIn; 00028 RTC::InPort<RTC::TimedDoubleSeq> m_dqCmdIn; 00029 RTC::InPort<RTC::TimedDoubleSeq> m_ddqCmdIn; 00030 // 00031 RTC::TimedPoint3D m_pos; 00032 RTC::TimedOrientation3D m_rpy; 00033 RTC::TimedDoubleSeq m_q; 00034 std::vector<RTC::TimedAcceleration3D> m_acc; 00035 std::vector<RTC::TimedAngularVelocity3D> m_rate; 00036 std::vector<RTC::TimedDoubleSeq> m_force; 00037 00038 RTC::OutPort<RTC::TimedPoint3D> m_posOut; 00039 RTC::OutPort<RTC::TimedOrientation3D> m_rpyOut; 00040 RTC::OutPort<RTC::TimedDoubleSeq> m_qOut; 00041 std::vector<RTC::OutPort<RTC::TimedAcceleration3D> *> m_accOut; 00042 std::vector<RTC::OutPort<RTC::TimedAngularVelocity3D> *> m_rateOut; 00043 std::vector<RTC::OutPort<RTC::TimedDoubleSeq> *> m_forceOut; 00044 00045 bool m_highgain; 00046 }; 00047 00048 typedef boost::shared_ptr<RTCBody> RTCBodyPtr; 00049 00050 #endif