1 #ifndef __ddBotImageQueue_h
2 #define __ddBotImageQueue_h
15 #include <Eigen/Geometry>
16 #include <lcm/lcm-cpp.hpp>
17 #include <lcmtypes/bot_core/image_t.hpp>
18 #include <lcmtypes/bot_core/images_t.hpp>
20 #include <bot_core/camtrans.h>
21 #include <bot_param/param_client.h>
22 #include <bot_param/param_util.h>
23 #include <bot_frames/bot_frames.h>
25 #include <image_utils/jpeg.h>
26 #include <pcl/filters/passthrough.h>
28 #include <vtkSmartPointer.h>
29 #include <vtkPNGWriter.h>
30 #include <vtkImageData.h>
31 #include <vtkPolyData.h>
32 #include <vtkPointData.h>
33 #include <vtkUnsignedCharArray.h>
34 #include <vtkFloatArray.h>
35 #include <vtkTransform.h>
36 #include <vtkMatrix4x4.h>
61 mHasCalibration =
false;
62 mZlibCompression =
false;
63 mImageMessage.width = 0;
64 mImageMessage.height = 0;
65 mImageMessage.utime = 0;
70 if (mCamTrans) bot_camtrans_destroy(mCamTrans);
82 bool addCameraStream(
const QString& channel);
88 bool addCameraStream(
const QString& channel,
const QString& cameraName,
int imageType);
90 void init(
ddLCMThread* lcmThread,
const QString& botConfigFile);
92 qint64 getImage(
const QString& cameraName, vtkImageData* image);
93 qint64 getCurrentImageTime(
const QString& cameraName);
98 QList<double> getCameraFrustumBounds(
const QString& cameraName);
100 QList<double> unprojectPixel(
const QString& cameraName,
int px,
int py);
102 void colorizePoints(
const QString& cameraName, vtkPolyData* polyData);
104 void computeTextureCoords(
const QString& cameraName, vtkPolyData* polyData);
106 void publishRGBDImagesMessage(
const QString& channel, vtkImageData* colorImage, vtkImageData* depthImage, qint64 utime);
107 void publishRGBImageMessage(
const QString& channel, vtkImageData* image, qint64 utime);
115 void getPointCloudFromImages(
const QString& channel, vtkPolyData* polyData,
int decimation,
int removeSize,
float rangeThreshold);
120 int projectPoints(
const QString& cameraName, vtkPolyData* polyData);
122 void getBodyToCameraTransform(
const QString& cameraName, vtkTransform* transform);
126 void getCameraProjectionTransform(
const QString& cameraName, vtkTransform* transform);
128 int getTransform(
const QString& fromFrame,
const QString& toFrame, qint64 utime, vtkTransform* transform);
129 int getTransform(
const QString& fromFrame,
const QString& toFrame, vtkTransform* transform);
131 QStringList getBotFrameNames()
const;
132 QStringList getCameraNames()
const;
136 void onImagesMessage(
const QByteArray& data,
const QString& channel);
137 void onImageMessage(
const QByteArray& data,
const QString& channel);
141 CameraData* getCameraData(
const QString& cameraName);
142 bool initCameraData(
const QString& cameraName, CameraData* cameraData);
144 vtkSmartPointer<vtkImageData> toVtkImage(CameraData* cameraData);
146 void colorizePoints(vtkPolyData* polyData, CameraData* cameraData);
148 void computeTextureCoords(vtkPolyData* polyData, CameraData* cameraData);
150 QList<double> getCameraFrustumBounds(CameraData* cameraData);
152 int getTransform(std::string from_frame, std::string to_frame,
153 Eigen::Isometry3d& mat, qint64 utime);
QMap< QString, ddLCMSubscriber * > mSubscribers
QMap< QString, QMap< int, QString > > mChannelMap
QMap< QString, CameraData * > mCameraData
Eigen::Isometry3d mBodyToCamera
QMap< QString, bot_core::images_t > mImagesMessageMap
std::vector< uint8_t > mImageBuffer
Eigen::Isometry3d mLocalToCamera
bot_core::image_t mImageMessage