@@ -73,6 +73,8 @@ void DynamixelInfo::ReadDxlModelFile(uint8_t id, uint16_t model_num)
73
73
std::string line;
74
74
75
75
temp_dxl_info.model_num = model_num;
76
+ bool torque_constant_set = false ;
77
+ bool velocity_unit_set = false ;
76
78
77
79
while (!open_file.eof () ) {
78
80
getline (open_file, line);
@@ -100,6 +102,10 @@ void DynamixelInfo::ReadDxlModelFile(uint8_t id, uint16_t model_num)
100
102
temp_dxl_info.max_radian = static_cast <double >(stod (strs.at (1 )));
101
103
} else if (strs.at (0 ) == " torque_constant" ) {
102
104
temp_dxl_info.torque_constant = static_cast <double >(stod (strs.at (1 )));
105
+ torque_constant_set = true ;
106
+ } else if (strs.at (0 ) == " velocity_unit" ) {
107
+ temp_dxl_info.velocity_unit = static_cast <double >(stod (strs.at (1 )));
108
+ velocity_unit_set = true ;
103
109
}
104
110
} catch (const std::exception & e) {
105
111
std::string error_msg = " Error processing line in model file: " + line +
@@ -108,6 +114,16 @@ void DynamixelInfo::ReadDxlModelFile(uint8_t id, uint16_t model_num)
108
114
}
109
115
}
110
116
117
+ // Set default values and warn if parameters are missing
118
+ if (!torque_constant_set) {
119
+ fprintf (stderr, " [WARN] Model file doesn't contain torque_constant parameter. Using default value: 1.0\n " );
120
+ temp_dxl_info.torque_constant = 1.0 ;
121
+ }
122
+ if (!velocity_unit_set) {
123
+ fprintf (stderr, " [WARN] Model file doesn't contain velocity_unit parameter. Using default value: 0.01\n " );
124
+ temp_dxl_info.velocity_unit = 0.01 ;
125
+ }
126
+
111
127
getline (open_file, line);
112
128
while (!open_file.eof () ) {
113
129
getline (open_file, line);
@@ -170,23 +186,25 @@ bool DynamixelInfo::CheckDxlControlItem(uint8_t id, std::string item_name)
170
186
return false ;
171
187
}
172
188
173
- bool DynamixelInfo::GetDxlTypeInfo (
174
- uint8_t id,
175
- int32_t & value_of_zero_radian_position,
176
- int32_t & value_of_max_radian_position,
177
- int32_t & value_of_min_radian_position,
178
- double & min_radian,
179
- double & max_radian,
180
- double & torque_constant)
181
- {
182
- value_of_zero_radian_position = dxl_info_[id].value_of_zero_radian_position ;
183
- value_of_max_radian_position = dxl_info_[id].value_of_max_radian_position ;
184
- value_of_min_radian_position = dxl_info_[id].value_of_min_radian_position ;
185
- min_radian = dxl_info_[id].min_radian ;
186
- max_radian = dxl_info_[id].max_radian ;
187
- torque_constant = dxl_info_[id].torque_constant ;
188
- return true ;
189
- }
189
+ // bool DynamixelInfo::GetDxlTypeInfo(
190
+ // uint8_t id,
191
+ // int32_t & value_of_zero_radian_position,
192
+ // int32_t & value_of_max_radian_position,
193
+ // int32_t & value_of_min_radian_position,
194
+ // double & min_radian,
195
+ // double & max_radian,
196
+ // double & torque_constant,
197
+ // double & velocity_unit)
198
+ // {
199
+ // value_of_zero_radian_position = dxl_info_[id].value_of_zero_radian_position;
200
+ // value_of_max_radian_position = dxl_info_[id].value_of_max_radian_position;
201
+ // value_of_min_radian_position = dxl_info_[id].value_of_min_radian_position;
202
+ // min_radian = dxl_info_[id].min_radian;
203
+ // max_radian = dxl_info_[id].max_radian;
204
+ // torque_constant = dxl_info_[id].torque_constant;
205
+ // velocity_unit = dxl_info_[id].velocity_unit;
206
+ // return true;
207
+ // }
190
208
191
209
int32_t DynamixelInfo::ConvertRadianToValue (uint8_t id, double radian)
192
210
{
0 commit comments