59 const auto infinitemized = WrapAngle(current, offset, target);
62 const auto reversibled = OptimizeSteeringAndWheelRotation(current, infinitemized);
65 optimized = reversibled;
75 return (*
this)(optimized, target);
87 const auto dTheta = target.
theta + offsetRef - current.
theta;
98 return { target.
r, target.
theta + offsetRef };
105 static Udon::Polar OptimizeSteeringAndWheelRotation(
const Polar& current,
const Polar& target)
108 const auto dTheta = target.theta - current.theta;
113 return { target.r * -1, target.theta -
Udon::Pi };
117 return { target.r * -1, target.theta +
Udon::Pi };
128 template <
size_t WheelCount = 4>
133 std::array<SteerModuleOptimizer, WheelCount> modules;
143 for (
auto&& module : modules)
154 const std::array<Udon::Polar, WheelCount>& current,
155 const std::array<Udon::Polar, WheelCount>& target) -> std::array<Udon::Polar, WheelCount>
157 std::array<Udon::Polar, WheelCount> optimized;
158 for (
size_t i = 0; i < WheelCount; ++i)
160 optimized.at(i) = modules.at(i)(current.at(i), target.at(i));
168 auto operator()(
const std::array<Udon::Polar, WheelCount>& target) -> std::array<Udon::Polar, WheelCount>
170 std::array<Udon::Polar, WheelCount> optimized;
171 for (
size_t i = 0; i < WheelCount; ++i)
173 optimized.at(i) = modules.at(i)(target.at(i));
void clear()
最適化値を消去する
Definition SteerOptimizer.hpp:39
SteerModuleOptimizer()
コンストラクタ
Definition SteerOptimizer.hpp:31
Udon::Polar operator()(const Udon::Polar ¤t, const Udon::Polar &target)
最適化を行う(実測値と比較する)
Definition SteerOptimizer.hpp:49
Udon::Polar operator()(const Udon::Polar &target)
最適化を行う(前回の制御値と比較する)
Definition SteerOptimizer.hpp:73
SteerOptimizer()=default
コンストラクタ
auto operator()(const std::array< Udon::Polar, WheelCount > ¤t, const std::array< Udon::Polar, WheelCount > &target) -> std::array< Udon::Polar, WheelCount >
最適化を行う(実測値と比較する)
Definition SteerOptimizer.hpp:153
void clear()
最適化値を消去する
Definition SteerOptimizer.hpp:141
auto operator()(const std::array< Udon::Polar, WheelCount > &target) -> std::array< Udon::Polar, WheelCount >
最適化を行う(前回の制御値と比較する)
Definition SteerOptimizer.hpp:168
constexpr double Pi
π
Definition Math.hpp:27
極座標系
Definition Polar.hpp:21
ValueType theta
角度
Definition Polar.hpp:29
ValueType r
中心からの距離
Definition Polar.hpp:26