mock_stepper_driver.cpp
Go to the documentation of this file.
1 /*
2 mock_dxl_driver.cpp
3 Copyright (C) 2020 Niryo
4 All rights reserved.
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http:// www.gnu.org/licenses/>.
15 */
16 
18 #include "dynamixel_sdk/packet_handler.h"
19 #include <algorithm>
20 #include <cstdint>
21 #include <cstdio>
22 #include <map>
23 #include <memory>
24 #include <ros/ros.h>
25 #include <set>
26 #include <string>
27 #include <type_traits>
28 #include <utility>
29 #include <vector>
30 
31 namespace ttl_driver
32 {
33 // definition of methods
34 
39 MockStepperDriver::MockStepperDriver(std::shared_ptr<FakeTtlData> data) : _fake_data(std::move(data))
40 {
41  init();
42 }
43 
49 {
50  bool res = false;
51 
52  if (_fake_data)
53  {
54  // retrieve list of ids
55  for (auto const &imap : _fake_data->stepper_registers)
56  _id_list.emplace_back(imap.first);
57 
58  res = true;
59  }
60  else
61  {
62  std::cout << "ERROR : Fake data not initialized" << std::endl;
63  }
64 
65  return res;
66 }
71 std::string MockStepperDriver::str() const
72 {
73  return "Mock Stepper Driver (OK)";
74 }
75 
76 //*****************************
77 // AbstractTtlDriver interface
78 //*****************************
84 int MockStepperDriver::ping(uint8_t id)
85 {
86  if (std::find(_fake_data->full_id_list.begin(), _fake_data->full_id_list.end(), id) != _fake_data->full_id_list.end())
87  return COMM_SUCCESS;
88  return COMM_TX_FAIL;
89 }
90 
97 int MockStepperDriver::getModelNumber(uint8_t id, uint16_t &model_number)
98 {
99  if (_fake_data->stepper_registers.count(id))
100  model_number = _fake_data->stepper_registers.at(id).model_number;
101  return COMM_SUCCESS;
102 }
103 
109 int MockStepperDriver::checkModelNumber(uint8_t id, uint16_t &model_number)
110 {
111  int ping_result = getModelNumber(id, model_number);
112 
113  return ping_result;
114 }
115 
121 int MockStepperDriver::scan(std::vector<uint8_t> &id_list)
122 {
123  // full id list using only for scan
124  id_list = _fake_data->full_id_list;
125  return COMM_SUCCESS;
126 }
127 
134 {
135  return ping(id);
136 }
137 
144 int MockStepperDriver::changeId(uint8_t id, uint8_t new_id)
145 {
146  int result = COMM_TX_FAIL;
147  if (std::find(_id_list.begin(), _id_list.end(), id) != _id_list.end() &&
148  std::find(_fake_data->full_id_list.begin(), _fake_data->full_id_list.end(), id) != _fake_data->full_id_list.end())
149  {
150  _id_list.erase(std::remove(_id_list.begin(), _id_list.end(), id), _id_list.end());
151  _fake_data->full_id_list.erase(std::remove(_fake_data->full_id_list.begin(), _fake_data->full_id_list.end(), id),
152  _fake_data->full_id_list.end());
153  _id_list.emplace_back(new_id);
154  _fake_data->full_id_list.emplace_back(new_id);
155 
156  result = COMM_SUCCESS;
157  }
158 
159  const auto it = _fake_data->stepper_registers.find(id);
160  if (it != _fake_data->stepper_registers.end())
161  {
162  std::swap(_fake_data->stepper_registers[new_id], it->second);
163  result = COMM_SUCCESS;
164  }
165  else
166  result = COMM_TX_FAIL;
167 
168  return result;
169 }
170 
177 int MockStepperDriver::readFirmwareVersion(uint8_t id, std::string &version)
178 {
179  if (_fake_data->stepper_registers.count(id))
180  version = _fake_data->stepper_registers.at(id).firmware;
181  else
182  return COMM_RX_FAIL;
183  return COMM_SUCCESS;
184 }
185 
192 int MockStepperDriver::readMinPosition(uint8_t id, uint32_t &pos)
193 {
194  if (_fake_data->stepper_registers.count(id))
195  pos = _fake_data->stepper_registers.at(id).min_position;
196  else
197  return COMM_RX_FAIL;
198  return COMM_SUCCESS;
199 }
200 
207 int MockStepperDriver::readMaxPosition(uint8_t id, uint32_t &pos)
208 {
209  if (_fake_data->stepper_registers.count(id))
210  pos = _fake_data->stepper_registers.at(id).max_position;
211  else
212  return COMM_RX_FAIL;
213  return COMM_SUCCESS;
214 }
215 
216 // ram write
217 
224 int MockStepperDriver::writeTorquePercentage(uint8_t id, uint8_t /*torque_percentage*/)
225 {
226  if (COMM_SUCCESS != ping(id))
227  return COMM_RX_FAIL;
228 
229  return COMM_SUCCESS;
230 }
231 
238 int MockStepperDriver::writePositionGoal(uint8_t id, uint32_t position)
239 {
240  if (_fake_data->stepper_registers.count(id))
241  _fake_data->stepper_registers.at(id).position = position;
242  else
243  return COMM_RX_FAIL;
244  return COMM_SUCCESS;
245 }
246 
247 // according to the registers, the data should be an int32_t ?
254 int MockStepperDriver::writeVelocityGoal(uint8_t id, uint32_t velocity)
255 {
256  if (_fake_data->stepper_registers.count(id))
257  _fake_data->stepper_registers.at(id).velocity = velocity;
258  else
259  return COMM_RX_FAIL;
260  return COMM_SUCCESS;
261 }
262 
269 int MockStepperDriver::syncWriteTorquePercentage(const std::vector<uint8_t> &id_list,
270  const std::vector<uint8_t> & /*torque_percentage_list*/)
271 {
272  // Create a map to store the frequency of each element in vector
273  std::set<uint8_t> countSet;
274 
275  // Iterate over the vector and store the frequency of each element in map
276  for (auto &id : id_list)
277  {
278  auto result = countSet.insert(id);
279  if (!result.second)
280  return GROUP_SYNC_REDONDANT_ID; // redondant id
281  }
282  return COMM_SUCCESS;
283 }
284 
291 int MockStepperDriver::syncWritePositionGoal(const std::vector<uint8_t> &id_list,
292  const std::vector<uint32_t> &position_list)
293 {
294  if (id_list.size() != position_list.size())
295  return LEN_ID_DATA_NOT_SAME;
296 
297  // Create a map to store the frequency of each element in vector
298  std::set<uint8_t> countSet;
299 
300  for (size_t i = 0; i < id_list.size(); ++i)
301  {
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);
306  else
307  return COMM_TX_ERROR;
308 
309  auto result = countSet.insert(id_list.at(i));
310  if (!result.second)
311  return GROUP_SYNC_REDONDANT_ID; // redondant id
312  }
313  return COMM_SUCCESS;
314 }
315 
322 int MockStepperDriver::syncWriteVelocityGoal(const std::vector<uint8_t> &id_list,
323  const std::vector<uint32_t> & /*velocity_list*/)
324 {
325  // Create a map to store the frequency of each element in vector
326  std::set<uint8_t> countSet;
327 
328  // Iterate over the vector and store the frequency of each element in map
329  for (auto &id : id_list)
330  {
331  auto result = countSet.insert(id);
332  if (!result.second)
333  return GROUP_SYNC_REDONDANT_ID; // redondant id
334  }
335  return COMM_SUCCESS;
336 }
337 
338 // ram read
339 
346 int MockStepperDriver::readPosition(uint8_t id, uint32_t &present_position)
347 {
348  if (_fake_data->stepper_registers.count(id))
349  present_position = _fake_data->stepper_registers.at(id).position;
350  else
351  return COMM_RX_FAIL;
352  return COMM_SUCCESS;
353 }
354 
361 int MockStepperDriver::readVelocity(uint8_t id, uint32_t &present_velocity)
362 {
363  if (_fake_data->stepper_registers.count(id))
364  present_velocity = _fake_data->stepper_registers.at(id).velocity;
365  return COMM_SUCCESS;
366 }
367 
374 int MockStepperDriver::readTemperature(uint8_t id, uint8_t &temperature)
375 {
376  if (_fake_data->stepper_registers.count(id))
377  temperature = _fake_data->stepper_registers.at(id).temperature;
378  else
379  return COMM_RX_FAIL;
380  return COMM_SUCCESS;
381 }
382 
389 int MockStepperDriver::readVoltage(uint8_t id, double &voltage)
390 {
391  if (_fake_data->stepper_registers.count(id))
392  voltage = _fake_data->stepper_registers.at(id).voltage;
393  else
394  return COMM_RX_FAIL;
395  return COMM_SUCCESS;
396 }
397 
404 int MockStepperDriver::readHwErrorStatus(uint8_t /*id*/, uint8_t &hardware_error_status)
405 {
406  hardware_error_status = 0;
407  return COMM_SUCCESS;
408 }
409 
416 int MockStepperDriver::syncReadPosition(const std::vector<uint8_t> &id_list, std::vector<uint32_t> &position_list)
417 {
418  std::set<uint8_t> countSet;
419 
420  position_list.clear();
421  for (auto &id : id_list)
422  {
423  if (_fake_data->dxl_registers.count(id))
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);
427  else
428  return COMM_RX_FAIL;
429 
430  auto result = countSet.insert(id);
431  if (!result.second)
432  return GROUP_SYNC_REDONDANT_ID; // redondant id
433  }
434  return COMM_SUCCESS;
435 }
436 
443 int MockStepperDriver::syncReadVelocity(const std::vector<uint8_t> &id_list, std::vector<uint32_t> &velocity_list)
444 {
445  std::set<uint8_t> countSet;
446 
447  velocity_list.clear();
448  for (auto &id : id_list)
449  {
450  if (_fake_data->dxl_registers.count(id))
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);
454  else
455  return COMM_RX_FAIL;
456 
457  auto result = countSet.insert(id);
458  if (!result.second)
459  return GROUP_SYNC_REDONDANT_ID; // redondant id
460  }
461  return COMM_SUCCESS;
462 }
463 
470 int MockStepperDriver::syncReadJointStatus(const std::vector<uint8_t> &id_list,
471  std::vector<std::array<uint32_t, 2>> &data_array_list)
472 {
473  std::set<uint8_t> countSet;
474 
475  data_array_list.clear();
476  for (auto &id : id_list)
477  {
478  if (_fake_data->stepper_registers.count(id))
479  {
480  std::array<uint32_t, 2> blocks{};
481 
482  blocks.at(0) = _fake_data->stepper_registers.at(id).velocity;
483  blocks.at(1) = _fake_data->stepper_registers.at(id).position;
484 
485  data_array_list.emplace_back(blocks);
486  }
487  else if (_fake_data->dxl_registers.count(id))
488  {
489  std::array<uint32_t, 2> blocks{};
490 
491  blocks.at(0) = _fake_data->dxl_registers.at(id).velocity;
492  blocks.at(1) = _fake_data->dxl_registers.at(id).position;
493 
494  data_array_list.emplace_back(blocks);
495  }
496  else
497  return COMM_RX_FAIL;
498 
499  auto result = countSet.insert(id);
500  if (!result.second)
501  return GROUP_SYNC_REDONDANT_ID; // redondant id
502  }
503  return COMM_SUCCESS;
504 }
505 
512 int MockStepperDriver::syncReadFirmwareVersion(const std::vector<uint8_t> &id_list,
513  std::vector<std::string> &firmware_list)
514 {
515  std::set<uint8_t> countSet;
516 
517  firmware_list.clear();
518  for (auto &id : id_list)
519  {
520  if (_fake_data->dxl_registers.count(id))
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);
524  else
525  return COMM_RX_FAIL;
526 
527  auto result = countSet.insert(id);
528  if (!result.second)
529  return GROUP_SYNC_REDONDANT_ID; // redondant id
530  }
531  return COMM_SUCCESS;
532 }
533 
540 int MockStepperDriver::syncReadTemperature(const std::vector<uint8_t> &id_list, std::vector<uint8_t> &temperature_list)
541 {
542  std::set<uint8_t> countSet;
543 
544  temperature_list.clear();
545  for (auto &id : id_list)
546  {
547  if (_fake_data->dxl_registers.count(id))
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);
551  else if (_fake_data->end_effector.id == id)
552  temperature_list.emplace_back(_fake_data->end_effector.temperature);
553  else
554  return COMM_RX_FAIL;
555 
556  auto result = countSet.insert(id);
557  if (!result.second)
558  return GROUP_SYNC_REDONDANT_ID; // redondant id
559  }
560  return COMM_SUCCESS;
561 }
562 
569 int MockStepperDriver::syncReadVoltage(const std::vector<uint8_t> &id_list, std::vector<double> &voltage_list)
570 {
571  std::set<uint8_t> countSet;
572 
573  voltage_list.clear();
574  for (auto &id : id_list)
575  {
576  if (_fake_data->dxl_registers.count(id))
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);
580  else if (_fake_data->end_effector.id == id)
581  voltage_list.emplace_back(_fake_data->end_effector.voltage / 1000);
582  else
583  return COMM_RX_FAIL;
584 
585  auto result = countSet.insert(id);
586  if (!result.second)
587  return GROUP_SYNC_REDONDANT_ID; // redondant id
588  }
589  return COMM_SUCCESS;
590 }
591 
598 int MockStepperDriver::syncReadRawVoltage(const std::vector<uint8_t> &id_list, std::vector<double> &voltage_list)
599 {
600  std::set<uint8_t> countSet;
601 
602  voltage_list.clear();
603  for (auto &id : id_list)
604  {
605  if (_fake_data->dxl_registers.count(id))
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);
609  else if (_fake_data->end_effector.id == id)
610  voltage_list.emplace_back(_fake_data->end_effector.voltage);
611  else
612  return COMM_RX_FAIL;
613 
614  auto result = countSet.insert(id);
615  if (!result.second)
616  return GROUP_SYNC_REDONDANT_ID; // redondant id
617  }
618  return COMM_SUCCESS;
619 }
620 
627 int MockStepperDriver::syncReadHwStatus(const std::vector<uint8_t> &id_list,
628  std::vector<std::pair<double, uint8_t>> &data_list)
629 {
630  data_list.clear();
631 
632  std::set<uint8_t> countSet;
633 
634  for (auto &id : id_list)
635  {
636  if (_fake_data->dxl_registers.count(id))
637  {
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));
641  }
642  else if (_fake_data->stepper_registers.count(id))
643  {
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));
647  }
648  else if (_fake_data->end_effector.id == id)
649  {
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));
653  }
654  else
655  return COMM_RX_FAIL;
656 
657  auto result = countSet.insert(id);
658  if (!result.second)
659  return GROUP_SYNC_REDONDANT_ID; // redondant id
660  }
661  return COMM_SUCCESS;
662 }
663 
670 int MockStepperDriver::syncReadHwErrorStatus(const std::vector<uint8_t> &id_list, std::vector<uint8_t> &hw_error_list)
671 {
672  std::set<uint8_t> countSet;
673 
674  hw_error_list.clear();
675  for (auto &id : id_list)
676  {
677  hw_error_list.emplace_back(0);
678  auto result = countSet.insert(id);
679  if (!result.second)
680  return GROUP_SYNC_REDONDANT_ID; // redondant id
681  }
682  return COMM_SUCCESS;
683 }
684 
685 //*****************************
686 // AbstractStepperDriver interface
687 //*****************************
688 
689 int MockStepperDriver::readControlMode(uint8_t id, uint8_t &mode)
690 {
691  if (_fake_data->stepper_registers.count(id))
692  mode = _fake_data->stepper_registers.at(id).operating_mode;
693  else
694  return COMM_RX_FAIL;
695  return COMM_SUCCESS;
696 }
697 
698 int MockStepperDriver::writeControlMode(uint8_t id, uint8_t mode)
699 {
700  if (_fake_data->stepper_registers.count(id))
701  _fake_data->stepper_registers.at(id).operating_mode = mode;
702  else
703  return COMM_RX_FAIL;
704  return COMM_SUCCESS;
705 }
706 
713 int MockStepperDriver::readVelocityProfile(uint8_t id, std::vector<uint32_t> &data)
714 {
715  int result = COMM_RX_FAIL;
716 
717  data.clear();
718  if (_fake_data->stepper_registers.count(id))
719  {
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);
728 
729  result = COMM_SUCCESS;
730  }
731 
732  return result;
733 }
734 
741 int MockStepperDriver::writeVelocityProfile(uint8_t id, const std::vector<uint32_t> &data)
742 {
743  int result = COMM_RX_FAIL;
744 
745  if (_fake_data->stepper_registers.count(id))
746  {
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);
755 
756  result = COMM_SUCCESS;
757  }
758 
759  return result;
760 }
761 
768 {
769  if (COMM_SUCCESS != ping(id))
770  return COMM_RX_FAIL;
771 
773  _fake_time = 2;
774  return COMM_SUCCESS;
775 }
776 
784 int MockStepperDriver::writeHomingSetup(uint8_t id, uint8_t /*direction*/, uint8_t /*stall_threshold*/)
785 {
786  return ping(id);
787 }
788 
795 int MockStepperDriver::readHomingStatus(uint8_t id, uint8_t &status)
796 {
797  if (COMM_SUCCESS != ping(id))
798  return COMM_RX_FAIL;
799 
800  if (_fake_time)
801  {
802  _fake_time--;
803  }
804  else
806 
807  status = _calibration_status;
808  return COMM_SUCCESS;
809 }
810 
817 int MockStepperDriver::syncReadHomingStatus(const std::vector<uint8_t> &id_list, std::vector<uint8_t> &status_list)
818 {
819  if (_fake_time)
820  {
821  _fake_time--;
822  }
823  else // when calibration finished or at startup
825 
826  std::set<uint8_t> countSet;
827 
828  status_list.clear();
829  for (auto &id : id_list)
830  {
831  status_list.emplace_back(_calibration_status);
832  auto result = countSet.insert(id);
833  if (!result.second)
834  return GROUP_SYNC_REDONDANT_ID; // redondant id
835  }
836 
837  return COMM_SUCCESS;
838 }
839 
846 int MockStepperDriver::readFirmwareRunning(uint8_t id, bool &is_running)
847 {
848  if (COMM_SUCCESS != ping(id))
849  return COMM_RX_FAIL;
850 
851  is_running = true;
852  return COMM_SUCCESS;
853 }
854 
861 int MockStepperDriver::syncReadHomingAbsPosition(const std::vector<uint8_t> &id_list,
862  std::vector<uint32_t> &abs_position)
863 {
864  std::set<uint8_t> countSet;
865 
866  abs_position.clear();
867  for (auto &id : id_list)
868  {
869  if (_fake_data->stepper_registers.count(id))
870  abs_position.emplace_back(_fake_data->stepper_registers.at(id).homing_abs_position);
871  else
872  return COMM_RX_FAIL;
873 
874  auto result = countSet.insert(id);
875  if (!result.second)
876  return GROUP_SYNC_REDONDANT_ID; // redondant id
877  }
878  return COMM_SUCCESS;
879 }
880 
887 int MockStepperDriver::syncWriteHomingAbsPosition(const std::vector<uint8_t> &id_list,
888  const std::vector<uint32_t> &abs_position)
889 {
890  if (id_list.size() != abs_position.size())
891  return LEN_ID_DATA_NOT_SAME;
892 
893  std::set<uint8_t> countSet;
894 
895  for (size_t i = 0; i < id_list.size(); ++i)
896  {
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);
899  else
900  return COMM_TX_ERROR;
901 
902  auto result = countSet.insert(id_list.at(i));
903  if (!result.second)
904  return GROUP_SYNC_REDONDANT_ID; // redondant id
905  }
906  return COMM_SUCCESS;
907 }
908 
910 {
911  return 1.0;
912 }
913 
914 } // namespace ttl_driver
ttl_driver::MockStepperDriver::syncReadHomingStatus
int syncReadHomingStatus(const std::vector< uint8_t > &id_list, std::vector< uint8_t > &status_list) override
MockStepperDriver::syncReadHomingStatus.
Definition: mock_stepper_driver.cpp:817
ttl_driver::MockStepperDriver::writeHomingSetup
int writeHomingSetup(uint8_t id, uint8_t direction, uint8_t stall_threshold) override
MockStepperDriver::writeHomingDirection.
Definition: mock_stepper_driver.cpp:784
ttl_driver::MockStepperDriver::syncWriteVelocityGoal
int syncWriteVelocityGoal(const std::vector< uint8_t > &id_list, const std::vector< uint32_t > &velocity_list) override
MockStepperDriver::syncWriteVelocityGoal.
Definition: mock_stepper_driver.cpp:322
ttl_driver::MockStepperDriver::writePositionGoal
int writePositionGoal(uint8_t id, uint32_t position) override
MockStepperDriver::writePositionGoal.
Definition: mock_stepper_driver.cpp:238
ttl_driver::MockStepperDriver::_fake_time
int _fake_time
Definition: mock_stepper_driver.hpp:124
ttl_driver::MockStepperDriver::syncWriteTorquePercentage
int syncWriteTorquePercentage(const std::vector< uint8_t > &id_list, const std::vector< uint8_t > &torque_percentage_list) override
MockStepperDriver::syncWriteTorquePercentage.
Definition: mock_stepper_driver.cpp:269
ttl_driver::MockStepperDriver::syncReadJointStatus
int syncReadJointStatus(const std::vector< uint8_t > &id_list, std::vector< std::array< uint32_t, 2 > > &data_array) override
StepperDriver::syncReadJointStatus.
Definition: mock_stepper_driver.cpp:470
ttl_driver::MockStepperDriver::readMinPosition
int readMinPosition(uint8_t id, uint32_t &min_pos) override
MockStepperDriver::readMinPosition.
Definition: mock_stepper_driver.cpp:192
ttl_driver::MockStepperDriver::syncReadVoltage
int syncReadVoltage(const std::vector< uint8_t > &id_list, std::vector< double > &voltage_list) override
MockStepperDriver::syncReadVoltage.
Definition: mock_stepper_driver.cpp:569
ttl_driver::MockStepperDriver::_calibration_status
uint8_t _calibration_status
Definition: mock_stepper_driver.hpp:122
ttl_driver::MockStepperDriver::CALIBRATION_IN_PROGRESS
static constexpr int CALIBRATION_IN_PROGRESS
Definition: mock_stepper_driver.hpp:130
ttl_driver::MockStepperDriver::MockStepperDriver
MockStepperDriver(std::shared_ptr< FakeTtlData > data)
MockStepperDriver::MockStepperDriver.
Definition: mock_stepper_driver.cpp:39
ttl_driver::MockStepperDriver::syncWriteHomingAbsPosition
int syncWriteHomingAbsPosition(const std::vector< uint8_t > &id_list, const std::vector< uint32_t > &abs_position) override
MockStepperDriver::syncWriteHomingAbsPosition.
Definition: mock_stepper_driver.cpp:887
ttl_driver::MockStepperDriver::syncReadHwErrorStatus
int syncReadHwErrorStatus(const std::vector< uint8_t > &id_list, std::vector< uint8_t > &hw_error_list) override
MockStepperDriver::syncReadHwErrorStatus.
Definition: mock_stepper_driver.cpp:670
ttl_driver::MockStepperDriver::_fake_data
std::shared_ptr< FakeTtlData > _fake_data
Definition: mock_stepper_driver.hpp:119
mock_stepper_driver.hpp
ttl_driver
Definition: abstract_dxl_driver.hpp:30
ttl_driver::MockStepperDriver::syncReadTemperature
int syncReadTemperature(const std::vector< uint8_t > &id_list, std::vector< uint8_t > &temperature_list) override
MockStepperDriver::syncReadTemperature.
Definition: mock_stepper_driver.cpp:540
ttl_driver::MockStepperDriver::readVelocity
int readVelocity(uint8_t id, uint32_t &present_velocity) override
MockStepperDriver::readVelocity.
Definition: mock_stepper_driver.cpp:361
ttl_driver::MockStepperDriver::writeVelocityProfile
int writeVelocityProfile(uint8_t id, const std::vector< uint32_t > &data) override
MockStepperDriver::writeVelocityProfile.
Definition: mock_stepper_driver.cpp:741
ttl_driver::MockStepperDriver::syncReadHwStatus
int syncReadHwStatus(const std::vector< uint8_t > &id_list, std::vector< std::pair< double, uint8_t > > &data_list) override
MockStepperDriver::syncReadHwStatus.
Definition: mock_stepper_driver.cpp:627
ttl_driver::MockStepperDriver::ping
int ping(uint8_t id) override
MockStepperDriver::ping.
Definition: mock_stepper_driver.cpp:84
ttl_driver::MockStepperDriver::str
std::string str() const override
MockStepperDriver::str.
Definition: mock_stepper_driver.cpp:71
ttl_driver::MockStepperDriver::syncReadHomingAbsPosition
int syncReadHomingAbsPosition(const std::vector< uint8_t > &id_list, std::vector< uint32_t > &abs_position) override
MockStepperDriver::syncReadHomingAbsPosition.
Definition: mock_stepper_driver.cpp:861
ttl_driver::MockStepperDriver::readPosition
int readPosition(uint8_t id, uint32_t &present_position) override
MockStepperDriver::readPosition.
Definition: mock_stepper_driver.cpp:346
ttl_driver::MockStepperDriver::syncReadVelocity
int syncReadVelocity(const std::vector< uint8_t > &id_list, std::vector< uint32_t > &velocity_list) override
MockStepperDriver::syncReadVelocity.
Definition: mock_stepper_driver.cpp:443
ttl_driver::MockStepperDriver::scan
int scan(std::vector< uint8_t > &id_list) override
MockStepperDriver::scan.
Definition: mock_stepper_driver.cpp:121
ttl_driver::MockStepperDriver::writeTorquePercentage
int writeTorquePercentage(uint8_t id, uint8_t torque_percentage) override
MockStepperDriver::writeTorquePercentage.
Definition: mock_stepper_driver.cpp:224
ttl_driver::MockStepperDriver::readHomingStatus
int readHomingStatus(uint8_t id, uint8_t &status) override
MockStepperDriver::readHomingStatus.
Definition: mock_stepper_driver.cpp:795
ttl_driver::MockStepperDriver::readControlMode
int readControlMode(uint8_t id, uint8_t &mode) override
Definition: mock_stepper_driver.cpp:689
ttl_driver::MockStepperDriver::syncReadRawVoltage
int syncReadRawVoltage(const std::vector< uint8_t > &id_list, std::vector< double > &voltage_list) override
MockStepperDriver::syncReadVoltage.
Definition: mock_stepper_driver.cpp:598
ttl_driver::MockStepperDriver::syncWritePositionGoal
int syncWritePositionGoal(const std::vector< uint8_t > &id_list, const std::vector< uint32_t > &position_list) override
MockStepperDriver::syncWritePositionGoal.
Definition: mock_stepper_driver.cpp:291
ttl_driver::MockStepperDriver::checkModelNumber
int checkModelNumber(uint8_t id, uint16_t &model_number) override
MockStepperDriver::checkModelNumber.
Definition: mock_stepper_driver.cpp:109
ttl_driver::MockStepperDriver::CALIBRATION_SUCCESS
static constexpr int CALIBRATION_SUCCESS
Definition: mock_stepper_driver.hpp:131
ttl_driver::MockStepperDriver::GROUP_SYNC_REDONDANT_ID
static constexpr int GROUP_SYNC_REDONDANT_ID
Definition: mock_stepper_driver.hpp:126
ttl_driver::MockStepperDriver::readMaxPosition
int readMaxPosition(uint8_t id, uint32_t &max_pos) override
MockStepperDriver::readMaxPosition.
Definition: mock_stepper_driver.cpp:207
ttl_driver::MockStepperDriver::readTemperature
int readTemperature(uint8_t id, uint8_t &temperature) override
MockStepperDriver::readTemperature.
Definition: mock_stepper_driver.cpp:374
ttl_driver::MockStepperDriver::writeControlMode
int writeControlMode(uint8_t id, uint8_t mode) override
Definition: mock_stepper_driver.cpp:698
ttl_driver::MockStepperDriver::syncReadFirmwareVersion
int syncReadFirmwareVersion(const std::vector< uint8_t > &id_list, std::vector< std::string > &firmware_list) override
MockStepperDriver::syncReadFirmwareVersion.
Definition: mock_stepper_driver.cpp:512
ttl_driver::MockStepperDriver::readFirmwareVersion
int readFirmwareVersion(uint8_t id, std::string &version) override
MockStepperDriver::readFirmwareVersion.
Definition: mock_stepper_driver.cpp:177
ttl_driver::MockStepperDriver::changeId
int changeId(uint8_t id, uint8_t new_id) override
MockStepperDriver::changeId.
Definition: mock_stepper_driver.cpp:144
ttl_driver::MockStepperDriver::readFirmwareRunning
int readFirmwareRunning(uint8_t id, bool &is_running) override
MockStepperDriver::readFirmwareRunning.
Definition: mock_stepper_driver.cpp:846
ttl_driver::MockStepperDriver::readHwErrorStatus
int readHwErrorStatus(uint8_t id, uint8_t &hardware_error_status) override
MockStepperDriver::readHwErrorStatus.
Definition: mock_stepper_driver.cpp:404
ttl_driver::MockStepperDriver::writeVelocityGoal
int writeVelocityGoal(uint8_t id, uint32_t velocity) override
MockStepperDriver::writeVelocityGoal.
Definition: mock_stepper_driver.cpp:254
ttl_driver::MockStepperDriver::readVoltage
int readVoltage(uint8_t id, double &voltage) override
MockStepperDriver::readVoltage.
Definition: mock_stepper_driver.cpp:389
ttl_driver::MockStepperDriver::getModelNumber
int getModelNumber(uint8_t id, uint16_t &model_number) override
MockStepperDriver::getModelNumber.
Definition: mock_stepper_driver.cpp:97
ttl_driver::MockStepperDriver::velocityUnit
float velocityUnit() const override
writeVelocityGoal: define the unit of the velocity in RPM
Definition: mock_stepper_driver.cpp:909
ttl_driver::MockStepperDriver::startHoming
int startHoming(uint8_t id) override
MockStepperDriver::startHoming.
Definition: mock_stepper_driver.cpp:767
ttl_driver::MockStepperDriver::init
bool init()
MockStepperDriver::init.
Definition: mock_stepper_driver.cpp:48
ttl_driver::MockStepperDriver::syncReadPosition
int syncReadPosition(const std::vector< uint8_t > &id_list, std::vector< uint32_t > &position_list) override
MockStepperDriver::syncReadPosition.
Definition: mock_stepper_driver.cpp:416
ttl_driver::MockStepperDriver::readVelocityProfile
int readVelocityProfile(uint8_t id, std::vector< uint32_t > &data_list) override
MockStepperDriver::readVelocityProfile.
Definition: mock_stepper_driver.cpp:713
ttl_driver::MockStepperDriver::LEN_ID_DATA_NOT_SAME
static constexpr int LEN_ID_DATA_NOT_SAME
Definition: mock_stepper_driver.hpp:127
ttl_driver::MockStepperDriver::_id_list
std::vector< uint8_t > _id_list
Definition: mock_stepper_driver.hpp:120
ttl_driver::MockStepperDriver::reboot
int reboot(uint8_t id) override
MockStepperDriver::reboot.
Definition: mock_stepper_driver.cpp:133


ttl_driver
Author(s): Clement Cocquempot
autogenerated on Fri Mar 6 2026 15:24:15