25
25
#include < map>
26
26
#include < string>
27
27
#include < vector>
28
+ #include < regex>
28
29
29
30
#include < boost/algorithm/string.hpp>
30
31
@@ -46,6 +47,7 @@ typedef struct
46
47
int32_t value_of_max_radian_position;
47
48
int32_t value_of_min_radian_position;
48
49
uint16_t model_num;
50
+ uint8_t firmware_version;
49
51
50
52
std::vector<ControlItem> item;
51
53
std::map<std::string, double > unit_map;
@@ -60,6 +62,12 @@ class DynamixelInfo
60
62
61
63
std::string dxl_model_file_dir;
62
64
65
+ // Firmware version-aware model file selection
66
+ std::string SelectModelFileByFirmwareVersion (
67
+ const std::string & base_model_name,
68
+ uint8_t firmware_version);
69
+ uint8_t ExtractFirmwareVersionFromFilename (const std::string & filename);
70
+
63
71
public:
64
72
// Id, Control table
65
73
std::map<uint8_t , DxlInfo> dxl_info_;
@@ -71,6 +79,7 @@ class DynamixelInfo
71
79
void InitDxlModelInfo ();
72
80
73
81
void ReadDxlModelFile (uint8_t id, uint16_t model_num);
82
+ void ReadDxlModelFile (uint8_t id, uint16_t model_num, uint8_t firmware_version);
74
83
bool GetDxlControlItem (uint8_t id, std::string item_name, uint16_t & addr, uint8_t & size);
75
84
bool CheckDxlControlItem (uint8_t id, std::string item_name);
76
85
@@ -89,6 +98,8 @@ class DynamixelInfo
89
98
90
99
int32_t ConvertRadianToValue (uint8_t id, double radian);
91
100
double ConvertValueToRadian (uint8_t id, int32_t value);
101
+
102
+ std::string GetModelName (uint16_t model_number) const ;
92
103
};
93
104
94
105
// Template implementations
0 commit comments