[wpilib] FieldObject2d: Add setTrajectory() method (#3277)

This commit is contained in:
Prateek Machiraju
2021-04-02 01:08:07 -04:00
committed by GitHub
parent c97acd18e7
commit 8471c4fb26
3 changed files with 34 additions and 0 deletions

View File

@@ -9,6 +9,8 @@
#include <wpi/Endian.h>
#include <wpi/MathExtras.h>
#include "frc/trajectory/Trajectory.h"
using namespace frc;
FieldObject2d::FieldObject2d(FieldObject2d&& rhs) {
@@ -53,6 +55,16 @@ void FieldObject2d::SetPoses(std::initializer_list<Pose2d> poses) {
SetPoses(wpi::makeArrayRef(poses.begin(), poses.end()));
}
void FieldObject2d::SetTrajectory(const Trajectory& trajectory) {
std::scoped_lock lock(m_mutex);
m_poses.clear();
m_poses.reserve(trajectory.States().size());
for (auto&& state : trajectory.States()) {
m_poses.push_back(state.pose);
}
UpdateEntry();
}
std::vector<Pose2d> FieldObject2d::GetPoses() const {
std::scoped_lock lock(m_mutex);
UpdateFromEntry();

View File

@@ -21,6 +21,7 @@
namespace frc {
class Field2d;
class Trajectory;
/**
* Game field object on a Field2d.
@@ -76,6 +77,13 @@ class FieldObject2d {
*/
void SetPoses(std::initializer_list<Pose2d> poses);
/**
* Sets poses from a trajectory.
*
* @param trajectory The trajectory from which poses should be added.
*/
void SetTrajectory(const Trajectory& trajectory);
/**
* Get multiple poses.
*