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 <stdexcept>
25
26#include <range/v3/range/conversion.hpp>
27#include <range/v3/view/transform.hpp>
28
30
31#include <armarx/navigation/core/aron/BoundingBox.aron.generated.h>
34#include <armarx/navigation/safety_guard/aron/LaserBasedProximityParams.aron.generated.h>
35
37{
38 void
39 fromAron(const arondto::ProximityFieldParams& dto, ProximityFieldParams& bo)
40 {
41 aron::fromAron(dto.reduceVelocity, bo.reduceVelocity);
42
43 aron::fromAron(dto.minimumDistance, bo.safetyDistance);
44 aron::fromAron(dto.maximumDistance, bo.influenceDistance);
45 aron::fromAron(dto.k, bo.k);
46 aron::fromAron(dto.lambda, bo.lambda);
47 }
48
49 void
50 toAron(arondto::ProximityFieldParams& dto, const ProximityFieldParams& bo)
51 {
52 aron::toAron(dto.reduceVelocity, bo.reduceVelocity);
53
54 aron::toAron(dto.minimumDistance, bo.safetyDistance);
55 aron::toAron(dto.maximumDistance, bo.influenceDistance);
56 aron::toAron(dto.k, bo.k);
57 aron::toAron(dto.lambda, bo.lambda);
58 }
59
60 void
61 fromAron(const arondto::LaserBasedProximityParams& dto, LaserBasedProximityParams& bo)
62 {
63 aron::fromAron(dto.enableHumans, bo.enableHumans);
64 aron::fromAron(dto.enableLaserScanner, bo.enableLaserScanners);
65
66 fromAron(dto.humanProximityField, bo.humanProximityField);
67 fromAron(dto.laserScannerProximityField, bo.laserScannerProximityField);
68
69 bo.ignoredRegions = dto.ignoredRegions |
70 ranges::views::transform(
71 [](const core::arondto::BoundingBox2D& bbDto) -> Eigen::AlignedBox2f
72 {
73 Eigen::AlignedBox2f bbBo;
74 core::fromAron(bbDto, bbBo);
75 return bbBo;
76 }) |
77 ranges::to_vector;
78
79 aron::fromAron(dto.ignoreAttachedObjects, bo.ignoreAttachedObjects);
80
81 aron::fromAron(dto.enableLaserScannerFiltering, bo.enableLaserScannerFiltering);
82 aron::fromAron(dto.laserScannerFilteringThreshold, bo.laserScannerFilteringThreshold);
83 aron::fromAron(dto.laserScannerMaxFilteringDistance, bo.laserScannerMaxFilteringDistance);
84
86 fromAron(dto.mode, bo.humanProximityField.mode);
87 }
88
89 void
90 toAron(arondto::LaserBasedProximityParams& dto, const LaserBasedProximityParams& bo)
91 {
92 aron::toAron(dto.enableHumans, bo.enableHumans);
93 aron::toAron(dto.enableLaserScanner, bo.enableLaserScanners);
94
95 toAron(dto.humanProximityField, bo.humanProximityField);
96 toAron(dto.laserScannerProximityField, bo.laserScannerProximityField);
97
98 dto.ignoredRegions = bo.ignoredRegions |
99 ranges::views::transform(
100 [](const Eigen::AlignedBox2f& bbBo) -> core::arondto::BoundingBox2D
101 {
102 core::arondto::BoundingBox2D bbDto;
103 core::toAron(bbDto, bbBo);
104 return bbDto;
105 }) |
106 ranges::to_vector;
107
108 aron::toAron(dto.ignoreAttachedObjects, bo.ignoreAttachedObjects);
109
110 aron::toAron(dto.enableLaserScannerFiltering, bo.enableLaserScannerFiltering);
111 aron::toAron(dto.laserScannerFilteringThreshold, bo.laserScannerFilteringThreshold);
112 aron::toAron(dto.laserScannerMaxFilteringDistance, bo.laserScannerMaxFilteringDistance);
113
115 toAron(dto.mode, bo.humanProximityField.mode);
116 }
117
118 void
119 fromAron(const arondto::LaserBasedProximityMode& dto, ProximityFieldParams::Mode& bo)
120 {
121 switch (dto.value)
122 {
123 case arondto::LaserBasedProximityMode::DISABLED:
125 break;
126 case arondto::LaserBasedProximityMode::DIRECTION_DEPENDENT:
128 break;
129 case arondto::LaserBasedProximityMode::DIRECTION_INDEPENDENT:
131 break;
132 default:
133 throw std::runtime_error("Invalid LaserBasedProximityMode value");
134 }
135 }
136
137 void
138 toAron(arondto::LaserBasedProximityMode& dto, const ProximityFieldParams::Mode& bo)
139 {
140 switch (bo)
141 {
143 dto.value = arondto::LaserBasedProximityMode::DISABLED;
144 break;
146 dto.value = arondto::LaserBasedProximityMode::DIRECTION_DEPENDENT;
147 break;
149 dto.value = arondto::LaserBasedProximityMode::DIRECTION_INDEPENDENT;
150 break;
151 default:
152 throw std::runtime_error("Invalid ProximityFieldParams::Mode value");
153 }
154 }
155} // namespace armarx::navigation::safety_guard
void fromAron(const T &dto, T &bo)
void toAron(T &dto, const T &bo)
Framework for converting ARON DTOs (Data Transfer Objects) to C++ BOs (Business Objects) and back.
void toAron(arondto::GlobalTrajectoryPoint &dto, const GlobalTrajectoryPoint &bo)
void fromAron(const arondto::GlobalTrajectoryPoint &dto, GlobalTrajectoryPoint &bo)
This file is part of ArmarX.
Definition fwd.h:55
void fromAron(const arondto::ProximityFieldParams &dto, ProximityFieldParams &bo)
void toAron(arondto::ProximityFieldParams &dto, const ProximityFieldParams &bo)