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