Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
Kinect2Bridge Class Reference

Public Member Functions

 Kinect2Bridge (const ros::NodeHandle &nh=ros::NodeHandle(), const ros::NodeHandle &priv_nh=ros::NodeHandle("~"))
 
bool start ()
 
void stop ()
 

Private Types

enum  Image {
  IR_SD = 0, IR_SD_RECT, DEPTH_SD, DEPTH_SD_RECT,
  DEPTH_HD, DEPTH_QHD, COLOR_SD_RECT, COLOR_HD,
  COLOR_HD_RECT, COLOR_QHD, COLOR_QHD_RECT, MONO_HD,
  MONO_HD_RECT, MONO_QHD, MONO_QHD_RECT, COUNT
}
 
enum  Status { UNSUBCRIBED = 0, RAW, COMPRESSED, BOTH }
 

Private Member Functions

void callbackStatus ()
 
void createCameraInfo ()
 
void createCameraInfo (const cv::Size &size, const cv::Mat &cameraMatrix, const cv::Mat &distortion, const cv::Mat &rotation, const cv::Mat &projection, sensor_msgs::CameraInfo &cameraInfo) const
 
void createCompressed (const cv::Mat &image, const std_msgs::Header &header, const Image type, sensor_msgs::CompressedImage &msgImage) const
 
std_msgs::Header createHeader (ros::Time &last, ros::Time &other)
 
void createImage (const cv::Mat &image, const std_msgs::Header &header, const Image type, sensor_msgs::Image &msgImage) const
 
void initCalibration (const std::string &calib_path, const std::string &sensor)
 
void initCompression (const int32_t jpegQuality, const int32_t pngLevel, const bool use_png)
 
void initConfig (const bool bilateral_filter, const bool edge_aware_filter, const double minDepth, const double maxDepth)
 
bool initDevice (std::string &sensor)
 
bool initialize ()
 
bool initPipeline (const std::string &method, const int32_t device)
 
bool initRegistration (const std::string &method, const int32_t device, const double maxDepth)
 
void initTopics (const int32_t queueSize, const std::string &base_name)
 
bool loadCalibrationDepthFile (const std::string &filename, double &depthShift) const
 
bool loadCalibrationFile (const std::string &filename, cv::Mat &cameraMatrix, cv::Mat &distortion) const
 
bool loadCalibrationPoseFile (const std::string &filename, cv::Mat &rotation, cv::Mat &translation) const
 
void main ()
 
void processColor (std::vector< cv::Mat > &images, const std::vector< Status > &status)
 
void processIrDepth (const cv::Mat &depth, std::vector< cv::Mat > &images, const std::vector< Status > &status)
 
void publishImages (const std::vector< cv::Mat > &images, const std_msgs::Header &header, const std::vector< Status > &status, const size_t frame, size_t &pubFrame, const size_t begin, const size_t end)
 
void publishStaticTF ()
 
void receiveColor ()
 
bool receiveFrames (libfreenect2::SyncMultiFrameListener *listener, libfreenect2::FrameMap &frames)
 
void receiveIrDepth ()
 
void threadDispatcher (const size_t id)
 
bool updateStatus (bool &isSubscribedColor, bool &isSubscribedDepth)
 

Static Private Member Functions

static void setThreadName (const std::string &name)
 

Private Attributes

std::string baseNameTF
 
cv::Mat cameraMatrixColor
 
cv::Mat cameraMatrixDepth
 
cv::Mat cameraMatrixIr
 
cv::Mat cameraMatrixLowRes
 
bool clientConnected
 
libfreenect2::Frame color
 
libfreenect2::Freenect2Device::ColorCameraParams colorParams
 
std::vector< ros::PublishercompressedPubs
 
std::string compression16BitExt
 
std::string compression16BitString
 
std::vector< int > compressionParams
 
double deltaT
 
DepthRegistrationdepthRegHighRes
 
DepthRegistrationdepthRegLowRes
 
double depthShift
 
libfreenect2::Freenect2Device * device
 
bool deviceActive
 
cv::Mat distortionColor
 
cv::Mat distortionDepth
 
cv::Mat distortionIr
 
double elapsedTimeColor
 
double elapsedTimeIrDepth
 
size_t frameColor
 
size_t frameIrDepth
 
libfreenect2::Freenect2 freenect2
 
std::vector< ros::PublisherimagePubs
 
sensor_msgs::CameraInfo infoHD
 
ros::Publisher infoHDPub
 
sensor_msgs::CameraInfo infoIR
 
ros::Publisher infoIRPub
 
sensor_msgs::CameraInfo infoQHD
 
ros::Publisher infoQHDPub
 
libfreenect2::Freenect2Device::IrCameraParams irParams
 
bool isSubscribedColor
 
bool isSubscribedDepth
 
ros::Time lastColor
 
ros::Time lastDepth
 
libfreenect2::SyncMultiFrameListener * listenerColor
 
libfreenect2::SyncMultiFrameListener * listenerIrDepth
 
std::mutex lockColor
 
std::mutex lockIrDepth
 
std::mutex lockPub
 
std::mutex lockRegHighRes
 
std::mutex lockRegLowRes
 
std::mutex lockRegSD
 
std::mutex lockStatus
 
std::mutex lockSync
 
std::mutex lockTime
 
std::thread mainThread
 
cv::Mat map1Color
 
cv::Mat map1Ir
 
cv::Mat map1LowRes
 
cv::Mat map2Color
 
cv::Mat map2Ir
 
cv::Mat map2LowRes
 
bool nextColor
 
bool nextIrDepth
 
ros::NodeHandle nh
 
libfreenect2::PacketPipeline * packetPipeline
 
ros::NodeHandle priv_nh
 
size_t pubFrameColor
 
size_t pubFrameIrDepth
 
bool publishTF
 
libfreenect2::Registration * registration
 
cv::Mat rotation
 
bool running
 
cv::Size sizeColor
 
cv::Size sizeIr
 
cv::Size sizeLowRes
 
std::vector< Statusstatus
 
std::thread tfPublisher
 
std::vector< std::thread > threads
 
cv::Mat translation
 

Detailed Description

Copyright 2014 University of Bremen, Institute for Artificial Intelligence Author: Thiemo Wiedemeyer wiede.nosp@m.meye.nosp@m.r@cs..nosp@m.uni-.nosp@m.breme.nosp@m.n.de

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Definition at line 60 of file kinect2_bridge.cpp.

Member Enumeration Documentation

enum Kinect2Bridge::Image
private
Enumerator
IR_SD 
IR_SD_RECT 
DEPTH_SD 
DEPTH_SD_RECT 
DEPTH_HD 
DEPTH_QHD 
COLOR_SD_RECT 
COLOR_HD 
COLOR_HD_RECT 
COLOR_QHD 
COLOR_QHD_RECT 
MONO_HD 
MONO_HD_RECT 
MONO_QHD 
MONO_QHD_RECT 
COUNT 

Definition at line 99 of file kinect2_bridge.cpp.

enum Kinect2Bridge::Status
private
Enumerator
UNSUBCRIBED 
RAW 
COMPRESSED 
BOTH 

Definition at line 123 of file kinect2_bridge.cpp.

Constructor & Destructor Documentation

Kinect2Bridge::Kinect2Bridge ( const ros::NodeHandle nh = ros::NodeHandle(),
const ros::NodeHandle priv_nh = ros::NodeHandle("~") 
)
inline

Definition at line 137 of file kinect2_bridge.cpp.

Member Function Documentation

void Kinect2Bridge::callbackStatus ( )
inlineprivate

Definition at line 776 of file kinect2_bridge.cpp.

void Kinect2Bridge::createCameraInfo ( )
inlineprivate

Definition at line 729 of file kinect2_bridge.cpp.

void Kinect2Bridge::createCameraInfo ( const cv::Size &  size,
const cv::Mat &  cameraMatrix,
const cv::Mat &  distortion,
const cv::Mat &  rotation,
const cv::Mat &  projection,
sensor_msgs::CameraInfo &  cameraInfo 
) const
inlineprivate

Definition at line 744 of file kinect2_bridge.cpp.

void Kinect2Bridge::createCompressed ( const cv::Mat &  image,
const std_msgs::Header header,
const Image  type,
sensor_msgs::CompressedImage &  msgImage 
) const
inlineprivate

Definition at line 1416 of file kinect2_bridge.cpp.

std_msgs::Header Kinect2Bridge::createHeader ( ros::Time last,
ros::Time other 
)
inlineprivate

Definition at line 1147 of file kinect2_bridge.cpp.

void Kinect2Bridge::createImage ( const cv::Mat &  image,
const std_msgs::Header header,
const Image  type,
sensor_msgs::Image &  msgImage 
) const
inlineprivate

Definition at line 1374 of file kinect2_bridge.cpp.

void Kinect2Bridge::initCalibration ( const std::string &  calib_path,
const std::string &  sensor 
)
inlineprivate

Definition at line 629 of file kinect2_bridge.cpp.

void Kinect2Bridge::initCompression ( const int32_t  jpegQuality,
const int32_t  pngLevel,
const bool  use_png 
)
inlineprivate

Definition at line 461 of file kinect2_bridge.cpp.

void Kinect2Bridge::initConfig ( const bool  bilateral_filter,
const bool  edge_aware_filter,
const double  minDepth,
const double  maxDepth 
)
inlineprivate

Definition at line 451 of file kinect2_bridge.cpp.

bool Kinect2Bridge::initDevice ( std::string &  sensor)
inlineprivate

Definition at line 521 of file kinect2_bridge.cpp.

bool Kinect2Bridge::initialize ( )
inlineprivate

Definition at line 224 of file kinect2_bridge.cpp.

bool Kinect2Bridge::initPipeline ( const std::string &  method,
const int32_t  device 
)
inlineprivate

Definition at line 379 of file kinect2_bridge.cpp.

bool Kinect2Bridge::initRegistration ( const std::string &  method,
const int32_t  device,
const double  maxDepth 
)
inlineprivate

Definition at line 331 of file kinect2_bridge.cpp.

void Kinect2Bridge::initTopics ( const int32_t  queueSize,
const std::string &  base_name 
)
inlineprivate

Definition at line 484 of file kinect2_bridge.cpp.

bool Kinect2Bridge::loadCalibrationDepthFile ( const std::string &  filename,
double &  depthShift 
) const
inlineprivate

Definition at line 713 of file kinect2_bridge.cpp.

bool Kinect2Bridge::loadCalibrationFile ( const std::string &  filename,
cv::Mat &  cameraMatrix,
cv::Mat &  distortion 
) const
inlineprivate

Definition at line 679 of file kinect2_bridge.cpp.

bool Kinect2Bridge::loadCalibrationPoseFile ( const std::string &  filename,
cv::Mat &  rotation,
cv::Mat &  translation 
) const
inlineprivate

Definition at line 696 of file kinect2_bridge.cpp.

void Kinect2Bridge::main ( )
inlineprivate

Definition at line 875 of file kinect2_bridge.cpp.

void Kinect2Bridge::processColor ( std::vector< cv::Mat > &  images,
const std::vector< Status > &  status 
)
inlineprivate

Definition at line 1231 of file kinect2_bridge.cpp.

void Kinect2Bridge::processIrDepth ( const cv::Mat &  depth,
std::vector< cv::Mat > &  images,
const std::vector< Status > &  status 
)
inlineprivate

Definition at line 1168 of file kinect2_bridge.cpp.

void Kinect2Bridge::publishImages ( const std::vector< cv::Mat > &  images,
const std_msgs::Header header,
const std::vector< Status > &  status,
const size_t  frame,
size_t &  pubFrame,
const size_t  begin,
const size_t  end 
)
inlineprivate

Definition at line 1266 of file kinect2_bridge.cpp.

void Kinect2Bridge::publishStaticTF ( )
inlineprivate

Definition at line 1451 of file kinect2_bridge.cpp.

void Kinect2Bridge::receiveColor ( )
inlineprivate

Definition at line 1050 of file kinect2_bridge.cpp.

bool Kinect2Bridge::receiveFrames ( libfreenect2::SyncMultiFrameListener *  listener,
libfreenect2::FrameMap &  frames 
)
inlineprivate

Definition at line 1124 of file kinect2_bridge.cpp.

void Kinect2Bridge::receiveIrDepth ( )
inlineprivate

Definition at line 986 of file kinect2_bridge.cpp.

static void Kinect2Bridge::setThreadName ( const std::string &  name)
inlinestaticprivate

Definition at line 1484 of file kinect2_bridge.cpp.

bool Kinect2Bridge::start ( )
inline

Definition at line 145 of file kinect2_bridge.cpp.

void Kinect2Bridge::stop ( )
inline

Definition at line 173 of file kinect2_bridge.cpp.

void Kinect2Bridge::threadDispatcher ( const size_t  id)
inlineprivate

Definition at line 945 of file kinect2_bridge.cpp.

bool Kinect2Bridge::updateStatus ( bool &  isSubscribedColor,
bool &  isSubscribedDepth 
)
inlineprivate

Definition at line 835 of file kinect2_bridge.cpp.

Member Data Documentation

std::string Kinect2Bridge::baseNameTF
private

Definition at line 64 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::cameraMatrixColor
private

Definition at line 68 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::cameraMatrixDepth
private

Definition at line 68 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::cameraMatrixIr
private

Definition at line 68 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::cameraMatrixLowRes
private

Definition at line 68 of file kinect2_bridge.cpp.

bool Kinect2Bridge::clientConnected
private

Definition at line 97 of file kinect2_bridge.cpp.

libfreenect2::Frame Kinect2Bridge::color
private

Definition at line 67 of file kinect2_bridge.cpp.

libfreenect2::Freenect2Device::ColorCameraParams Kinect2Bridge::colorParams
private

Definition at line 85 of file kinect2_bridge.cpp.

std::vector<ros::Publisher> Kinect2Bridge::compressedPubs
private

Definition at line 131 of file kinect2_bridge.cpp.

std::string Kinect2Bridge::compression16BitExt
private

Definition at line 64 of file kinect2_bridge.cpp.

std::string Kinect2Bridge::compression16BitString
private

Definition at line 64 of file kinect2_bridge.cpp.

std::vector<int> Kinect2Bridge::compressionParams
private

Definition at line 63 of file kinect2_bridge.cpp.

double Kinect2Bridge::deltaT
private

Definition at line 96 of file kinect2_bridge.cpp.

DepthRegistration * Kinect2Bridge::depthRegHighRes
private

Definition at line 90 of file kinect2_bridge.cpp.

DepthRegistration* Kinect2Bridge::depthRegLowRes
private

Definition at line 90 of file kinect2_bridge.cpp.

double Kinect2Bridge::depthShift
private

Definition at line 96 of file kinect2_bridge.cpp.

libfreenect2::Freenect2Device* Kinect2Bridge::device
private

Definition at line 81 of file kinect2_bridge.cpp.

bool Kinect2Bridge::deviceActive
private

Definition at line 97 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::distortionColor
private

Definition at line 68 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::distortionDepth
private

Definition at line 68 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::distortionIr
private

Definition at line 68 of file kinect2_bridge.cpp.

double Kinect2Bridge::elapsedTimeColor
private

Definition at line 96 of file kinect2_bridge.cpp.

double Kinect2Bridge::elapsedTimeIrDepth
private

Definition at line 96 of file kinect2_bridge.cpp.

size_t Kinect2Bridge::frameColor
private

Definition at line 92 of file kinect2_bridge.cpp.

size_t Kinect2Bridge::frameIrDepth
private

Definition at line 92 of file kinect2_bridge.cpp.

libfreenect2::Freenect2 Kinect2Bridge::freenect2
private

Definition at line 80 of file kinect2_bridge.cpp.

std::vector<ros::Publisher> Kinect2Bridge::imagePubs
private

Definition at line 131 of file kinect2_bridge.cpp.

sensor_msgs::CameraInfo Kinect2Bridge::infoHD
private

Definition at line 133 of file kinect2_bridge.cpp.

ros::Publisher Kinect2Bridge::infoHDPub
private

Definition at line 132 of file kinect2_bridge.cpp.

sensor_msgs::CameraInfo Kinect2Bridge::infoIR
private

Definition at line 133 of file kinect2_bridge.cpp.

ros::Publisher Kinect2Bridge::infoIRPub
private

Definition at line 132 of file kinect2_bridge.cpp.

sensor_msgs::CameraInfo Kinect2Bridge::infoQHD
private

Definition at line 133 of file kinect2_bridge.cpp.

ros::Publisher Kinect2Bridge::infoQHDPub
private

Definition at line 132 of file kinect2_bridge.cpp.

libfreenect2::Freenect2Device::IrCameraParams Kinect2Bridge::irParams
private

Definition at line 86 of file kinect2_bridge.cpp.

bool Kinect2Bridge::isSubscribedColor
private

Definition at line 97 of file kinect2_bridge.cpp.

bool Kinect2Bridge::isSubscribedDepth
private

Definition at line 97 of file kinect2_bridge.cpp.

ros::Time Kinect2Bridge::lastColor
private

Definition at line 93 of file kinect2_bridge.cpp.

ros::Time Kinect2Bridge::lastDepth
private

Definition at line 93 of file kinect2_bridge.cpp.

libfreenect2::SyncMultiFrameListener* Kinect2Bridge::listenerColor
private

Definition at line 82 of file kinect2_bridge.cpp.

libfreenect2::SyncMultiFrameListener * Kinect2Bridge::listenerIrDepth
private

Definition at line 82 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockColor
private

Definition at line 73 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockIrDepth
private

Definition at line 73 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockPub
private

Definition at line 74 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockRegHighRes
private

Definition at line 75 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockRegLowRes
private

Definition at line 75 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockRegSD
private

Definition at line 75 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockStatus
private

Definition at line 74 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockSync
private

Definition at line 74 of file kinect2_bridge.cpp.

std::mutex Kinect2Bridge::lockTime
private

Definition at line 74 of file kinect2_bridge.cpp.

std::thread Kinect2Bridge::mainThread
private

Definition at line 78 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::map1Color
private

Definition at line 70 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::map1Ir
private

Definition at line 70 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::map1LowRes
private

Definition at line 70 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::map2Color
private

Definition at line 70 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::map2Ir
private

Definition at line 70 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::map2LowRes
private

Definition at line 70 of file kinect2_bridge.cpp.

bool Kinect2Bridge::nextColor
private

Definition at line 95 of file kinect2_bridge.cpp.

bool Kinect2Bridge::nextIrDepth
private

Definition at line 95 of file kinect2_bridge.cpp.

ros::NodeHandle Kinect2Bridge::nh
private

Definition at line 88 of file kinect2_bridge.cpp.

libfreenect2::PacketPipeline* Kinect2Bridge::packetPipeline
private

Definition at line 83 of file kinect2_bridge.cpp.

ros::NodeHandle Kinect2Bridge::priv_nh
private

Definition at line 88 of file kinect2_bridge.cpp.

size_t Kinect2Bridge::pubFrameColor
private

Definition at line 92 of file kinect2_bridge.cpp.

size_t Kinect2Bridge::pubFrameIrDepth
private

Definition at line 92 of file kinect2_bridge.cpp.

bool Kinect2Bridge::publishTF
private

Definition at line 77 of file kinect2_bridge.cpp.

libfreenect2::Registration* Kinect2Bridge::registration
private

Definition at line 84 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::rotation
private

Definition at line 69 of file kinect2_bridge.cpp.

bool Kinect2Bridge::running
private

Definition at line 97 of file kinect2_bridge.cpp.

cv::Size Kinect2Bridge::sizeColor
private

Definition at line 66 of file kinect2_bridge.cpp.

cv::Size Kinect2Bridge::sizeIr
private

Definition at line 66 of file kinect2_bridge.cpp.

cv::Size Kinect2Bridge::sizeLowRes
private

Definition at line 66 of file kinect2_bridge.cpp.

std::vector<Status> Kinect2Bridge::status
private

Definition at line 134 of file kinect2_bridge.cpp.

std::thread Kinect2Bridge::tfPublisher
private

Definition at line 78 of file kinect2_bridge.cpp.

std::vector<std::thread> Kinect2Bridge::threads
private

Definition at line 72 of file kinect2_bridge.cpp.

cv::Mat Kinect2Bridge::translation
private

Definition at line 69 of file kinect2_bridge.cpp.


The documentation for this class was generated from the following file:


kinect2_bridge
Author(s):
autogenerated on Wed Jan 3 2018 03:48:08