Skip to main content

Vision Interfaces

Vision interfaces include VisionClient and HandEyeCalibClient.

VisionClient​

Source headers:

  • include/booster/robot/vision/vision_client.hpp
  • include/booster/robot/vision/vision_api.hpp

Method

Description

Minimum firmware

StartVisionService(enable_position, enable_color, enable_face_detection)

Start the vision service and select position, color, and face-detection output.

>= v1.5.0.9

StopVisionService()

Stop the vision service.

>= v1.5.0.9

GetDetectionObject(objects, focus_ratio=0.33)

Return detection results through the output parameter.

>= v1.5.0.9

Vision C++ Example​

#include <iostream>
#include <vector>

#include <booster/robot/channel/channel_factory.hpp>
#include <booster/robot/vision/vision_client.hpp>

booster::robot::ChannelFactory::Instance()->Init(0, "<network_ip>");

booster::robot::vision::VisionClient vision;
vision.Init();

if (vision.StartVisionService(true, false, true) == 0) {
std::vector<booster::robot::vision::DetectResults> objects;
if (vision.GetDetectionObject(objects, 0.33F) == 0) {
for (const auto &object : objects) {
std::cout << object.tag_ << " "
<< object.conf_ << " "
<< object.xmin_ << " "
<< object.ymin_ << "\n";
}
}
}

API Enums and Data Fields​

Public VisionApiId values are kStartVisionService = 3000 (start detection), kStopVisionService = 3001 (stop detection), and kGetDetectionObject = 3002 (read the latest detections). StartVisionServiceParameter has booleans for position, color, and face outputs; GetDetectionObjectParameter::focus_ratio_ selects the central focus region and defaults to 0.33. DetectResults contains image bounds xmin_, ymin_, xmax_, ymax_, optional 3D position_, class tag_, confidence conf_, and mean color rgb_mean_.

HandEyeCalibApiId:

Enumerator

Value

Meaning

kStartCalibration / kStopCalibration

3100 / 3101

Start / stop a hand-eye calibration job.

kGetStatus / kGetResult

3102 / 3103

Read progress/status / the latest calibration result.

kApplyResult

3104

Apply the completed camera-extrinsic result.

Public calibration fields are: StartHandEyeCalibParameter::publish_feedback_ and optional square_size_m_; HandEyeCalibStatus status/job/stage/timestamps, progress, stage-2/3 counters, and error_json_; HandEyeCalibResult status/job/summary, result_json_, reprojection_error_px_, progress/counters, and errors; and HandEyeCalibApplyResult status, applied_path_, and error_json_.

DetectResults fields include xmin_, ymin_, xmax_, ymax_, position_, tag_, conf_, and rgb_mean_.

HandEyeCalibClient​

Source headers:

  • include/booster/robot/vision/handeye_calib_client.hpp
  • include/booster/robot/vision/handeye_calib_api.hpp

Method

Description

Minimum firmware

StartCalibration(param)

Start hand-eye calibration.

>= v1.7.1.0

StopCalibration()

Stop calibration.

>= v1.7.1.0

GetStatus(status)

Query task status and progress.

>= v1.7.1.0

GetResult(result)

Query the calibration result and reprojection error.

>= v1.7.1.0

ApplyResult(result)

Apply a calibration result.

>= v1.7.1.0

Hand-Eye Calibration Example​

#include <booster/robot/vision/handeye_calib_client.hpp>

booster::robot::vision::HandEyeCalibClient handeye;
handeye.Init();

booster::robot::vision::StartHandEyeCalibParameter parameter;
parameter.publish_feedback_ = true;
parameter.square_size_m_ = 0.025;

if (handeye.StartCalibration(parameter) == 0) {
booster::robot::vision::HandEyeCalibStatus status;
handeye.GetStatus(status);
std::cout << status.status_ << " "
<< status.progress_ << "\n";
}