Skip to content

Commit 4589166

Browse files
Remove implementation redirection from steering odometry header and add to source file for ABI
1 parent 69d8017 commit 4589166

File tree

3 files changed

+135
-61
lines changed

3 files changed

+135
-61
lines changed

steering_controllers_library/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ add_library(
4040
SHARED
4141
src/steering_controllers_library.cpp
4242
src/steering_kinematics.cpp
43+
src/steering_odometry.cpp
4344
)
4445
target_compile_features(steering_controllers_library PUBLIC cxx_std_17)
4546
target_include_directories(steering_controllers_library PUBLIC

steering_controllers_library/include/steering_controllers_library/steering_odometry.hpp

Lines changed: 21 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -60,101 +60,61 @@ inline bool is_close_to_zero(double val) { return steering_kinematics::is_close_
6060
class [[deprecated("Use steering_kinematics::SteeringKinematics instead")]] SteeringOdometry
6161
{
6262
public:
63-
explicit SteeringOdometry(size_t velocity_rolling_window_size = 10)
64-
: sk_impl_(velocity_rolling_window_size)
65-
{
66-
}
63+
explicit SteeringOdometry(size_t velocity_rolling_window_size = 10);
6764

68-
void init(const rclcpp::Time & time) { sk_impl_.init(time); }
65+
void init(const rclcpp::Time & time);
6966

7067
bool update_from_position(
71-
const double traction_wheel_pos, const double steer_pos, const double dt)
72-
{
73-
sk_impl_.update_from_position(traction_wheel_pos, steer_pos, dt);
74-
}
68+
const double traction_wheel_pos, const double steer_pos, const double dt);
7569

7670
bool update_from_position(
7771
const double right_traction_wheel_pos, const double left_traction_wheel_pos,
78-
const double steer_pos, const double dt)
79-
{
80-
sk_impl_.update_from_position(right_traction_wheel_pos, left_traction_wheel_pos, steer_pos, dt);
81-
}
72+
const double steer_pos, const double dt);
8273

8374
bool update_from_position(
8475
const double right_traction_wheel_pos, const double left_traction_wheel_pos,
85-
const double right_steer_pos, const double left_steer_pos, const double dt)
86-
{
87-
sk_impl_.update_from_position(
88-
right_traction_wheel_pos, left_traction_wheel_pos, right_steer_pos, left_steer_pos, dt);
89-
}
76+
const double right_steer_pos, const double left_steer_pos, const double dt);
9077

9178
bool update_from_velocity(
92-
const double traction_wheel_vel, const double steer_pos, const double dt)
93-
{
94-
sk_impl_.update_from_velocity(traction_wheel_vel, steer_pos, dt);
95-
}
79+
const double traction_wheel_vel, const double steer_pos, const double dt);
9680

9781
bool update_from_velocity(
9882
const double right_traction_wheel_vel, const double left_traction_wheel_vel,
99-
const double steer_pos, const double dt)
100-
{
101-
sk_impl_.update_from_velocity(right_traction_wheel_vel, left_traction_wheel_vel, steer_pos, dt);
102-
}
83+
const double steer_pos, const double dt);
10384

10485
bool update_from_velocity(
10586
const double right_traction_wheel_vel, const double left_traction_wheel_vel,
106-
const double right_steer_pos, const double left_steer_pos, const double dt)
107-
{
108-
sk_impl_.update_from_velocity(
109-
right_traction_wheel_vel, left_traction_wheel_vel, right_steer_pos, left_steer_pos, dt);
110-
}
87+
const double right_steer_pos, const double left_steer_pos, const double dt);
11188

112-
void update_open_loop(const double v_bx, const double omega_bz, const double dt)
113-
{
114-
sk_impl_.update_open_loop(v_bx, omega_bz, dt);
115-
}
89+
void update_open_loop(const double v_bx, const double omega_bz, const double dt);
11690

117-
void set_odometry_type(const unsigned int type) { sk_impl_.set_odometry_type(type); }
91+
void set_odometry_type(const unsigned int type);
11892

119-
unsigned int get_odometry_type() const { sk_impl_.get_odometry_type(); }
93+
unsigned int get_odometry_type() const;
94+
double get_heading() const;
12095

121-
double get_heading() const { sk_impl_.get_heading(); }
96+
double get_x() const;
12297

123-
double get_x() const { sk_impl_.get_x(); }
98+
double get_y() const;
12499

125-
double get_y() const { sk_impl_.get_y(); }
100+
double get_linear() const;
126101

127-
double get_linear() const { sk_impl_.get_linear(); }
128-
129-
double get_angular() const { sk_impl_.get_angular(); }
102+
double get_angular() const;
130103

131104
void set_wheel_params(
132-
const double wheel_radius, const double wheel_base = 0.0, const double wheel_track = 0.0)
133-
{
134-
sk_impl_.set_wheel_params(wheel_radius, wheel_base, wheel_track);
135-
}
105+
const double wheel_radius, const double wheel_base, const double wheel_track);
136106

137107
void set_wheel_params(
138108
const double wheel_radius, const double wheel_base, const double wheel_track_steering,
139-
const double wheel_track_traction)
140-
{
141-
sk_impl_.set_wheel_params(wheel_radius, wheel_track_steering, wheel_track_traction);
142-
}
109+
const double wheel_track_traction);
143110

144-
void set_velocity_rolling_window_size(const size_t velocity_rolling_window_size)
145-
{
146-
sk_impl_.set_velocity_rolling_window_size(velocity_rolling_window_size);
147-
}
111+
void set_velocity_rolling_window_size(const size_t velocity_rolling_window_size);
148112

149113
std::tuple<std::vector<double>, std::vector<double>> get_commands(
150114
double v_bx, double omega_bz, bool open_loop = true,
151-
bool reduce_wheel_speed_until_steering_reached = false)
152-
{
153-
return sk_impl_.get_commands(
154-
v_bx, omega_bz, open_loop, reduce_wheel_speed_until_steering_reached);
155-
}
115+
bool reduce_wheel_speed_until_steering_reached = false);
156116

157-
void reset_odometry() { sk_impl_.reset_odometry(); }
117+
void reset_odometry();
158118

159119
private:
160120
steering_kinematics::SteeringKinematics sk_impl_;
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// Copyright (c) 2023, Stogl Robotics Consulting UG (haftungsbeschränkt)
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
/*
16+
* Author: dr. sc. Tomislav Petkovic
17+
* Author: Dr. Ing. Denis Stogl
18+
*/
19+
20+
#define _USE_MATH_DEFINES
21+
22+
#include "steering_controllers_library/steering_odometry.hpp"
23+
24+
namespace steering_odometry
25+
{
26+
SteeringOdometry::SteeringOdometry(size_t velocity_rolling_window_size)
27+
: sk_impl_(velocity_rolling_window_size)
28+
{
29+
}
30+
31+
void SteeringOdometry::init(const rclcpp::Time & time) { sk_impl_.init(time); }
32+
33+
bool SteeringOdometry::update_from_position(
34+
const double traction_wheel_pos, const double steer_pos, const double dt)
35+
{
36+
return sk_impl_.update_from_position(traction_wheel_pos, steer_pos, dt);
37+
}
38+
39+
bool SteeringOdometry::update_from_position(
40+
const double traction_right_wheel_pos, const double traction_left_wheel_pos,
41+
const double steer_pos, const double dt)
42+
{
43+
return sk_impl_.update_from_position(
44+
traction_right_wheel_pos, traction_left_wheel_pos, steer_pos, dt);
45+
}
46+
47+
bool SteeringOdometry::update_from_position(
48+
const double traction_right_wheel_pos, const double traction_left_wheel_pos,
49+
const double right_steer_pos, const double left_steer_pos, const double dt)
50+
{
51+
return sk_impl_.update_from_position(
52+
traction_right_wheel_pos, traction_left_wheel_pos, right_steer_pos, left_steer_pos, dt);
53+
}
54+
55+
bool SteeringOdometry::update_from_velocity(
56+
const double traction_wheel_vel, const double steer_pos, const double dt)
57+
{
58+
return sk_impl_.update_from_velocity(traction_wheel_vel, steer_pos, dt);
59+
}
60+
61+
bool SteeringOdometry::update_from_velocity(
62+
const double right_traction_wheel_vel, const double left_traction_wheel_vel,
63+
const double steer_pos, const double dt)
64+
{
65+
return sk_impl_.update_from_velocity(
66+
right_traction_wheel_vel, left_traction_wheel_vel, steer_pos, dt);
67+
}
68+
69+
bool SteeringOdometry::update_from_velocity(
70+
const double right_traction_wheel_vel, const double left_traction_wheel_vel,
71+
const double right_steer_pos, const double left_steer_pos, const double dt)
72+
{
73+
return sk_impl_.update_from_velocity(
74+
right_traction_wheel_vel, left_traction_wheel_vel, right_steer_pos, left_steer_pos, dt);
75+
}
76+
77+
void SteeringOdometry::update_open_loop(const double v_bx, const double omega_bz, const double dt)
78+
{
79+
sk_impl_.update_open_loop(v_bx, omega_bz, dt);
80+
}
81+
82+
void SteeringOdometry::set_wheel_params(double wheel_radius, double wheel_base, double wheel_track)
83+
{
84+
sk_impl_.set_wheel_params(wheel_radius, wheel_base, wheel_track);
85+
}
86+
87+
void SteeringOdometry::set_wheel_params(
88+
double wheel_radius, double wheel_base, double wheel_track_steering, double wheel_track_traction)
89+
{
90+
sk_impl_.set_wheel_params(wheel_radius, wheel_base, wheel_track_steering, wheel_track_traction);
91+
}
92+
93+
void SteeringOdometry::set_velocity_rolling_window_size(size_t velocity_rolling_window_size)
94+
{
95+
sk_impl_.set_velocity_rolling_window_size(velocity_rolling_window_size);
96+
}
97+
98+
void SteeringOdometry::set_odometry_type(const unsigned int type)
99+
{
100+
sk_impl_.set_odometry_type(type);
101+
}
102+
103+
std::tuple<std::vector<double>, std::vector<double>> SteeringOdometry::get_commands(
104+
const double v_bx, const double omega_bz, const bool open_loop,
105+
const bool reduce_wheel_speed_until_steering_reached)
106+
{
107+
return sk_impl_.get_commands(
108+
v_bx, omega_bz, open_loop, reduce_wheel_speed_until_steering_reached);
109+
}
110+
111+
void SteeringOdometry::reset_odometry() { sk_impl_.reset_odometry(); }
112+
113+
} // namespace steering_odometry

0 commit comments

Comments
 (0)