00001 00024 #ifndef RGBDTOOLS_RGBD_KEYFRAME_H 00025 #define RGBDTOOLS_RGBD_KEYFRAME_H 00026 00027 #include <boost/filesystem.hpp> 00028 00029 #include "rgbdtools/rgbd_frame.h" 00030 00031 namespace rgbdtools { 00032 00039 class RGBDKeyframe: public RGBDFrame 00040 { 00041 public: 00042 00043 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 00044 00047 RGBDKeyframe(); 00048 00052 RGBDKeyframe(const RGBDFrame& frame); 00053 00054 Pose pose; 00055 00056 bool manually_added; 00057 00061 double path_length_linear; 00062 00066 double path_length_angular; 00067 00078 static bool save(const RGBDKeyframe& keyframe, 00079 const std::string& path); 00080 00091 static bool load(RGBDKeyframe& keyframe, 00092 const std::string& path); 00093 }; 00094 00095 typedef Eigen::aligned_allocator<RGBDKeyframe> KeyframeAllocator; 00096 typedef std::vector<RGBDKeyframe, KeyframeAllocator> KeyframeVector; 00097 00106 bool saveKeyframes(const KeyframeVector& keyframes, 00107 const std::string& path); 00108 00117 bool loadKeyframes(KeyframeVector& keyframes, 00118 const std::string& path); 00119 00120 } // namespace rgbdtools 00121 00122 #endif // RGBDTOOLS_RGBD_KEYFRAME_H