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;
86 uint16_t model_number = 0;
89 if (ping_result == COMM_SUCCESS)
197 (void)temperature_limit;
225 version =
_fake_data->dxl_registers.at(
id).firmware;
240 pos =
_fake_data->dxl_registers.at(
id).min_position;
255 pos =
_fake_data->dxl_registers.at(
id).max_position;
272 _fake_data->dxl_registers.at(
id).torque = torque_enable;
273 else if (
_fake_data->stepper_registers.count(
id))
274 _fake_data->stepper_registers.at(
id).torque = torque_enable;
276 return COMM_TX_ERROR;
290 _fake_data->dxl_registers.at(
id).position = position;
305 _fake_data->dxl_registers.at(
id).velocity = velocity;
320 int res = COMM_RX_FAIL;
338 std::set<uint8_t> countSet;
340 for (
size_t i = 0; i < id_list.size(); i++)
342 auto result = countSet.insert(id_list.at(i));
358 if (id_list.size() != position_list.size())
362 std::set<uint8_t> countSet;
363 for (
size_t i = 0; i < id_list.size(); i++)
365 if (
_fake_data->dxl_registers.count(id_list.at(i)))
366 _fake_data->dxl_registers.at(id_list.at(i)).position = position_list.at(i);
367 else if (
_fake_data->stepper_registers.count(id_list.at(i)))
368 _fake_data->stepper_registers.at(id_list.at(i)).position = position_list.at(i);
370 return COMM_TX_ERROR;
373 auto result = countSet.insert(id_list[i]);
388 if (id_list.size() != velocity_list.size())
392 std::set<uint8_t> countSet;
393 for (
size_t i = 0; i < id_list.size(); i++)
395 if (!
_fake_data->dxl_registers.count(id_list.at(i)))
396 return COMM_TX_ERROR;
398 _fake_data->dxl_registers.at(id_list.at(i)).velocity = velocity_list.at(i);
400 auto result = countSet.insert(id_list[i]);
413 data_list.emplace_back(0);
414 data_list.emplace_back(0);
430 present_position =
_fake_data->dxl_registers.at(
id).position;
445 present_velocity =
_fake_data->dxl_registers.at(
id).velocity;
458 temperature =
_fake_data->dxl_registers.at(
id).temperature;
473 voltage =
_fake_data->dxl_registers.at(
id).voltage;
490 hardware_error_status = 0;
502 std::set<uint8_t> countSet;
503 for (
auto &
id : id_list)
506 position_list.emplace_back(
_fake_data->dxl_registers.at(
id).position);
507 else if (
_fake_data->stepper_registers.count(
id))
508 position_list.emplace_back(
_fake_data->stepper_registers.at(
id).position);
512 auto result = countSet.insert(
id);
527 std::set<uint8_t> countSet;
528 for (
auto &
id : id_list)
531 velocity_list.emplace_back(
_fake_data->dxl_registers.at(
id).velocity);
532 else if (
_fake_data->stepper_registers.count(
id))
533 velocity_list.emplace_back(
_fake_data->stepper_registers.at(
id).velocity);
535 return COMM_TX_ERROR;
536 auto result = countSet.insert(
id);
552 std::set<uint8_t> countSet;
553 data_array_list.clear();
554 for (
auto &
id : id_list)
558 std::array<uint32_t, 2> blocks{};
560 blocks.at(0) =
_fake_data->dxl_registers.at(
id).velocity;
561 blocks.at(1) =
_fake_data->dxl_registers.at(
id).position;
563 data_array_list.emplace_back(blocks);
565 else if (
_fake_data->stepper_registers.count(
id))
567 std::array<uint32_t, 2> blocks{};
569 blocks.at(0) =
_fake_data->stepper_registers.at(
id).velocity;
570 blocks.at(1) =
_fake_data->stepper_registers.at(
id).position;
572 data_array_list.emplace_back(blocks);
576 auto result = countSet.insert(
id);
591 std::set<uint8_t> countSet;
592 for (
auto &
id : id_list)
595 return COMM_TX_ERROR;
597 firmware_list.emplace_back(
_fake_data->dxl_registers.at(
id).firmware);
599 auto result = countSet.insert(
id);
614 std::set<uint8_t> countSet;
615 for (
auto &
id : id_list)
618 return COMM_TX_ERROR;
620 temperature_list.emplace_back(
_fake_data->dxl_registers.at(
id).temperature);
622 auto result = countSet.insert(
id);
637 std::set<uint8_t> countSet;
638 for (
auto &
id : id_list)
641 return COMM_TX_ERROR;
643 voltage_list.emplace_back(
_fake_data->dxl_registers.at(
id).voltage);
645 auto result = countSet.insert(
id);
670 std::set<uint8_t> countSet;
672 for (
auto &
id : id_list)
676 double voltage =
_fake_data->dxl_registers.at(
id).voltage;
677 uint8_t temperature =
_fake_data->dxl_registers.at(
id).temperature;
678 data_list.emplace_back(std::make_pair(voltage, temperature));
683 auto result = countSet.insert(
id);
698 std::set<uint8_t> countSet;
699 for (
auto &
id : id_list)
701 hw_error_list.emplace_back(0);
702 auto result = countSet.insert(
id);
717 int result = COMM_RX_FAIL;
722 data.emplace_back(
_fake_data->dxl_registers.at(
id).position_p_gain);
723 data.emplace_back(
_fake_data->dxl_registers.at(
id).position_i_gain);
724 data.emplace_back(
_fake_data->dxl_registers.at(
id).position_d_gain);
725 data.emplace_back(
_fake_data->dxl_registers.at(
id).velocity_p_gain);
726 data.emplace_back(
_fake_data->dxl_registers.at(
id).velocity_i_gain);
727 data.emplace_back(
_fake_data->dxl_registers.at(
id).ff1_gain);
728 data.emplace_back(
_fake_data->dxl_registers.at(
id).ff2_gain);
730 result = COMM_SUCCESS;
744 int result = COMM_RX_FAIL;
748 _fake_data->dxl_registers.at(
id).position_p_gain = data.at(0);
749 _fake_data->dxl_registers.at(
id).position_i_gain = data.at(1);
750 _fake_data->dxl_registers.at(
id).position_d_gain = data.at(2);
751 _fake_data->dxl_registers.at(
id).velocity_p_gain = data.at(3);
752 _fake_data->dxl_registers.at(
id).velocity_i_gain = data.at(4);
753 _fake_data->dxl_registers.at(
id).ff1_gain = data.at(5);
754 _fake_data->dxl_registers.at(
id).ff2_gain = data.at(6);
756 result = COMM_SUCCESS;
773 return COMM_TX_ERROR;
789 return COMM_TX_ERROR;
808 return COMM_TX_ERROR;
823 std::set<uint8_t> countSet;
824 for (
auto &
id : id_list)
827 return COMM_TX_ERROR;
828 auto result = countSet.insert(
id);
846 return COMM_TX_ERROR;
861 std::set<uint8_t> countSet;
862 for (
auto &
id : id_list)
865 return COMM_TX_ERROR;
867 auto result = countSet.insert(
id);
914 for (
size_t i = 0; i < id_list.size(); i++)
915 load_list.emplace_back(0);