43 , rest_helper_(new
rc_rest_api::RestHelper(host,
"rc_silhouettematch", 10000))
57 template <
typename Request,
typename Response>
63 const auto j_res =
rest_helper_->servicePutRequest(name, j_req);
69 ROS_ERROR(
"This rc_visard firmware does not support \"%s\"", ex.what());
70 res.return_code.value = -8;
71 res.return_code.message =
"Not available in this firmware version";
74 catch (
const std::exception& ex)
77 res.return_code.value = -2;
78 res.return_code.message = ex.what();
85 bool success =
callService(
"detect_object", req, res);
86 if (success && res.return_code.value >= 0 &&
visualizer_)
95 bool success =
callService(
"calibrate_base_plane", req, res);
96 if (success && res.return_code.value >= 0 &&
visualizer_)
98 visualizer_->visBasePlane(res.plane, res.timestamp);
104 GetBasePlaneCalibration::Response& res)
106 callService(
"get_base_plane_calibration", req, res);
111 DeleteBasePlaneCalibration::Response& res)
113 callService(
"delete_base_plane_calibration", req, res);
119 for (
const auto&
param : params)
121 const auto& name =
param[
"name"];
122 if (name ==
"max_number_of_detected_objects")
123 cfg.max_number_of_detected_objects =
param[
"value"];
124 else if (name ==
"edge_sensitivity")
125 cfg.edge_sensitivity =
param[
"value"];
126 else if (name ==
"match_max_distance")
127 cfg.match_max_distance =
param[
"value"];
128 else if (name ==
"match_percentile")
129 cfg.match_percentile =
param[
"value"];
130 else if (name ==
"quality")
131 cfg.quality =
param[
"value"];
139 SilhouetteMatchConfig cfg;
145 nh_.
param(
"max_number_of_detected_objects", cfg.max_number_of_detected_objects, cfg.max_number_of_detected_objects);
146 nh_.
param(
"edge_sensitivity", cfg.edge_sensitivity, cfg.edge_sensitivity);
147 nh_.
param(
"match_max_distance", cfg.match_max_distance, cfg.match_max_distance);
148 nh_.
param(
"match_percentile", cfg.match_percentile, cfg.match_percentile);
149 nh_.
param(
"quality", cfg.quality, cfg.quality);
152 nh_.
setParam(
"max_number_of_detected_objects", cfg.max_number_of_detected_objects);
153 nh_.
setParam(
"edge_sensitivity", cfg.edge_sensitivity);
154 nh_.
setParam(
"match_max_distance", cfg.match_max_distance);
155 nh_.
setParam(
"match_percentile", cfg.match_percentile);
159 using ReconfServer = dynamic_reconfigure::Server<SilhouetteMatchConfig>;
160 dyn_reconf_ = std::unique_ptr<ReconfServer>(
new ReconfServer(
nh_));
167 j_params.emplace_back(
168 json{ {
"name",
"max_number_of_detected_objects" }, {
"value", config.max_number_of_detected_objects } });
169 j_params.emplace_back(
json{ {
"name",
"edge_sensitivity" }, {
"value", config.edge_sensitivity } });
170 j_params.emplace_back(
json{ {
"name",
"match_max_distance" }, {
"value", config.match_max_distance } });
171 j_params.emplace_back(
json{ {
"name",
"match_percentile" }, {
"value", config.match_percentile } });
172 j_params.emplace_back(
json{ {
"name",
"quality" }, {
"value", config.quality } });
174 if (config.publish_vis)