blob: 758d2e772acf9f488a6b19bb90f04eaa70574e51 [file] [log] [blame]
Austin Schuh812d0d12021-11-04 20:16:48 -07001// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
Austin Schuh1e69f942020-11-14 15:06:14 -08004
5#include "frc/StateSpaceUtil.h"
6
7namespace frc {
8
James Kuszmaulb13e13f2023-11-22 20:44:04 -08009Eigen::Vector3d PoseTo3dVector(const Pose2d& pose) {
10 return Eigen::Vector3d{pose.Translation().X().value(),
11 pose.Translation().Y().value(),
12 pose.Rotation().Radians().value()};
Austin Schuh812d0d12021-11-04 20:16:48 -070013}
14
James Kuszmaulb13e13f2023-11-22 20:44:04 -080015Eigen::Vector4d PoseTo4dVector(const Pose2d& pose) {
16 return Eigen::Vector4d{pose.Translation().X().value(),
17 pose.Translation().Y().value(), pose.Rotation().Cos(),
18 pose.Rotation().Sin()};
Austin Schuh812d0d12021-11-04 20:16:48 -070019}
20
Austin Schuh1e69f942020-11-14 15:06:14 -080021template <>
James Kuszmaulcf324122023-01-14 14:07:17 -080022bool IsStabilizable<1, 1>(const Matrixd<1, 1>& A, const Matrixd<1, 1>& B) {
Austin Schuh1e69f942020-11-14 15:06:14 -080023 return detail::IsStabilizableImpl<1, 1>(A, B);
24}
25
26template <>
James Kuszmaulcf324122023-01-14 14:07:17 -080027bool IsStabilizable<2, 1>(const Matrixd<2, 2>& A, const Matrixd<2, 1>& B) {
Austin Schuh1e69f942020-11-14 15:06:14 -080028 return detail::IsStabilizableImpl<2, 1>(A, B);
29}
30
James Kuszmaulb13e13f2023-11-22 20:44:04 -080031template <>
32bool IsStabilizable<Eigen::Dynamic, Eigen::Dynamic>(const Eigen::MatrixXd& A,
33 const Eigen::MatrixXd& B) {
34 return detail::IsStabilizableImpl<Eigen::Dynamic, Eigen::Dynamic>(A, B);
35}
36
37Eigen::Vector3d PoseToVector(const Pose2d& pose) {
38 return Eigen::Vector3d{pose.X().value(), pose.Y().value(),
39 pose.Rotation().Radians().value()};
Austin Schuh1e69f942020-11-14 15:06:14 -080040}
41
42} // namespace frc