Program Listing for File TFPublisher.hpp
↰ Return to documentation for file (include/depthai_bridge/TFPublisher.hpp)
#pragma once
#include "depthai-shared/common/CameraFeatures.hpp"
#include "depthai/device/CalibrationHandler.hpp"
#include "geometry_msgs/msg/quaternion.hpp"
#include "geometry_msgs/msg/transform_stamped.hpp"
#include "nlohmann/json.hpp"
#include "rclcpp/logger.hpp"
#include "rclcpp/parameter_client.hpp"
#include "tf2_ros/static_transform_broadcaster.h"
namespace rclcpp {
class Node;
} // namespace rclcpp
namespace dai {
namespace ros {
class TFPublisher {
public:
explicit TFPublisher(std::shared_ptr<rclcpp::Node> node,
const dai::CalibrationHandler& calHandler,
const std::vector<dai::CameraFeatures>& camFeatures,
const std::string& camName,
const std::string& camModel,
const std::string& baseFrame,
const std::string& parentFrame,
const std::string& camPosX,
const std::string& camPosY,
const std::string& camPosZ,
const std::string& camRoll,
const std::string& camPitch,
const std::string& camYaw,
const std::string& imuFromDescr,
const std::string& customURDFLocation,
const std::string& customXacroArgs,
const bool rsCompatibilityMode);
std::string getURDF();
geometry_msgs::msg::Vector3 transFromExtr(std::vector<float> translation);
geometry_msgs::msg::Quaternion quatFromRotM(std::vector<std::vector<float>> extrMat);
private:
void convertModelName();
std::string prepareXacroArgs();
void publishDescription();
void publishCamTransforms(nlohmann::json camData, std::shared_ptr<rclcpp::Node> node, const dai::CalibrationHandler& calHandler);
void publishImuTransform(nlohmann::json json, std::shared_ptr<rclcpp::Node> node, const dai::CalibrationHandler& calHandler);
bool modelNameAvailable();
std::string getCamSocketName(int socketNum);
std::unique_ptr<rclcpp::AsyncParametersClient> paramClient;
std::shared_ptr<tf2_ros::StaticTransformBroadcaster> tfPub;
std::string camName;
std::string camModel;
std::string baseFrame;
std::string parentFrame;
std::string camPosX;
std::string camPosY;
std::string camPosZ;
std::string camRoll;
std::string camPitch;
std::string camYaw;
std::string imuFromDescr;
std::string customURDFLocation;
std::string customXacroArgs;
std::vector<dai::CameraFeatures> camFeatures;
bool rsCompatibilityMode;
rclcpp::Logger logger;
const std::unordered_map<dai::CameraBoardSocket, std::string> socketNameMap = {
{dai::CameraBoardSocket::AUTO, "rgb"},
{dai::CameraBoardSocket::CAM_A, "rgb"},
{dai::CameraBoardSocket::CAM_B, "left"},
{dai::CameraBoardSocket::CAM_C, "right"},
{dai::CameraBoardSocket::CAM_D, "left_back"},
{dai::CameraBoardSocket::CAM_E, "right_back"},
};
const std::unordered_map<dai::CameraBoardSocket, std::string> rsSocketNameMap = {
{dai::CameraBoardSocket::AUTO, "color"},
{dai::CameraBoardSocket::CAM_A, "color"},
{dai::CameraBoardSocket::CAM_B, "infra2"},
{dai::CameraBoardSocket::CAM_C, "infra1"},
};
};
} // namespace ros
} // namespace dai