11 #include <json/json.h>
14 #include <jsoncpp/json/json.h>
35 Json::Value json_root;
42 std::cout <<
"sick_scan_xd_api_dockertest: exported messages to json file \"" <<
s_json_export_file <<
"\"" << std::endl;
49 printf(
"sick_scan_xd_api_dockertest: caught signal %d, aborting ...\n", signalRecv);
51 std::this_thread::sleep_for(std::chrono::milliseconds(100));
53 std::this_thread::sleep_for(std::chrono::milliseconds(100));
54 printf(
"sick_scan_xd_api_dockertest: exit (line %d)\n", __LINE__);
60 printf(
"## ERROR sick_scan_xd_api_dockertest: %s, error code %d\n",
msg, error_code);
67 json_msg[
"frame_id"] =
msg->header.frame_id;
68 json_msg[
"width"] =
msg->width;
69 json_msg[
"height"] =
msg->height;
70 json_msg[
"point_step"] =
msg->point_step;
71 json_msg[
"row_step"] =
msg->row_step;
72 Json::Value json_fields;
73 for(
int field_cnt = 0; field_cnt <
msg->fields.size; field_cnt++)
75 Json::Value json_field;
76 json_field[
"name"] =
msg->fields.buffer[field_cnt].name;
77 json_field[
"offset"] =
msg->fields.buffer[field_cnt].offset;
78 json_field[
"datatype"] =
msg->fields.buffer[field_cnt].datatype;
79 json_field[
"count"] =
msg->fields.buffer[field_cnt].count;
80 json_fields.append(json_field);
82 json_msg[
"fields"] = json_fields;
83 std::stringstream hex_data_str;
84 for(
int data_cnt = 0; data_cnt <
msg->data.size; data_cnt++)
86 hex_data_str << std::setfill(
'0') << std::setw(2) << std::hex << (int)(
msg->data.buffer[data_cnt]);
88 json_msg[
"data"] = hex_data_str.str();
94 json_msg[
"frame_id"] =
"imu_link";
95 json_msg[
"orientation"].resize(4);
96 json_msg[
"angular_velocity"].resize(3);
97 json_msg[
"linear_acceleration"].resize(3);
98 json_msg[
"orientation_covariance"].resize(9);
99 json_msg[
"angular_velocity_covariance"].resize(9);
100 json_msg[
"linear_acceleration_covariance"].resize(9);
101 json_msg[
"orientation"][0] =
msg->orientation.x;
102 json_msg[
"orientation"][1] =
msg->orientation.y;
103 json_msg[
"orientation"][2] =
msg->orientation.z;
104 json_msg[
"orientation"][3] =
msg->orientation.w;
105 json_msg[
"angular_velocity"][0] =
msg->angular_velocity.x;
106 json_msg[
"angular_velocity"][1] =
msg->angular_velocity.y;
107 json_msg[
"angular_velocity"][2] =
msg->angular_velocity.z;
108 json_msg[
"linear_acceleration"][0] =
msg->linear_acceleration.x;
109 json_msg[
"linear_acceleration"][1] =
msg->linear_acceleration.y;
110 json_msg[
"linear_acceleration"][2] =
msg->linear_acceleration.z;
111 for(
int n = 0; n < 9; n++)
113 json_msg[
"orientation_covariance"][n] =
msg->orientation_covariance[n];
114 json_msg[
"angular_velocity_covariance"][n] =
msg->angular_velocity_covariance[n];
115 json_msg[
"linear_acceleration_covariance"][n] =
msg->linear_acceleration_covariance[n];
122 printf(
"[Info]: apiTestCartesianPointCloudMsgCallback(apiHandle:%p): %dx%d pointcloud callback...\n", apiHandle,
msg->width,
msg->height);
123 Json::Value json_msg;
131 printf(
"[Info]: apiTestPolarPointCloudMsgCallback(apiHandle:%p): %dx%d pointcloud callback...\n", apiHandle,
msg->width,
msg->height);
132 Json::Value json_msg;
140 printf(
"[Info]: apiTestImuMsgCallback(apiHandle:%p): Imu message, orientation=(%.6f,%.6f,%.6f,%.6f), angular_velocity=(%.6f,%.6f,%.6f), linear_acceleration=(%.6f,%.6f,%.6f)\n",
141 apiHandle,
msg->orientation.x,
msg->orientation.y,
msg->orientation.z,
msg->orientation.w,
142 msg->angular_velocity.x,
msg->angular_velocity.y,
msg->angular_velocity.y,
143 msg->linear_acceleration.x,
msg->linear_acceleration.y,
msg->linear_acceleration.z);
144 Json::Value json_msg;
165 exitOnError(
"SickScanApiRegisterCartesianPointCloudMsg failed", ret);
167 exitOnError(
"SickScanApiRegisterCartesianPointCloudMsg failed", ret);
171 exitOnError(
"SickScanApiRegisterImuMsg failed", ret);
176 std::this_thread::sleep_for(std::chrono::milliseconds(1));
180 printf(
"sick_scan_xd_api_dockertest finishing...\n");
191 int main(
int argc,
char** argv)
194 for (
int n = 0; n < argc; n++)
196 printf(
"%s%s", (n > 0 ?
" " :
""), argv[n]);
197 if (strncmp(argv[n],
"_jsonfile:=", 11) == 0)
202 printf(
"\nsick_scan_xd_api_dockertest started\n");
205 std::string sick_scan_api_lib =
"sick_scan_xd_shared_lib.dll";
206 std::vector<std::string> search_library_path = {
"",
"build/Debug/",
"build_win64/Debug/",
"src/build/Debug/",
"src/build_win64/Debug/",
"src/sick_scan_xd/build/Debug/",
"src/sick_scan_xd/build_win64/Debug/",
"./",
"../" };
208 std::string sick_scan_api_lib =
"libsick_scan_xd_shared_lib.so";
209 std::vector<std::string> search_library_path = {
"",
"build/",
"build_linux/",
"src/build/",
"src/build_linux/",
"src/sick_scan_xd/build/",
"src/sick_scan_xd/build_linux/",
"./",
"../" };
212 for(
int search_library_cnt = 0; search_library_cnt < search_library_path.size(); search_library_cnt++)
214 std::string libfilepath = search_library_path[search_library_cnt] + sick_scan_api_lib;
217 printf(
"sick_scan_xd library \"%s\" loaded successfully\n", libfilepath.c_str());
228 printf(
"sick_scan_xd_api_dockertest finishing...\n");
230 exitOnError(
"SickScanApiUnloadLibrary failed", ret);
231 printf(
"sick_scan_xd_api_dockertest finished successfully\n");