Skip to content

File zed_camera.cpp

File List > plugins > zed > zed_camera.cpp

Go to the documentation of this file

#include "zed_camera.hpp"

// Set exposure to 8% of camera frame time. This is an empirically determined number
static constexpr unsigned EXPOSURE_TIME_PERCENT = 40;

using namespace ILLIXR;

sl::ERROR_CODE zed_camera::open(const sl::InitParameters& params) {
    sl::ERROR_CODE err = sl::Camera::open(params);
    if (err != sl::ERROR_CODE::SUCCESS) {
        return err;
    }
    auto trans  = switchboard_->root_coordinates.position();
    auto orient = switchboard_->root_coordinates.orientation();

    initial_position_.setTranslation(sl::Translation(trans.x(), trans.y(), trans.z()));
    initial_position_.setOrientation(sl::Orientation({orient.x(), orient.y(), orient.z(), orient.w()}));

    auto                 cam_conf  = getCameraInformation().camera_configuration;
    sl::CameraParameters left_cam  = cam_conf.calibration_parameters.left_cam;
    sl::CameraParameters right_cam = cam_conf.calibration_parameters.right_cam;
    config_                        = {
        static_cast<size_t>(cam_conf.resolution.width),
        static_cast<size_t>(cam_conf.resolution.height),
        cam_conf.fps,
        cam_conf.calibration_parameters.getCameraBaseline(),
        {{data_format::pose::LEFT, {left_cam.cx, left_cam.cy, left_cam.v_fov * (M_PI / 180.), left_cam.h_fov * (M_PI / 180.)}},
                                {data_format::pose::RIGHT,
                                 {right_cam.cx, right_cam.cy, right_cam.v_fov * (M_PI / 180.), right_cam.h_fov * (M_PI / 180.)}}}};

    sl::PositionalTrackingParameters tracking_params(initial_position_);
    err = enablePositionalTracking(tracking_params);
    if (err != sl::ERROR_CODE::SUCCESS) {
        spdlog::get("illixr")->info("[zed] {}", toString(err).c_str());
        close();
    }

    return err;
}