11#include <wpi/math/geometry/Pose3d.hpp>
12#include <wpi/math/geometry/Rotation3d.hpp>
13#include <wpi/math/geometry/Transform3d.hpp>
14#include <wpi/math/geometry/Translation3d.hpp>
15#include <wpi/units/angle.hpp>
16#include <wpi/units/length.hpp>
52 m_robotToMechanism = robotToMechanism;
65 m_robotToMechanism = robotToMechanism.Translation();
66 m_mountRotation = robotToMechanism.Rotation();
89 m_parent = std::move(parentPose);
104 wpi::math::Pose3d base = m_parent ? m_parent() : wpi::math::Pose3d{};
105 return base.TransformBy(wpi::math::Transform3d{m_robotToMechanism.value_or(wpi::math::Translation3d{}),
119 wpi::math::Transform3d{wpi::math::Translation3d{},
RotationInPlane(angle)});
130 wpi::math::Pose3d
GetTranslatedPose(wpi::units::meter_t distance, wpi::units::radian_t angle)
const {
131 const wpi::units::meter_t along = distance * std::cos(angle.value());
132 const wpi::units::meter_t across = distance * std::sin(angle.value());
133 wpi::math::Translation3d slide;
136 slide = wpi::math::Translation3d{along, wpi::units::meter_t{0}, across};
139 slide = wpi::math::Translation3d{wpi::units::meter_t{0}, along, across};
142 slide = wpi::math::Translation3d{along, across, wpi::units::meter_t{0}};
145 return GetMountPose().TransformBy(wpi::math::Transform3d{slide, wpi::math::Rotation3d{}});
158 return wpi::math::Rotation3d{angle, wpi::units::radian_t{0}, wpi::units::radian_t{0}};
161 return wpi::math::Rotation3d{wpi::units::radian_t{0}, wpi::units::radian_t{0}, angle};
165 return wpi::math::Rotation3d{wpi::units::radian_t{0}, -angle, wpi::units::radian_t{0}};
170 std::optional<wpi::math::Translation3d> m_robotToMechanism;
171 wpi::math::Rotation3d m_mountRotation;
173 std::function<wpi::math::Pose3d()> m_parent;
Definition MechanismPositionConfig.hpp:31
std::optional< wpi::math::Translation3d > GetRelativePosition() const
Definition MechanismPositionConfig.hpp:94
wpi::math::Pose3d GetMountPose() const
Definition MechanismPositionConfig.hpp:103
wpi::math::Pose3d GetTranslatedPose(wpi::units::meter_t distance, wpi::units::radian_t angle) const
Definition MechanismPositionConfig.hpp:130
MechanismPositionConfig & WithRelativePosition(const wpi::math::Translation3d &robotToMechanism)
Definition MechanismPositionConfig.hpp:51
MechanismPositionConfig & WithMovementPlane(Plane plane)
Definition MechanismPositionConfig.hpp:76
wpi::math::Rotation3d RotationInPlane(wpi::units::radian_t angle) const
Definition MechanismPositionConfig.hpp:154
Plane
Definition MechanismPositionConfig.hpp:34
MechanismPositionConfig & WithRelativePosition(const wpi::math::Transform3d &robotToMechanism)
Definition MechanismPositionConfig.hpp:64
MechanismPositionConfig()=default
wpi::math::Pose3d GetRotatedPose(wpi::units::radian_t angle) const
Definition MechanismPositionConfig.hpp:117
MechanismPositionConfig & WithParent(std::function< wpi::math::Pose3d()> parentPose)
Definition MechanismPositionConfig.hpp:88
Plane GetMovementPlane() const
Definition MechanismPositionConfig.hpp:97
Definition ArmConfig.hpp:17