sample_capture_assistant.cpp
Go to the documentation of this file.
1 #include <zivid_camera/Capture.h>
2 #include <zivid_camera/CaptureAssistantSuggestSettings.h>
3 #include <sensor_msgs/Image.h>
4 #include <sensor_msgs/PointCloud2.h>
5 #include <ros/ros.h>
6 
7 #define CHECK(cmd) \
8  do \
9  { \
10  if (!cmd) \
11  { \
12  throw std::runtime_error{ "\"" #cmd "\" failed!" }; \
13  } \
14  } while (false)
15 
16 namespace
17 {
18 const ros::Duration default_wait_duration{ 30 };
19 constexpr auto ca_suggest_settings_service_name = "/zivid_camera/capture_assistant/suggest_settings";
20 
21 void capture_assistant_suggest_settings()
22 {
23  zivid_camera::CaptureAssistantSuggestSettings cass;
24  cass.request.max_capture_time = ros::Duration{ 1.20 };
25  cass.request.ambient_light_frequency =
26  zivid_camera::CaptureAssistantSuggestSettings::Request::AMBIENT_LIGHT_FREQUENCY_NONE;
27 
28  ROS_INFO_STREAM("Calling " << ca_suggest_settings_service_name
29  << " with max capture time = " << cass.request.max_capture_time << " sec");
30  CHECK(ros::service::call(ca_suggest_settings_service_name, cass));
31 }
32 
33 void capture()
34 {
35  ROS_INFO("Calling capture service");
36  zivid_camera::Capture capture;
37  CHECK(ros::service::call("/zivid_camera/capture", capture));
38 }
39 
40 void on_points(const sensor_msgs::PointCloud2ConstPtr&)
41 {
42  ROS_INFO("PointCloud received");
43 }
44 
45 void on_image_color(const sensor_msgs::ImageConstPtr&)
46 {
47  ROS_INFO("2D color image received");
48 }
49 
50 } // namespace
51 
52 int main(int argc, char** argv)
53 {
54  ros::init(argc, argv, "sample_capture_assistant_cpp");
56 
57  ROS_INFO("Starting sample_capture_assistant.cpp");
58 
59  CHECK(ros::service::waitForService(ca_suggest_settings_service_name, default_wait_duration));
60 
61  ros::AsyncSpinner spinner(1);
62  spinner.start();
63 
64  auto points_sub = n.subscribe("/zivid_camera/points/xyzrgba", 1, on_points);
65  auto image_color_sub = n.subscribe("/zivid_camera/color/image_color", 1, on_image_color);
66 
67  capture_assistant_suggest_settings();
68 
69  capture();
70 
72 
73  return 0;
74 }
#define CHECK(cmd)
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
bool call(const std::string &service_name, MReq &req, MRes &res)
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
#define ROS_INFO(...)
int main(int argc, char **argv)
#define ROS_INFO_STREAM(args)
ROSCPP_DECL void waitForShutdown()
ROSCPP_DECL bool waitForService(const std::string &service_name, int32_t timeout)


zivid_samples
Author(s):
autogenerated on Sat Apr 17 2021 02:51:09