$darkmode
osi_utils.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2020 Robert Bosch GmbH
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  * SPDX-License-Identifier: Apache-2.0
17  */
23 #pragma once
24 
25 #include <string>
26 
27 #include <Eigen/Geometry> // for Isometry3d, Vector3d
28 
29 #include <cloe/core.hpp> // for Logger, get
30 #include <cloe/simulator.hpp> // for ModelError
31 
32 #include "osi_common.pb.h" // for Dimension3d, Vector3d, ..
33 #include "osi_sensordata.pb.h" // for SensorData
34 
35 #undef osi_require
36 
37 #ifdef NDEBUG
38 #define osi_require(name, test_expr) ((void)0)
39 #else
40 #define osi_require(name, test_expr) \
41  ((test_expr) ? (void)0 : throw cloe::ModelError("OSI message: {} required!", name))
42 #endif
43 
44 namespace osii {
45 
46 inline cloe::Logger osi_logger() { return cloe::logger::get("vtd/osi"); }
47 
51 void osi_to_file(const osi3::SensorData& data, const std::string& fname);
52 
56 Eigen::Vector3d osi_vector3d_xyz_to_vector3d(const osi3::Vector3d osi_coord);
57 
61 void vector3d_to_osi_vector3d_xyz(const Eigen::Vector3d& vec, osi3::Vector3d* osi_vec);
62 
66 Eigen::Vector3d osi_dimension3d_lwh_to_vector3d(const osi3::Dimension3d osi_dim);
67 
71 Eigen::Vector3d osi_orientation3d_rpy_to_vector3d(const osi3::Orientation3d osi_ori);
72 
77  const osi3::MovingObject::VehicleAttributes& osi_va);
78 
82 template <typename T>
83 Eigen::Isometry3d osi_position_orientation_to_pose(const T& osi_T);
84 
88 void pose_to_osi_position_orientation(const Eigen::Isometry3d&, osi3::BaseMoving& base);
89 
96 void osi_transform_base_moving(const osi3::BaseMoving& base_ref, osi3::BaseMoving& base);
97 
98 } // namespace osii
Eigen::Vector3d osi_vehicle_attrib_rear_offset_to_vector3d(const osi3::MovingObject::VehicleAttributes &osi_va)
Definition: osi_utils.cpp:77
void osi_to_file(const osi3::SensorData &data, const std::string &fname)
Definition: osi_utils.cpp:45
void vector3d_to_osi_vector3d_xyz(const Eigen::Vector3d &vec, osi3::Vector3d *osi_vec)
Definition: osi_utils.cpp:57
void pose_to_osi_position_orientation(const Eigen::Isometry3d &pose_in, osi3::BaseMoving &base)
Definition: osi_utils.cpp:99
Eigen::Vector3d osi_vector3d_xyz_to_vector3d(const osi3::Vector3d osi_coord)
Definition: osi_utils.cpp:53
void osi_transform_base_moving(const osi3::BaseMoving &base_ref, osi3::BaseMoving &base)
Definition: osi_utils.cpp:112
Eigen::Isometry3d osi_position_orientation_to_pose(const T &osi_T)
Definition: osi_utils.cpp:84
Eigen::Vector3d osi_orientation3d_rpy_to_vector3d(const osi3::Orientation3d osi_ori)
Definition: osi_utils.cpp:67
Eigen::Vector3d osi_dimension3d_lwh_to_vector3d(const osi3::Dimension3d osi_dim)
Definition: osi_utils.cpp:63