aron_conversions.cpp
Go to the documentation of this file.
1 /**
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
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  * @author Fabian Reister ( fabian dot reister at kit dot edu )
17  * @date 2022
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #include "aron_conversions.h"
23 
24 #include <map>
25 
28 
30 {
31  // void
32  // fromAron(const arondto::FTConfig& dto, FTSensor::FTConfig& bo)
33  // {
34  // bo = FTSensor::FTConfig{.sensorName = dto.sensorName,
35  // .ftFilter = dto.ftFilter,
36  // .deadZoneForce = dto.deadZoneForce,
37  // .deadZoneTorque = dto.deadZoneTorque,
38  // .timeLimit = dto.timeLimit,
39  // .enableTCPGravityCompensation = dto.enableTCPGravityCompensation,
40  // .reCalibrate = dto.reCalibrate,
41  // .enableSafeGuardForce = dto.enableSafeGuardForce,
42  // .enableSafeGuardTorque = dto.enableSafeGuardTorque,
43  // .safeGuardForceThreshold = dto.safeGuardForceThreshold,
44  // .safeGuardTorqueThreshold = dto.safeGuardTorqueThreshold,
45  // .forceBaseline = dto.forceBaseline,
46  // .torqueBaseline = dto.torqueBaseline};
47  // }
48 
49  // void
50  // toAron(arondto::FTConfig& dto, const FTSensor::FTConfig& bo)
51  // {
52  // dto.sensorName = bo.sensorName;
53  // dto.ftFilter = bo.ftFilter;
54  // dto.deadZoneForce = bo.deadZoneForce;
55  // dto.deadZoneTorque = bo.deadZoneTorque;
56  // dto.timeLimit = bo.timeLimit;
57  // dto.enableTCPGravityCompensation = bo.enableTCPGravityCompensation;
58  // dto.reCalibrate = bo.reCalibrate;
59  // dto.enableSafeGuardForce = bo.enableSafeGuardForce;
60  // dto.enableSafeGuardTorque = bo.enableSafeGuardTorque;
61  // dto.safeGuardForceThreshold = bo.safeGuardForceThreshold;
62  // dto.safeGuardTorqueThreshold = bo.safeGuardTorqueThreshold;
63  // dto.forceBaseline = bo.forceBaseline;
64  // dto.torqueBaseline = bo.torqueBaseline;
65  // }
66 } // namespace armarx::control::common::ft
67 
69 {
70  // // Impedance controller
71  // void
72  // fromAron(const arondto::TaskspaceImpedanceControllerConfig& dto,
73  // TaskspaceImpedanceController::Config& bo)
74  // {
75  // auto ftBO = ::armarx::fromAron<ft::FTSensor::FTConfig, ft::arondto::FTConfig>(dto.ftConfig);
76  // bo = TaskspaceImpedanceController::Config{.kpImpedance = dto.kpImpedance,
77  // .kdImpedance = dto.kdImpedance,
78  // .kpNullspace = dto.kpNullspace,
79  // .kdNullspace = dto.kdNullspace,
80  // .desiredPose = dto.desiredPose,
81  // .desiredTwist = dto.desiredTwist,
82  // .desiredNullspaceJointAngles =
83  // dto.desiredNullspaceJointAngles,
84  // .torqueLimit = dto.torqueLimit,
85  // .qvelFilter = dto.qvelFilter,
86  // .ftConfig = ftBO};
87  // }
88 
89  // void
90  // fromAron(const arondto::TaskspaceImpedanceControllerConfigDict& dto,
91  // TaskspaceImpedanceController::ConfigDict& bo)
92  // {
93  // for (const auto& pair : dto.cfg)
94  // {
95  // bo.cfg.emplace(
96  // pair.first,
97  // ::armarx::fromAron<TaskspaceImpedanceController::Config,
98  // arondto::TaskspaceImpedanceControllerConfig>(pair.second));
99  // }
100  // }
101 
102  // void
103  // toAron(arondto::TaskspaceImpedanceControllerConfigDict& dto,
104  // const TaskspaceImpedanceController::ConfigDict& bo)
105  // {
106  // for (const auto& pair : bo.cfg)
107  // {
108  // dto.cfg.emplace(pair.first,
109  // ::armarx::toAron<arondto::TaskspaceImpedanceControllerConfig,
110  // TaskspaceImpedanceController::Config>(pair.second));
111  // }
112  // }
113 
114  // void
115  // toAron(arondto::TaskspaceImpedanceControllerConfig& dto,
116  // const TaskspaceImpedanceController::Config& bo)
117  // {
118  // dto.kpImpedance = bo.kpImpedance;
119  // dto.kdImpedance = bo.kdImpedance;
120  // dto.kpNullspace = bo.kpNullspace;
121  // dto.kdNullspace = bo.kdNullspace;
122  // dto.desiredPose = bo.desiredPose;
123  // dto.desiredTwist = bo.desiredTwist;
124  // dto.desiredNullspaceJointAngles = bo.desiredNullspaceJointAngles;
125  // dto.torqueLimit = bo.torqueLimit;
126  // dto.qvelFilter = bo.qvelFilter;
127  // dto.ftConfig = ::armarx::toAron<ft::arondto::FTConfig, ft::FTSensor::FTConfig>(bo.ftConfig);
128  // }
129 
130  // // Mixed Impedance-velocity controller
131  // void
132  // fromAron(const arondto::TaskspaceMixedImpedanceVelocityControllerConfig& dto,
133  // TaskspaceMixedImpedanceVelocityController::Config& bo)
134  // {
135  // auto ftBO = ::armarx::fromAron<ft::FTSensor::FTConfig, ft::arondto::FTConfig>(dto.ftConfig);
136  // bo = TaskspaceMixedImpedanceVelocityController::Config{
137  // .jointNameListTorque = dto.jointNameListTorque,
138  // .jointNameListVelocity = dto.jointNameListVelocity,
139  // .kpImpedance = dto.kpImpedance,
140  // .kdImpedance = dto.kdImpedance,
141  // .kpNullspaceTorque = dto.kpNullspaceTorque,
142  // .kdNullspaceTorque = dto.kdNullspaceTorque,
143  // .kpCartesianVel = dto.kpCartesianVel,
144  // .kdCartesianVel = dto.kdCartesianVel,
145  // .kpNullspaceVel = dto.kpNullspaceVel,
146  // .kdNullspaceVel = dto.kdNullspaceVel,
147  // .desiredPose = dto.desiredPose,
148  // .desiredTwist = dto.desiredTwist,
149  // .desiredNullspaceJointAngles = dto.desiredNullspaceJointAngles,
150  // .torqueLimit = dto.torqueLimit,
151  // .velocityLimit = dto.velocityLimit,
152  // .qvelFilter = dto.qvelFilter,
153  // .safeDistanceToGoal = dto.safeDistanceToGoal,
154  // .ftConfig = ftBO};
155  // }
156  //
157  // void
158  // fromAron(const arondto::TaskspaceMixedImpedanceVelocityControllerConfigDict& dto,
159  // TaskspaceMixedImpedanceVelocityController::ConfigDict& bo)
160  // {
161  // for (const auto& pair : dto.cfg)
162  // {
163  // bo.cfg.emplace(
164  // pair.first,
165  // ::armarx::fromAron<TaskspaceMixedImpedanceVelocityController::Config,
166  // arondto::TaskspaceMixedImpedanceVelocityControllerConfig>(
167  // pair.second));
168  // }
169  // }
170  //
171  // void
172  // toAron(arondto::TaskspaceMixedImpedanceVelocityControllerConfigDict& dto,
173  // const TaskspaceMixedImpedanceVelocityController::ConfigDict& bo)
174  // {
175  // for (const auto& pair : bo.cfg)
176  // {
177  // dto.cfg.emplace(
178  // pair.first,
179  // ::armarx::toAron<arondto::TaskspaceMixedImpedanceVelocityControllerConfig,
180  // TaskspaceMixedImpedanceVelocityController::Config>(pair.second));
181  // }
182  // }
183  //
184  // void
185  // toAron(arondto::TaskspaceMixedImpedanceVelocityControllerConfig& dto,
186  // const TaskspaceMixedImpedanceVelocityController::Config& bo)
187  // {
188  // dto.jointNameListTorque = bo.jointNameListTorque;
189  // dto.jointNameListVelocity = bo.jointNameListVelocity;
190  // dto.kpImpedance = bo.kpImpedance;
191  // dto.kdImpedance = bo.kdImpedance;
192  // dto.kpNullspaceTorque = bo.kpNullspaceTorque;
193  // dto.kdNullspaceTorque = bo.kdNullspaceTorque;
194  // dto.kpCartesianVel = bo.kpCartesianVel;
195  // dto.kdCartesianVel = bo.kdCartesianVel;
196  // dto.kpNullspaceVel = bo.kpNullspaceVel;
197  // dto.kdNullspaceVel = bo.kdNullspaceVel;
198  // dto.desiredPose = bo.desiredPose;
199  // dto.desiredTwist = bo.desiredTwist;
200  // dto.desiredNullspaceJointAngles = bo.desiredNullspaceJointAngles;
201  // dto.torqueLimit = bo.torqueLimit;
202  // dto.velocityLimit = bo.velocityLimit;
203  // dto.qvelFilter = bo.qvelFilter;
204  // dto.safeDistanceToGoal = bo.safeDistanceToGoal;
205  // dto.ftConfig = ::armarx::toAron<ft::arondto::FTConfig, ft::FTSensor::FTConfig>(bo.ftConfig);
206  // }
207  //
208  // // admittance controller
209  // void
210  // fromAron(const arondto::TaskspaceAdmittanceControllerConfig& dto,
211  // TaskspaceAdmittanceController::Config& bo)
212  // {
213  // auto ftBO = ::armarx::fromAron<ft::FTSensor::FTConfig, ft::arondto::FTConfig>(dto.ftConfig);
214  // bo = TaskspaceAdmittanceController::Config{.kpImpedance = dto.kpImpedance,
215  // .kdImpedance = dto.kdImpedance,
216  // .kpAdmittance = dto.kpAdmittance,
217  // .kdAdmittance = dto.kdAdmittance,
218  // .kmAdmittance = dto.kmAdmittance,
219  // .kpNullspace = dto.kpNullspace,
220  // .kdNullspace = dto.kdNullspace,
221  // .desiredPose = dto.desiredPose,
222  // .desiredTwist = dto.desiredTwist,
223  // .desiredNullspaceJointAngles =
224  // dto.desiredNullspaceJointAngles,
225  // .torqueLimit = dto.torqueLimit,
226  // .qvelFilter = dto.qvelFilter,
227  // .ftConfig = ftBO};
228  // }
229  //
230  // void
231  // toAron(arondto::TaskspaceAdmittanceControllerConfig& dto,
232  // const TaskspaceAdmittanceController::Config& bo)
233  // {
234  // dto.kpImpedance = bo.kpImpedance;
235  // dto.kdImpedance = bo.kdImpedance;
236  // dto.kpAdmittance = bo.kpAdmittance;
237  // dto.kdAdmittance = bo.kdAdmittance;
238  // dto.kmAdmittance = bo.kmAdmittance;
239  // dto.kpNullspace = bo.kpNullspace;
240  // dto.kdNullspace = bo.kdNullspace;
241  // dto.desiredPose = bo.desiredPose;
242  // dto.desiredTwist = bo.desiredTwist;
243  // dto.desiredNullspaceJointAngles = bo.desiredNullspaceJointAngles;
244  // dto.torqueLimit = bo.torqueLimit;
245  // dto.qvelFilter = bo.qvelFilter;
246  // dto.ftConfig = ::armarx::toAron<ft::arondto::FTConfig, ft::FTSensor::FTConfig>(bo.ftConfig);
247  // }
248  //
249  // void
250  // fromAron(const arondto::TaskspaceAdmittanceControllerConfigDict& dto,
251  // TaskspaceAdmittanceController::ConfigDict& bo)
252  // {
253  // for (const auto& pair : dto.cfg)
254  // {
255  // bo.cfg.emplace(
256  // pair.first,
257  // ::armarx::fromAron<TaskspaceAdmittanceController::Config,
258  // arondto::TaskspaceAdmittanceControllerConfig>(pair.second));
259  // }
260  // }
261  //
262  // void
263  // toAron(arondto::TaskspaceAdmittanceControllerConfigDict& dto,
264  // const TaskspaceAdmittanceController::ConfigDict& bo)
265  // {
266  // for (const auto& pair : bo.cfg)
267  // {
268  // dto.cfg.emplace(pair.first,
269  // ::armarx::toAron<arondto::TaskspaceAdmittanceControllerConfig,
270  // TaskspaceAdmittanceController::Config>(pair.second));
271  // }
272  // }
273  //
274  // void
275  // fromAron(const arondto::KeypointControllerConfig& dto, KeypointsImpedanceController::Config& bo)
276  // {
277  // bo = KeypointsImpedanceController::Config{
278  // .nodeSetName = dto.nodeSetName,
279  // .kpImpedance = dto.kpImpedance,
280  // .kdImpedance = dto.kdImpedance,
281  // // .kpAdmittance = dto.kpAdmittance,
282  // .kdAdmittance = dto.kdAdmittance,
283  // .kmAdmittance = dto.kmAdmittance,
284  // .kpNullspace = dto.kpNullspace,
285  // .kdNullspace = dto.kdNullspace,
286  // // .currentForceTorque = dto.currentForceTorque,
287  // // .desiredPose = dto.desiredPose,
288  // // .desiredTwist = dto.desiredTwist,
289  // .desiredNullspaceJointAngles = dto.desiredNullspaceJointAngles,
290  // .torqueLimit = dto.torqueLimit,
291  // .qvelFilter = dto.qvelFilter,
292  // .numPoints = dto.numPoints,
293  // .keypointKp = dto.keypointKp,
294  // .keypointKd = dto.keypointKd,
295  // .fixedTranslation = dto.fixedTranslation,
296  // .densityForceScaling = dto.densityForceScaling,
297  // .keypointPositionFilter = dto.keypointPositionFilter,
298  // .keypointVelocityFilter = dto.keypointVelocityFilter,
299  // .isRigid = dto.isRigid};
300  // }
301  //
302  // void
303  // toAron(arondto::KeypointControllerConfig& dto, const KeypointsImpedanceController::Config& bo)
304  // {
305  // dto.nodeSetName = bo.nodeSetName;
306  // dto.kpImpedance = bo.kpImpedance;
307  // dto.kdImpedance = bo.kdImpedance;
308  // // dto .kpAdmittance = bo.kpAdmittance;
309  // dto.kdAdmittance = bo.kdAdmittance;
310  // dto.kmAdmittance = bo.kmAdmittance;
311  // dto.kpNullspace = bo.kpNullspace;
312  // dto.kdNullspace = bo.kdNullspace;
313  // // dto .currentForceTorque = bo.currentForceTorque;
314  // // dto .desiredPose = bo.desiredPose;
315  // // dto .desiredTwist = bo.desiredTwist;
316  // dto.desiredNullspaceJointAngles = bo.desiredNullspaceJointAngles;
317  // dto.torqueLimit = bo.torqueLimit;
318  // dto.qvelFilter = bo.qvelFilter;
319  // dto.numPoints = bo.numPoints;
320  // dto.keypointKp = bo.keypointKp;
321  // dto.keypointKd = bo.keypointKd;
322  // dto.fixedTranslation = bo.fixedTranslation;
323  // dto.densityForceScaling = bo.densityForceScaling;
324  // dto.keypointPositionFilter = bo.keypointPositionFilter;
325  // dto.keypointVelocityFilter = bo.keypointVelocityFilter;
326  // dto.isRigid = bo.isRigid;
327  // }
328 
329 } // namespace armarx::control::common::control_law
330 
332 {
333  // void
334  // fromAron(const arondto::ListViaPoint& dto, MP::ListViaPoint& bo)
335  // {
336  // bo = MP::ListViaPoint{.canonicalValue = dto.canonicalValue,
337  // .viaPointValue = dto.viaPointValue};
338  // }
339 
340  // void
341  // toAron(arondto::ListViaPoint& dto, const MP::ListViaPoint& bo)
342  // {
343  // dto.canonicalValue = bo.canonicalValue;
344  // dto.viaPointValue = bo.viaPointValue;
345  // }
346 
347  // void
348  // fromAron(const arondto::DictViaPoint& dto, MP::DictViaPoint& bo)
349  // {
350  // bo = MP::DictViaPoint{.canonicalValue = dto.canonicalValue,
351  // .viaPointValue = dto.viaPointValue};
352  // }
353 
354  // void
355  // fromAron(const arondto::MPConfig& dto, MP::MPConfig& bo)
356  // {
357  // std::vector<MP::ListViaPoint> viaPoints;
358  // std::transform(dto.viaPoints.begin(),
359  // dto.viaPoints.end(),
360  // std::back_inserter(viaPoints),
361  // [](const auto& vp) -> MP::ListViaPoint
362  // { return ::armarx::fromAron<MP::ListViaPoint, arondto::ListViaPoint>(vp); });
363  // bo = MP::MPConfig{.name = dto.name,
364  // .nodeSetName = dto.nodeSetName,
365  // .className = dto.className,
366  // .mpTypeString = dto.mpTypeString,
367  // .mpMode = dto.mpMode,
368  // .mpStyle = dto.mpStyle,
369  // .regressionModel = dto.regressionModel,
370  // .kernelSize = dto.kernelSize,
371  // .damping = dto.damping,
372  // .tau = dto.tau,
373  // .amplitude = dto.amplitude,
374  // .durationSec = dto.durationSec,
375  // .fileList = dto.fileList,
376  // .stopWithMP = dto.stopWithMP,
377  // .viaPoints = viaPoints,
378  // .enablePhaseStop = dto.enablePhaseStop, /// phase stop
379  // .maxValue = dto.maxValue,
380  // .slop = dto.slop,
381  // .goDist = dto.goDist,
382  // .backDist = dto.backDist,
383  // .psKpPos = dto.psKpPos,
384  // .psKdPos = dto.psKdPos,
385  // .psKpOri = dto.psKpOri,
386  // .psKdOri = dto.psKdOri,
387  // .psMM2Radian = dto.psMM2Radian};
388  // armarx::aron::fromAron<armarx::control::common::mp::arondto::MPTraj, MPTraj>(
389  // dto.trajectoryList, bo.trajectoryList);
390  // }
391 
392  // void
393  // toAron(arondto::MPConfig& dto, const MP::MPConfig& bo)
394  // {
395  // dto.name = bo.name;
396  // dto.nodeSetName = bo.nodeSetName;
397  // dto.className = bo.className;
398  // dto.mpTypeString = bo.mpTypeString;
399  // dto.mpMode = bo.mpMode;
400  // dto.mpStyle = bo.mpStyle;
401  // dto.regressionModel = bo.regressionModel;
402  // dto.kernelSize = bo.kernelSize;
403  // dto.damping = bo.damping;
404  // dto.tau = bo.tau;
405  // dto.amplitude = bo.amplitude;
406  // dto.durationSec = bo.durationSec;
407  // dto.fileList = bo.fileList;
408  // dto.stopWithMP = bo.stopWithMP;
409  // std::transform(bo.viaPoints.begin(),
410  // bo.viaPoints.end(),
411  // std::back_inserter(dto.viaPoints),
412  // [](const auto& vp) -> arondto::ListViaPoint
413  // { return ::armarx::toAron<arondto::ListViaPoint, MP::ListViaPoint>(vp); });
414  // dto.enablePhaseStop = bo.enablePhaseStop; /// phase stop
415  // dto.maxValue = bo.maxValue;
416  // dto.slop = bo.slop;
417  // dto.goDist = bo.goDist;
418  // dto.backDist = bo.backDist;
419  // dto.psKpPos = bo.psKpPos;
420  // dto.psKdPos = bo.psKdPos;
421  // dto.psKpOri = bo.psKpOri;
422  // dto.psKdOri = bo.psKdOri;
423  // dto.psMM2Radian = bo.psMM2Radian;
424  // armarx::aron::toAron<armarx::control::common::mp::arondto::MPTraj, MPTraj>(
425  // dto.trajectoryList, bo.trajectoryList);
426  // }
427 
428  // void
429  // fromAron(const arondto::MPListConfig& dto, MP::MPListConfig& bo)
430  // {
431  // std::transform(dto.mpList.begin(),
432  // dto.mpList.end(),
433  // std::back_inserter(bo.mpList),
434  // [](const auto& mp) -> MP::MPConfig
435  // { return ::armarx::fromAron<MP::MPConfig, arondto::MPConfig>(mp); });
436  // }
437 
438  // void
439  // toAron(arondto::MPListConfig& dto, const MP::MPListConfig& bo)
440  // {
441  // std::transform(bo.mpList.begin(),
442  // bo.mpList.end(),
443  // std::back_inserter(dto.mpList),
444  // [](const auto& _mp) -> arondto::MPConfig
445  // { return ::armarx::toAron<arondto::MPConfig, MP::MPConfig>(_mp); });
446  // }
447 
448  // // MPTraj
449  // void
450  // fromAron(const arondto::MPTraj& dto, MPTraj& bo)
451  // {
452  // bo = MPTraj{.time = dto.time, .traj = dto.traj};
453  // }
454 
455  // void
456  // toAron(arondto::MPTraj& dto, const MPTraj& bo)
457  // {
458  // dto.time = bo.time;
459  // dto.traj = bo.traj;
460  // }
461 
462  // void
463  // fromAron(const arondto::MPTrajs& dto, MPTrajs& bo)
464  // {
465  // std::transform(dto.data.begin(),
466  // dto.data.end(),
467  // std::back_inserter(bo),
468  // [](const auto& traj) -> MPTraj
469  // { return ::armarx::fromAron<MPTraj, arondto::MPTraj>(traj); });
470  // }
471 
472  // void
473  // toAron(arondto::MPTrajs& dto, const MPTrajs& bo)
474  // {
475  // std::transform(bo.begin(),
476  // bo.end(),
477  // std::back_inserter(dto),
478  // [](const auto& traj) -> arondto::MPTraj
479  // { return ::armarx::toAron<arondto::MPTraj, MPTraj>(traj); });
480  // }
481 
482  // void
483  // fromAron(const arondto::MultiMPTrajs& dto, MultiMPTrajs& bo)
484  // {
485  // for (const auto& pair : dto.data)
486  // {
487  // bo.emplace(pair.first, ::armarx::fromAron<MPTrajs, arondto::MPTrajs>(pair.second));
488  // }
489  // }
490 
491  // void
492  // toAron(arondto::MultiMPTrajs& dto, const MultiMPTrajs& bo)
493  // {
494  // for (const auto& pair : bo)
495  // {
496  // dto.data.emplace(pair.first, ::armarx::toAron<arondto::MPTrajs, MPTrajs>(pair.second));
497  // }
498  // }
499 } // namespace armarx::control::common::mp
armarx::control::common::ft
This file is part of ArmarX.
Definition: aron_conversions.cpp:29
armarx::control::common::mp
This file is part of ArmarX.
Definition: aron_conversions.cpp:331
aron_conversions.h
armarx::control::common::control_law
This file is part of ArmarX.
Definition: aron_conversions.cpp:68
eigen.h