76 {
"LocResultPort", 2201},
78 {
"LocResultState", 1},
79 {
"LocResultEndianness", 0},
81 {
"LocRequestResultData", 1}
105 return s_controller_settings[
"LocState"] == 2;
114 return LocalizationEnabled() && s_controller_settings[
"LocResultState"] > 0;
131 0x53, 0x49, 0x43, 0x4B, 0x00, 0x00, 0x00, 0x6A, 0x06, 0x42, 0x00, 0x01, 0x00, 0x10, 0xC0, 0x58, 0x01, 0x22, 0xA2, 0x72,
132 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x4C, 0x53, 0x20, 0x56, 0x30, 0x2E, 0x31, 0x2E, 0x39, 0x2E, 0x78, 0x42,
133 0x00, 0x00, 0x02, 0x6D, 0x83, 0xAA, 0x8C, 0x0C, 0x8E, 0x14, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x6F, 0x00, 0x34,
134 0xEC, 0xF3, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x45, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
135 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x80, 0x89, 0x00, 0x00, 0x99, 0x93, 0x00, 0x12, 0x78, 0x9F, 0x00, 0x00, 0x00, 0x00,
136 0x00, 0x00, 0x00, 0x00, 0x62, 0x11 };
140 std::vector<uint8_t> recoded_telegram;
143 ROS_ERROR_STREAM(
"## ERROR TestcaseGenerator::createDefaultResultPortTestcase: sick_scan_xd::ResultPortParser::decode() failed. " << testcase.
binary_data.size() <<
" byte input (hex):");
263 static std::map<sick_scan_xd::ColaParser::COLA_SOPAS_COMMAND, std::map<std::string, sick_scan_xd::SickLocColaTelegramMsg>> s_mapped_responses;
264 static bool s_mapped_responses_initialized =
false;
265 if(!s_mapped_responses_initialized)
355 if(scanner_type ==
"sick_lms_5xx")
408 if(scanner_type ==
"sick_lms_511")
442 if(scanner_type ==
"sick_lms_1xx")
444 s_mapped_responses[
sick_scan_xd::ColaParser::sRN][
"field000"] =
sick_scan_xd::ColaParser::createColaTelegram(
sick_scan_xd::ColaParser::convertSopasCommand(
"sRA"),
"field000", {
"3f8000000000000000001388fff92230020100010029019affff0176019bffff0175019cffff0171019dffff015f019effff0154019fffff015101a0ffff015101a1ffff015101a2ffff015101a3ffff015101a4ffff015101a5ffff015101a6ffff015201a7ffff015301a8ffff014601a9ffff014601aaffff014601abffff014901acffff014901adffff014b01aeffff014901afffff014901b0ffff014901b1ffff014a01b2ffff014301b3ffff014301b4ffff014301b5ffff014801b6ffff014801b7ffff014801b8ffff014d01b9ffff014e01baffff014c01bbffff014a01bcffff014701bdffff014701beffff014701bfffff014a01c0ffff014601c1ffff014601c2ffff0146000000000000000100064649454c44310000"});
496 if(scanner_type ==
"sick_lms_111")
532 if(scanner_type ==
"sick_mrs_6xxx")
542 s_mapped_responses_initialized =
true;
546 for(std::map<
sick_scan_xd::ColaParser::COLA_SOPAS_COMMAND, std::map<std::string, sick_scan_xd::SickLocColaTelegramMsg>>::iterator iter_cmd = s_mapped_responses.begin(); iter_cmd != s_mapped_responses.end(); iter_cmd++)
550 std::map<std::string, sick_scan_xd::SickLocColaTelegramMsg>& mapped_response = iter_cmd->second;
551 if(mapped_response.find(cola_request.
command_name) != mapped_response.end())
565 uint32_t ticks_ms = createTimestampTicksMilliSec();
574 s_controller_settings[
"LMCstartmeas"] = 1;
579 s_controller_settings[
"LMCstartmeas"] = 0;
584 s_controller_settings[
"LMCstartmeas"] = 1;
589 s_controller_settings[
"LocState"] = 2;
594 s_controller_settings[
"LocState"] = 1;
599 s_controller_settings[
"LocState"] = 1;
604 s_controller_settings[
"LocResultPort"] = std::strtol(cola_request.
parameter[0].c_str(), 0, 0);
609 s_controller_settings[
"LocResultMode"] = std::strtol(cola_request.
parameter[0].c_str(), 0, 0);
614 s_controller_settings[
"LocResultState"] = std::strtol(cola_request.
parameter[0].c_str(), 0, 0);
619 s_controller_settings[
"LocResultEndianness"] = std::strtol(cola_request.
parameter[0].c_str(), 0, 0);;
625 int32_t posex_mm = std::strtol(cola_request.
parameter[0].c_str(), 0, 0);
626 int32_t posey_mm = std::strtol(cola_request.
parameter[1].c_str(), 0, 0);
627 int32_t yaw_mdeg = std::strtol(cola_request.
parameter[2].c_str(), 0, 0);
628 int32_t uncertainty = std::strtol(cola_request.
parameter[3].c_str(), 0, 0);
629 bool success = (posex_mm >= -300000 && posex_mm <= +300000 && posey_mm >= -300000 && posey_mm <= +300000
630 && yaw_mdeg >= -180000 && yaw_mdeg <= +180000 && uncertainty >= 0 && uncertainty < 300000);
636 s_u32ResultPoseInterval = std::strtoul(cola_request.
parameter[0].c_str(), 0, 0);
644 for(
size_t n = 0; n < cola_request.
parameter.size(); n++)
645 s_controller_settings_str[
"DevSetLidarConfig_"+std::to_string(n)] = cola_request.
parameter[n];
651 std::vector<std::string> config_parameter;
652 for(
size_t n = 1; n < 15; n++)
654 config_parameter.push_back(s_controller_settings_str[
"DevSetLidarConfig_"+std::to_string(n)]);
660 s_controller_settings_str[
"LocSetMap"] = cola_request.
parameter[1];
676 for(
size_t n = 0; n < cola_request.
parameter.size(); n++)
677 s_controller_settings_str[
"LocInitializePose_"+std::to_string(n)] = cola_request.
parameter[n];
683 std::vector<std::string> parameter;
684 for(
size_t n = 0; n < 4; n++)
685 parameter.push_back(s_controller_settings_str[
"LocInitializePose_"+std::to_string(n)]);
691 s_controller_settings_str[
"LocSetPoseQualityCovWeight"] = cola_request.
parameter[0];
702 s_controller_settings_str[
"LocSetPoseQualityMeanDistWeight"] = cola_request.
parameter[0];
713 s_controller_settings_str[
"LocSetReflectorsForSupportActive"] = cola_request.
parameter[0];
724 s_controller_settings_str[
"LocSetOdometryActive"] = cola_request.
parameter[0];
735 s_controller_settings_str[
"LocSetOdometryPort"] = cola_request.
parameter[0];
746 s_controller_settings_str[
"LocSetOdometryRestrictYMotion"] = cola_request.
parameter[0];
757 s_controller_settings_str[
"LocSetAutoStartActive"] = cola_request.
parameter[0];
768 s_controller_settings_str[
"LocSetAutoStartSavePoseInterval"] = cola_request.
parameter[0];
779 s_controller_settings_str[
"LocSetRingBufferRecordingActive"] = cola_request.
parameter[0];
835 int32_t port = ((s_controller_settings[
"LocResultPort"]) > 0 ? s_controller_settings[
"LocResultPort"] : 2201);
861 s_controller_settings_str[
"DevSetIMUActive"] = cola_request.
parameter[0];
880 for(std::map<std::string, int32_t>::iterator iter_settings = s_controller_settings.begin(); iter_settings != s_controller_settings.end(); iter_settings++)
905 uint32_t
seconds = 0, nanoseconds = 0;
907 uint32_t ticks_ms = (((uint64_t)
seconds * 1000 + (uint64_t)nanoseconds/1000000 + 1000) & 0xFFFFFFFF);
909 ticks_ms += time_jitter_ticks_ms.
generate();