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 
26 {
27  void
28  fromAron(const arondto::FTConfig &dto, FTSensor::FTConfig &bo)
29  {
31  .sensorName = dto.sensorName,
32  .ftFilter = dto.ftFilter,
33  .deadZoneForce = dto.deadZoneForce,
34  .deadZoneTorque = dto.deadZoneTorque,
35  .timeLimit = dto.timeLimit,
36  .enableTCPGravityCompensation = dto.enableTCPGravityCompensation,
37  .reCalibrate = dto.reCalibrate,
38  .forceBaseline = dto.forceBaseline,
39  .torqueBaseline = dto.torqueBaseline
40  };
41  }
42 
43  FTSensor::FTConfig
44  fromAron(const arondto::FTConfig &dto)
45  {
47  .sensorName = dto.sensorName,
48  .ftFilter = dto.ftFilter,
49  .deadZoneForce = dto.deadZoneForce,
50  .deadZoneTorque = dto.deadZoneTorque,
51  .timeLimit = dto.timeLimit,
52  .enableTCPGravityCompensation = dto.enableTCPGravityCompensation,
53  .reCalibrate = dto.reCalibrate,
54  .forceBaseline = dto.forceBaseline,
55  .torqueBaseline = dto.torqueBaseline
56  };
57  return ftConfig;
58  }
59 } /// namespace armarx::control::common::ft
60 
61 
63 {
64  void
65  fromAron(const arondto::TaskspaceImpedanceControllerConfig& dto,
67  {
69  .kpImpedance = dto.kpImpedance,
70  .kdImpedance = dto.kdImpedance,
71  .kpNullspace = dto.kpNullspace,
72  .kdNullspace = dto.kdNullspace,
73  .desiredPose = dto.desiredPose,
74  .desiredTwist = dto.desiredTwist,
75  .desiredNullspaceJointAngles = dto.desiredNullspaceJointAngles,
76  .torqueLimit = dto.torqueLimit,
77  .qvelFilter = dto.qvelFilter
78  };
79  }
80 
81  void
82  fromAron(const arondto::TaskspaceAdmittanceControllerConfig &dto,
84  {
85  auto ftBO = armarx::control::common::ft::fromAron(dto.ftConfig);
87  .kpImpedance = dto.kpImpedance,
88  .kdImpedance = dto.kdImpedance,
89  .kpAdmittance = dto.kpAdmittance,
90  .kdAdmittance = dto.kdAdmittance,
91  .kmAdmittance = dto.kmAdmittance,
92  .kpNullspace = dto.kpNullspace,
93  .kdNullspace = dto.kdNullspace,
94  .desiredPose = dto.desiredPose,
95  .desiredTwist = dto.desiredTwist,
96  .desiredNullspaceJointAngles = dto.desiredNullspaceJointAngles,
97  .torqueLimit = dto.torqueLimit,
98  .qvelFilter = dto.qvelFilter,
99  .ftConfig = ftBO
100  };
101  }
102 
103  void
104  fromAron(const arondto::KeypointControllerConfig& dto,
106  {
108  .kpImpedance = dto.kpImpedance,
109  .kdImpedance = dto.kdImpedance,
110 // .kpAdmittance = dto.kpAdmittance,
111  .kdAdmittance = dto.kdAdmittance,
112  .kmAdmittance = dto.kmAdmittance,
113  .kpNullspace = dto.kpNullspace,
114  .kdNullspace = dto.kdNullspace,
115 // .currentForceTorque = dto.currentForceTorque,
116 // .desiredPose = dto.desiredPose,
117 // .desiredTwist = dto.desiredTwist,
118  .desiredNullspaceJointAngles = dto.desiredNullspaceJointAngles,
119  .torqueLimit = dto.torqueLimit,
120  .qvelFilter = dto.qvelFilter,
121  .numPoints = dto.numPoints,
122  .keypointKp = dto.keypointKp,
123  .keypointKd = dto.keypointKd,
124  .fixedTranslation = dto.fixedTranslation,
125  .densityForceScaling = dto.densityForceScaling,
126  .keypointPositionFilter = dto.keypointPositionFilter,
127  .keypointVelocityFilter = dto.keypointVelocityFilter,
128  .isRigid = dto.isRigid
129  };
130  }
131 
132 } /// namespace armarx::control::common::control_law
133 
134 
136 {
137 
139  fromAron(const arondto::ListViaPoint& dto)
140  {
141  return {dto.canonicalValue, dto.viaPointValue};
142  }
143 
144  MP::DictViaPoint
145  fromAron(const arondto::DictViaPoint& dto)
146  {
147  return {dto.canonicalValue, dto.viaPointValue};
148  }
149 
150  void
151  fromAron(const arondto::ListViaPoint &dto, MP::ListViaPoint &bo)
152  {
154  .canonicalValue = dto.canonicalValue,
155  .viaPointValue = dto.viaPointValue
156  };
157  }
158 
159  void
160  fromAron(const arondto::DictViaPoint &dto, MP::DictViaPoint &bo)
161  {
163  .canonicalValue = dto.canonicalValue,
164  .viaPointValue = dto.viaPointValue
165  };
166  }
167 
168  void
169  fromAron(const arondto::MPConfig &dto, MP::MPConfig &bo)
170  {
171  std::vector<MP::ListViaPoint> viaPoints;
172  std::transform(dto.viaPoints.begin(), dto.viaPoints.end(), std::back_inserter(viaPoints),
173  [](const auto& vp) -> MP::ListViaPoint
174  {
175  return fromAron(vp);
176  });
177  bo = MP::MPConfig{
178  .name = dto.name,
179  .className = dto.className,
180  .mpTypeString = dto.mpTypeString,
181  .mpMode = dto.mpMode,
182  .mpStyle = dto.mpStyle,
183  .regressionModel = dto.regressionModel,
184  .kernelSize = dto.kernelSize,
185  .damping = dto.damping,
186  .tau = dto.tau,
187  .amplitude = dto.amplitude,
188  .durationSec = dto.durationSec,
189  .fileList = dto.fileList,
190  .stopWithMP = dto.stopWithMP,
191  .viaPoints = viaPoints,
192  .enablePhaseStop = dto.enablePhaseStop, /// phase stop
193  .maxValue = dto.maxValue,
194  .slop = dto.slop,
195  .goDist = dto.goDist,
196  .backDist = dto.backDist,
197  .psKpPos = dto.psKpPos,
198  .psKdPos = dto.psKdPos,
199  .psKpOri = dto.psKpOri,
200  .psKdOri = dto.psKdOri,
201  .psMM2Radian = dto.psMM2Radian
202  };
203  }
204 
205  MP::MPConfig
206  fromAron(const arondto::MPConfig &dto)
207  {
208  std::vector<MP::ListViaPoint> viaPoints;
209  std::transform(dto.viaPoints.begin(), dto.viaPoints.end(), std::back_inserter(viaPoints),
210  [](const auto& vp) -> MP::ListViaPoint
211  {
212  return fromAron(vp);
213  });
214  MP::MPConfig mpConfig = MP::MPConfig{
215  .name = dto.name,
216  .className = dto.className,
217  .mpTypeString = dto.mpTypeString,
218  .mpMode = dto.mpMode,
219  .mpStyle = dto.mpStyle,
220  .regressionModel = dto.regressionModel,
221  .kernelSize = dto.kernelSize,
222  .damping = dto.damping,
223  .tau = dto.tau,
224  .amplitude = dto.amplitude,
225  .durationSec = dto.durationSec,
226  .fileList = dto.fileList,
227  .stopWithMP = dto.stopWithMP,
228  .viaPoints = viaPoints,
229  .enablePhaseStop = dto.enablePhaseStop, /// phase stop
230  .maxValue = dto.maxValue,
231  .slop = dto.slop,
232  .goDist = dto.goDist,
233  .backDist = dto.backDist,
234  .psKpPos = dto.psKpPos,
235  .psKdPos = dto.psKdPos,
236  .psKpOri = dto.psKpOri,
237  .psKdOri = dto.psKdOri,
238  .psMM2Radian = dto.psMM2Radian
239  };
240  return mpConfig;
241  }
242 
243  void
244  fromAron(const arondto::MPListConfig &dto, MP::MPListConfig &bo)
245  {
246  std::transform(dto.mpList.begin(), dto.mpList.end(), std::back_inserter(bo.mpList),
247  [](const auto& mp) -> MP::MPConfig
248  {
249  return fromAron(mp);
250  });
251  }
252 } /// namespace armarx::control::common::mp
253 
254 
255 
armarx::control::common::control_law::KeypointsImpedanceController::Config
you can set the following values from outside of the rt controller via Ice interfaces
Definition: KeypointsImpedanceController.h:41
armarx::control::common::ft::FTSensor::FTConfig::sensorName
std::string sensorName
Definition: FTSensor.h:49
armarx::control::common::mp::MP::MPConfig::name
std::string name
Definition: MP.h:65
armarx::control::common::mp::fromAron
MP::ListViaPoint fromAron(const arondto::ListViaPoint &dto)
Definition: aron_conversions.cpp:139
armarx::control::common::ft
This file is part of ArmarX.
Definition: aron_conversions.cpp:25
armarx::control::common::mp::MP::ListViaPoint
Definition: MP.h:51
aron_conversions.h
armarx::control::common::mp
namespace armarx::control::common::control_law
Definition: aron_conversions.cpp:135
armarx::control::common::mp::MP::DictViaPoint::canonicalValue
double canonicalValue
Definition: MP.h:59
armarx::control::common::mp::MP::MPConfig
Definition: MP.h:63
armarx::control::common::control_law::fromAron
void fromAron(const arondto::TaskspaceImpedanceControllerConfig &dto, TaskspaceImpedanceController::Config &bo)
TaskspaceImpedanceController dto: data transfer object? bo: business object? what is the full name?
Definition: aron_conversions.cpp:65
armarx::control::common::control_law
namespace armarx::control::common::ft
Definition: aron_conversions.cpp:62
armarx::control::common::mp::MP::DictViaPoint
Definition: MP.h:57
armarx::control::common::control_law::TaskspaceImpedanceController::Config::kpImpedance
Eigen::Vector6f kpImpedance
Definition: TaskspaceImpedanceController.h:44
armarx::control::common::control_law::TaskspaceAdmittanceController::Config
you can set the following values from outside of the rt controller via Ice interfaces
Definition: TaskspaceAdmittanceController.h:43
armarx::control::common::control_law::TaskspaceAdmittanceController::Config::kpImpedance
Eigen::Vector6f kpImpedance
Definition: TaskspaceAdmittanceController.h:45
armarx::control::common::ft::fromAron
void fromAron(const arondto::FTConfig &dto, FTSensor::FTConfig &bo)
Definition: aron_conversions.cpp:28
armarx::control::common::control_law::KeypointsImpedanceController::Config::kpImpedance
Eigen::Vector6f kpImpedance
Definition: KeypointsImpedanceController.h:43
armarx::control::common::mp::MP::MPListConfig
Definition: MP.h:102
armarx::control::common::mp::MP::ListViaPoint::canonicalValue
double canonicalValue
Definition: MP.h:53
armarx::transform
auto transform(const Container< InputT, Alloc > &in, OutputT(*func)(InputT const &)) -> Container< OutputT, typename std::allocator_traits< Alloc >::template rebind_alloc< OutputT > >
Convenience function (with less typing) to transform a container of type InputT into the same contain...
Definition: algorithm.h:315
armarx::aron::bo
const std::optional< BoT > & bo
Definition: aron_conversions.h:166
armarx::control::common::control_law::TaskspaceImpedanceController::Config
you can set the following values from outside of the rt controller via Ice interfaces
Definition: TaskspaceImpedanceController.h:42
armarx::control::common::ft::FTSensor::FTConfig
Definition: FTSensor.h:47