18 #include "dynamixel_sdk/packet_handler.h"
27 #include <type_traits>
55 for (
auto const &imap :
_fake_data->stepper_registers)
62 std::cout <<
"ERROR : Fake data not initialized" << std::endl;
73 return "Mock Stepper Driver (OK)";
100 model_number =
_fake_data->stepper_registers.at(
id).model_number;
146 int result = COMM_TX_FAIL;
154 _fake_data->full_id_list.emplace_back(new_id);
156 result = COMM_SUCCESS;
159 const auto it =
_fake_data->stepper_registers.find(
id);
160 if (it !=
_fake_data->stepper_registers.end())
162 std::swap(
_fake_data->stepper_registers[new_id], it->second);
163 result = COMM_SUCCESS;
166 result = COMM_TX_FAIL;
180 version =
_fake_data->stepper_registers.at(
id).firmware;
195 pos =
_fake_data->stepper_registers.at(
id).min_position;
210 pos =
_fake_data->stepper_registers.at(
id).max_position;
226 if (COMM_SUCCESS !=
ping(
id))
241 _fake_data->stepper_registers.at(
id).position = position;
257 _fake_data->stepper_registers.at(
id).velocity = velocity;
270 const std::vector<uint8_t> & )
273 std::set<uint8_t> countSet;
276 for (
auto &
id : id_list)
278 auto result = countSet.insert(
id);
292 const std::vector<uint32_t> &position_list)
294 if (id_list.size() != position_list.size())
298 std::set<uint8_t> countSet;
300 for (
size_t i = 0; i < id_list.size(); ++i)
302 if (
_fake_data->dxl_registers.count(id_list.at(i)))
303 _fake_data->dxl_registers.at(id_list.at(i)).position = position_list.at(i);
304 else if (
_fake_data->stepper_registers.count(id_list.at(i)))
305 _fake_data->stepper_registers.at(id_list.at(i)).position = position_list.at(i);
307 return COMM_TX_ERROR;
309 auto result = countSet.insert(id_list.at(i));
323 const std::vector<uint32_t> & )
326 std::set<uint8_t> countSet;
329 for (
auto &
id : id_list)
331 auto result = countSet.insert(
id);
349 present_position =
_fake_data->stepper_registers.at(
id).position;
364 present_velocity =
_fake_data->stepper_registers.at(
id).velocity;
377 temperature =
_fake_data->stepper_registers.at(
id).temperature;
392 voltage =
_fake_data->stepper_registers.at(
id).voltage;
406 hardware_error_status = 0;
418 std::set<uint8_t> countSet;
420 position_list.clear();
421 for (
auto &
id : id_list)
424 position_list.emplace_back(
_fake_data->dxl_registers.at(
id).position);
425 else if (
_fake_data->stepper_registers.count(
id))
426 position_list.emplace_back(
_fake_data->stepper_registers.at(
id).position);
430 auto result = countSet.insert(
id);
445 std::set<uint8_t> countSet;
447 velocity_list.clear();
448 for (
auto &
id : id_list)
451 velocity_list.emplace_back(
_fake_data->dxl_registers.at(
id).velocity);
452 else if (
_fake_data->stepper_registers.count(
id))
453 velocity_list.emplace_back(
_fake_data->stepper_registers.at(
id).velocity);
457 auto result = countSet.insert(
id);
471 std::vector<std::array<uint32_t, 2>> &data_array_list)
473 std::set<uint8_t> countSet;
475 data_array_list.clear();
476 for (
auto &
id : id_list)
480 std::array<uint32_t, 2> blocks{};
482 blocks.at(0) =
_fake_data->stepper_registers.at(
id).velocity;
483 blocks.at(1) =
_fake_data->stepper_registers.at(
id).position;
485 data_array_list.emplace_back(blocks);
489 std::array<uint32_t, 2> blocks{};
491 blocks.at(0) =
_fake_data->dxl_registers.at(
id).velocity;
492 blocks.at(1) =
_fake_data->dxl_registers.at(
id).position;
494 data_array_list.emplace_back(blocks);
499 auto result = countSet.insert(
id);
513 std::vector<std::string> &firmware_list)
515 std::set<uint8_t> countSet;
517 firmware_list.clear();
518 for (
auto &
id : id_list)
521 firmware_list.emplace_back(
_fake_data->dxl_registers.at(
id).firmware);
522 else if (
_fake_data->stepper_registers.count(
id))
523 firmware_list.emplace_back(
_fake_data->stepper_registers.at(
id).firmware);
527 auto result = countSet.insert(
id);
542 std::set<uint8_t> countSet;
544 temperature_list.clear();
545 for (
auto &
id : id_list)
548 temperature_list.emplace_back(
_fake_data->dxl_registers.at(
id).temperature);
549 else if (
_fake_data->stepper_registers.count(
id))
550 temperature_list.emplace_back(
_fake_data->stepper_registers.at(
id).temperature);
552 temperature_list.emplace_back(
_fake_data->end_effector.temperature);
556 auto result = countSet.insert(
id);
571 std::set<uint8_t> countSet;
573 voltage_list.clear();
574 for (
auto &
id : id_list)
577 voltage_list.emplace_back(
_fake_data->dxl_registers.at(
id).voltage / 10);
578 else if (
_fake_data->stepper_registers.count(
id))
579 voltage_list.emplace_back(
_fake_data->stepper_registers.at(
id).voltage / 1000);
581 voltage_list.emplace_back(
_fake_data->end_effector.voltage / 1000);
585 auto result = countSet.insert(
id);
600 std::set<uint8_t> countSet;
602 voltage_list.clear();
603 for (
auto &
id : id_list)
606 voltage_list.emplace_back(
_fake_data->dxl_registers.at(
id).voltage);
607 else if (
_fake_data->stepper_registers.count(
id))
608 voltage_list.emplace_back(
_fake_data->stepper_registers.at(
id).voltage);
610 voltage_list.emplace_back(
_fake_data->end_effector.voltage);
614 auto result = countSet.insert(
id);
628 std::vector<std::pair<double, uint8_t>> &data_list)
632 std::set<uint8_t> countSet;
634 for (
auto &
id : id_list)
638 double voltage =
_fake_data->dxl_registers.at(
id).voltage;
639 uint8_t temperature =
_fake_data->dxl_registers.at(
id).temperature;
640 data_list.emplace_back(std::make_pair(voltage, temperature));
642 else if (
_fake_data->stepper_registers.count(
id))
644 double voltage =
_fake_data->stepper_registers.at(
id).voltage;
645 uint8_t temperature =
_fake_data->stepper_registers.at(
id).temperature;
646 data_list.emplace_back(std::make_pair(voltage, temperature));
650 double voltage =
_fake_data->end_effector.voltage;
651 uint8_t temperature =
_fake_data->end_effector.temperature;
652 data_list.emplace_back(std::make_pair(voltage, temperature));
657 auto result = countSet.insert(
id);
672 std::set<uint8_t> countSet;
674 hw_error_list.clear();
675 for (
auto &
id : id_list)
677 hw_error_list.emplace_back(0);
678 auto result = countSet.insert(
id);
692 mode =
_fake_data->stepper_registers.at(
id).operating_mode;
701 _fake_data->stepper_registers.at(
id).operating_mode = mode;
715 int result = COMM_RX_FAIL;
720 data.emplace_back(
_fake_data->stepper_registers.at(
id).v_start);
721 data.emplace_back(
_fake_data->stepper_registers.at(
id).a_1);
722 data.emplace_back(
_fake_data->stepper_registers.at(
id).v_1);
723 data.emplace_back(
_fake_data->stepper_registers.at(
id).a_max);
724 data.emplace_back(
_fake_data->stepper_registers.at(
id).v_max);
725 data.emplace_back(
_fake_data->stepper_registers.at(
id).d_max);
726 data.emplace_back(
_fake_data->stepper_registers.at(
id).d_1);
727 data.emplace_back(
_fake_data->stepper_registers.at(
id).v_stop);
729 result = COMM_SUCCESS;
743 int result = COMM_RX_FAIL;
747 _fake_data->stepper_registers.at(
id).v_start = data.at(0);
748 _fake_data->stepper_registers.at(
id).a_1 = data.at(1);
749 _fake_data->stepper_registers.at(
id).v_1 = data.at(2);
750 _fake_data->stepper_registers.at(
id).a_max = data.at(3);
751 _fake_data->stepper_registers.at(
id).v_max = data.at(4);
752 _fake_data->stepper_registers.at(
id).d_max = data.at(5);
753 _fake_data->stepper_registers.at(
id).d_1 = data.at(6);
754 _fake_data->stepper_registers.at(
id).v_stop = data.at(7);
756 result = COMM_SUCCESS;
769 if (COMM_SUCCESS !=
ping(
id))
797 if (COMM_SUCCESS !=
ping(
id))
826 std::set<uint8_t> countSet;
829 for (
auto &
id : id_list)
832 auto result = countSet.insert(
id);
848 if (COMM_SUCCESS !=
ping(
id))
862 std::vector<uint32_t> &abs_position)
864 std::set<uint8_t> countSet;
866 abs_position.clear();
867 for (
auto &
id : id_list)
870 abs_position.emplace_back(
_fake_data->stepper_registers.at(
id).homing_abs_position);
874 auto result = countSet.insert(
id);
888 const std::vector<uint32_t> &abs_position)
890 if (id_list.size() != abs_position.size())
893 std::set<uint8_t> countSet;
895 for (
size_t i = 0; i < id_list.size(); ++i)
897 if (
_fake_data->stepper_registers.count(id_list.at(i)))
898 _fake_data->stepper_registers.at(id_list.at(i)).homing_abs_position = abs_position.at(i);
900 return COMM_TX_ERROR;
902 auto result = countSet.insert(id_list.at(i));