blob: 5dcf1a1798a208b2602d2a82a6a51cd4006cce18 [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
Maxwell Henderson80bec322024-01-09 15:48:44 -080021template bool IsStabilizable<1, 1>(const Matrixd<1, 1>& A,
22 const Matrixd<1, 1>& B);
23template bool IsStabilizable<2, 1>(const Matrixd<2, 2>& A,
24 const Matrixd<2, 1>& B);
25template bool IsStabilizable<Eigen::Dynamic, Eigen::Dynamic>(
26 const Eigen::MatrixXd& A, const Eigen::MatrixXd& B);
James Kuszmaulb13e13f2023-11-22 20:44:04 -080027
28Eigen::Vector3d PoseToVector(const Pose2d& pose) {
29 return Eigen::Vector3d{pose.X().value(), pose.Y().value(),
30 pose.Rotation().Radians().value()};
Austin Schuh1e69f942020-11-14 15:06:14 -080031}
32
33} // namespace frc