OpenNIGrabber.h
Go to the documentation of this file.
00001 // -*- C++ -*-
00010 #ifndef OPENNI_GRABBER_H
00011 #define OPENNI_GRABBER_H
00012 
00013 #include <rtm/Manager.h>
00014 #include <rtm/DataFlowComponentBase.h>
00015 #include <rtm/CorbaPort.h>
00016 #include <rtm/DataInPort.h>
00017 #include <rtm/DataOutPort.h>
00018 #include <rtm/idl/BasicDataTypeSkel.h>
00019 #include <pcl/io/openni2_grabber.h>
00020 #include <pcl/io/pcd_io.h>
00021 #include "hrpsys/idl/pointcloud.hh"
00022 #include "hrpsys/idl/Img.hh"
00023 
00024 // Service implementation headers
00025 // <rtc-template block="service_impl_h">
00026 
00027 // </rtc-template>
00028 
00029 // Service Consumer stub headers
00030 // <rtc-template block="consumer_stub_h">
00031 
00032 // </rtc-template>
00033 
00034 using namespace RTC;
00035 
00039 class OpenNIGrabber
00040   : public RTC::DataFlowComponentBase
00041 {
00042  public:
00047   OpenNIGrabber(RTC::Manager* manager);
00051   virtual ~OpenNIGrabber();
00052 
00053   // The initialize action (on CREATED->ALIVE transition)
00054   // formaer rtc_init_entry()
00055   virtual RTC::ReturnCode_t onInitialize();
00056 
00057   // The finalize action (on ALIVE->END transition)
00058   // formaer rtc_exiting_entry()
00059   // virtual RTC::ReturnCode_t onFinalize();
00060 
00061   // The startup action when ExecutionContext startup
00062   // former rtc_starting_entry()
00063   // virtual RTC::ReturnCode_t onStartup(RTC::UniqueId ec_id);
00064 
00065   // The shutdown action when ExecutionContext stop
00066   // former rtc_stopping_entry()
00067   // virtual RTC::ReturnCode_t onShutdown(RTC::UniqueId ec_id);
00068 
00069   // The activated action (Active state entry action)
00070   // former rtc_active_entry()
00071   virtual RTC::ReturnCode_t onActivated(RTC::UniqueId ec_id);
00072 
00073   // The deactivated action (Active state exit action)
00074   // former rtc_active_exit()
00075   virtual RTC::ReturnCode_t onDeactivated(RTC::UniqueId ec_id);
00076 
00077   // The execution action that is invoked periodically
00078   // former rtc_active_do()
00079   virtual RTC::ReturnCode_t onExecute(RTC::UniqueId ec_id);
00080 
00081   // The aborting action when main logic error occurred.
00082   // former rtc_aborting_entry()
00083   // virtual RTC::ReturnCode_t onAborting(RTC::UniqueId ec_id);
00084 
00085   // The error action in ERROR state
00086   // former rtc_error_do()
00087   // virtual RTC::ReturnCode_t onError(RTC::UniqueId ec_id);
00088 
00089   // The reset action that is invoked resetting
00090   // This is same but different the former rtc_init_entry()
00091   // virtual RTC::ReturnCode_t onReset(RTC::UniqueId ec_id);
00092 
00093   // The state update action that is invoked after onExecute() action
00094   // no corresponding operation exists in OpenRTm-aist-0.2.0
00095   // virtual RTC::ReturnCode_t onStateUpdate(RTC::UniqueId ec_id);
00096 
00097   // The action that is invoked when execution context's rate is changed
00098   // no corresponding operation exists in OpenRTm-aist-0.2.0
00099   // virtual RTC::ReturnCode_t onRateChanged(RTC::UniqueId ec_id);
00100 
00101 
00102  protected:
00103   // Configuration variable declaration
00104   // <rtc-template block="config_declare">
00105   
00106   // </rtc-template>
00107 
00108   Img::TimedCameraImage m_image;
00109   Img::TimedCameraImage m_depth;
00110   PointCloudTypes::PointCloud m_cloud;
00111 
00112   // DataInPort declaration
00113   // <rtc-template block="inport_declare">
00114   
00115   // </rtc-template>
00116 
00117   // DataOutPort declaration
00118   // <rtc-template block="outport_declare">
00119   OutPort<PointCloudTypes::PointCloud> m_cloudOut;
00120   OutPort<Img::TimedCameraImage> m_imageOut;
00121   OutPort<Img::TimedCameraImage> m_depthOut;
00122   
00123   // </rtc-template>
00124 
00125   // CORBA Port declaration
00126   // <rtc-template block="corbaport_declare">
00127   
00128   // </rtc-template>
00129 
00130   // Service declaration
00131   // <rtc-template block="service_declare">
00132   
00133   // </rtc-template>
00134 
00135   // Consumer declaration
00136   // <rtc-template block="consumer_declare">
00137   
00138   // </rtc-template>
00139 
00140  private:
00141   void grabberCallbackColorImage(const boost::shared_ptr<pcl::io::Image>& image);
00142   void grabberCallbackDepthImage(const boost::shared_ptr<pcl::io::DepthImage>& image);
00143   void grabberCallbackColorAndDepthImage(const boost::shared_ptr<pcl::io::Image>& image, const boost::shared_ptr<pcl::io::DepthImage>& depth, float reciprocalFocalLength);
00144   void grabberCallbackPointCloudRGBA(const pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr &cloud);
00145   void grabberCallbackPointCloud(const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &cloud);
00146   void outputColorImage(const boost::shared_ptr<pcl::io::Image>& image);
00147   void outputDepthImage(const boost::shared_ptr<pcl::io::DepthImage>& image);
00148 
00149   pcl::Grabber *m_interface;
00150   int m_debugLevel;
00151   bool m_outputColorImage;
00152   bool m_outputDepthImage;
00153   bool m_outputPointCloud;
00154   bool m_outputPointCloudRGBA;
00155   bool m_requestToWriteImage;
00156   bool m_requestToWritePointCloud;
00157   int dummy;
00158 };
00159 
00160 
00161 extern "C"
00162 {
00163   void OpenNIGrabberInit(RTC::Manager* manager);
00164 };
00165 
00166 #endif // OPENNI_GRABBER_H


hrpsys
Author(s): AIST, Fumio Kanehiro
autogenerated on Wed May 15 2019 05:02:18