18 #include "dynamixel_sdk/packet_handler.h"
25 #include <type_traits>
38 for (
auto const &imap :
_fake_data->dxl_registers)
73 model_number =
_fake_data->dxl_registers.at(
id).model_number;
88 if (ping_result == COMM_SUCCESS)
196 (void)temperature_limit;
224 version =
_fake_data->dxl_registers.at(
id).firmware;
239 pos =
_fake_data->dxl_registers.at(
id).min_position;
254 pos =
_fake_data->dxl_registers.at(
id).max_position;
271 _fake_data->dxl_registers.at(
id).torque = torque_enable;
272 else if (
_fake_data->stepper_registers.count(
id))
273 _fake_data->stepper_registers.at(
id).torque = torque_enable;
275 return COMM_TX_ERROR;
289 _fake_data->dxl_registers.at(
id).position = position;
304 _fake_data->dxl_registers.at(
id).velocity = velocity;
319 int res = COMM_RX_FAIL;
337 std::set<uint8_t> countSet;
339 for (
size_t i = 0; i < id_list.size(); i++)
341 auto result = countSet.insert(id_list.at(i));
357 if (id_list.size() != position_list.size())
361 std::set<uint8_t> countSet;
362 for (
size_t i = 0; i < id_list.size(); i++)
364 if (
_fake_data->dxl_registers.count(id_list.at(i)))
365 _fake_data->dxl_registers.at(id_list.at(i)).position = position_list.at(i);
366 else if (
_fake_data->stepper_registers.count(id_list.at(i)))
367 _fake_data->stepper_registers.at(id_list.at(i)).position = position_list.at(i);
369 return COMM_TX_ERROR;
372 auto result = countSet.insert(id_list[i]);
387 if (id_list.size() != velocity_list.size())
391 std::set<uint8_t> countSet;
392 for (
size_t i = 0; i < id_list.size(); i++)
394 if (!
_fake_data->dxl_registers.count(id_list.at(i)))
395 return COMM_TX_ERROR;
397 _fake_data->dxl_registers.at(id_list.at(i)).velocity = velocity_list.at(i);
399 auto result = countSet.insert(id_list[i]);
412 data_list.emplace_back(0);
413 data_list.emplace_back(0);
429 present_position =
_fake_data->dxl_registers.at(
id).position;
444 present_velocity =
_fake_data->dxl_registers.at(
id).velocity;
457 temperature =
_fake_data->dxl_registers.at(
id).temperature;
472 voltage =
_fake_data->dxl_registers.at(
id).voltage;
489 hardware_error_status = 0;
501 std::set<uint8_t> countSet;
502 for (
auto &
id : id_list)
505 position_list.emplace_back(
_fake_data->dxl_registers.at(
id).position);
506 else if (
_fake_data->stepper_registers.count(
id))
507 position_list.emplace_back(
_fake_data->stepper_registers.at(
id).position);
511 auto result = countSet.insert(
id);
526 std::set<uint8_t> countSet;
527 for (
auto &
id : id_list)
530 velocity_list.emplace_back(
_fake_data->dxl_registers.at(
id).velocity);
531 else if (
_fake_data->stepper_registers.count(
id))
532 velocity_list.emplace_back(
_fake_data->stepper_registers.at(
id).velocity);
534 return COMM_TX_ERROR;
535 auto result = countSet.insert(
id);
551 std::set<uint8_t> countSet;
552 data_array_list.clear();
553 for (
auto &
id : id_list)
557 std::array<uint32_t, 2> blocks{};
559 blocks.at(0) =
_fake_data->dxl_registers.at(
id).velocity;
560 blocks.at(1) =
_fake_data->dxl_registers.at(
id).position;
562 data_array_list.emplace_back(blocks);
564 else if (
_fake_data->stepper_registers.count(
id))
566 std::array<uint32_t, 2> blocks{};
568 blocks.at(0) =
_fake_data->stepper_registers.at(
id).velocity;
569 blocks.at(1) =
_fake_data->stepper_registers.at(
id).position;
571 data_array_list.emplace_back(blocks);
575 auto result = countSet.insert(
id);
590 std::set<uint8_t> countSet;
591 for (
auto &
id : id_list)
594 return COMM_TX_ERROR;
596 firmware_list.emplace_back(
_fake_data->dxl_registers.at(
id).firmware);
598 auto result = countSet.insert(
id);
613 std::set<uint8_t> countSet;
614 for (
auto &
id : id_list)
617 return COMM_TX_ERROR;
619 temperature_list.emplace_back(
_fake_data->dxl_registers.at(
id).temperature);
621 auto result = countSet.insert(
id);
636 std::set<uint8_t> countSet;
637 for (
auto &
id : id_list)
640 return COMM_TX_ERROR;
642 voltage_list.emplace_back(
_fake_data->dxl_registers.at(
id).voltage);
644 auto result = countSet.insert(
id);
669 std::set<uint8_t> countSet;
671 for (
auto &
id : id_list)
675 double voltage =
_fake_data->dxl_registers.at(
id).voltage;
676 uint8_t temperature =
_fake_data->dxl_registers.at(
id).temperature;
677 data_list.emplace_back(std::make_pair(voltage, temperature));
682 auto result = countSet.insert(
id);
697 std::set<uint8_t> countSet;
698 for (
auto &
id : id_list)
700 hw_error_list.emplace_back(0);
701 auto result = countSet.insert(
id);
716 int result = COMM_RX_FAIL;
721 data.emplace_back(
_fake_data->dxl_registers.at(
id).position_p_gain);
722 data.emplace_back(
_fake_data->dxl_registers.at(
id).position_i_gain);
723 data.emplace_back(
_fake_data->dxl_registers.at(
id).position_d_gain);
724 data.emplace_back(
_fake_data->dxl_registers.at(
id).velocity_p_gain);
725 data.emplace_back(
_fake_data->dxl_registers.at(
id).velocity_i_gain);
726 data.emplace_back(
_fake_data->dxl_registers.at(
id).ff1_gain);
727 data.emplace_back(
_fake_data->dxl_registers.at(
id).ff2_gain);
729 result = COMM_SUCCESS;
743 int result = COMM_RX_FAIL;
747 _fake_data->dxl_registers.at(
id).position_p_gain = data.at(0);
748 _fake_data->dxl_registers.at(
id).position_i_gain = data.at(1);
749 _fake_data->dxl_registers.at(
id).position_d_gain = data.at(2);
750 _fake_data->dxl_registers.at(
id).velocity_p_gain = data.at(3);
751 _fake_data->dxl_registers.at(
id).velocity_i_gain = data.at(4);
752 _fake_data->dxl_registers.at(
id).ff1_gain = data.at(5);
753 _fake_data->dxl_registers.at(
id).ff2_gain = data.at(6);
755 result = COMM_SUCCESS;
772 return COMM_TX_ERROR;
788 return COMM_TX_ERROR;
807 return COMM_TX_ERROR;
822 std::set<uint8_t> countSet;
823 for (
auto &
id : id_list)
826 return COMM_TX_ERROR;
827 auto result = countSet.insert(
id);
845 return COMM_TX_ERROR;
860 std::set<uint8_t> countSet;
861 for (
auto &
id : id_list)
864 return COMM_TX_ERROR;
866 auto result = countSet.insert(
id);
913 for (
size_t i = 0; i < id_list.size(); i++)
914 load_list.emplace_back(0);