14#include <netinet/in.h>
15#include <sys/socket.h>
22#include <frc/geometry/Pose2d.h>
23#include <frc/geometry/Pose3d.h>
24#include <frc/geometry/Rotation2d.h>
25#include <frc/geometry/Rotation3d.h>
26#include <frc/geometry/Translation2d.h>
27#include <frc/geometry/Translation3d.h>
28#include <wpinet/PortForwarder.h>
38#include "networktables/NetworkTable.h"
39#include "networktables/NetworkTableEntry.h"
40#include "networktables/NetworkTableInstance.h"
41#include "networktables/NetworkTableValue.h"
42#include "networktables/DoubleArrayTopic.h"
63 inline frc::Pose3d
toPose3D(
const std::vector<double>& inData) {
64 if (inData.size() < 6) {
69 units::length::meter_t(inData[0]), units::length::meter_t(inData[1]), units::length::meter_t(inData[2])),
70 frc::Rotation3d(units::angle::radian_t(inData[3] * (std::numbers::pi / 180.0)),
71 units::angle::radian_t(inData[4] * (std::numbers::pi / 180.0)),
72 units::angle::radian_t(inData[5] * (std::numbers::pi / 180.0))));
82 inline frc::Pose2d
toPose2D(
const std::vector<double>& inData) {
83 if (inData.size() < 6) {
86 return frc::Pose2d(frc::Translation2d(units::length::meter_t(inData[0]), units::length::meter_t(inData[1])),
87 frc::Rotation2d(units::angle::radian_t(inData[5] * (std::numbers::pi / 180.0))));
98 std::array<double, 6> result;
99 result[0] = pose.Translation().X().value();
100 result[1] = pose.Translation().Y().value();
101 result[2] = pose.Translation().Z().value();
102 result[3] = pose.Rotation().X().value() * (180.0 / std::numbers::pi);
103 result[4] = pose.Rotation().Y().value() * (180.0 / std::numbers::pi);
104 result[5] = pose.Rotation().Z().value() * (180.0 / std::numbers::pi);
117 std::array<double, 6> result;
118 result[0] = pose.Translation().X().value();
119 result[1] = pose.Translation().Y().value();
123 result[5] = pose.Rotation().Degrees().value();
128 return nt::NetworkTableInstance::GetDefault().GetTable(
sanitizeName(tableName));
132 nt::NetworkTableInstance::GetDefault().Flush();
142 const std::string& entryName) {
143 const std::string& key = tableName +
"/" + entryName;
147 nt::DoubleArrayTopic daTopic = table->GetDoubleArrayTopic(entryName);
148 nt::DoubleArrayEntry entry = daTopic.GetEntry(std::span<double>{});
168 const std::string& entryName) {
177 const std::string& entryName,
178 const std::span<const double>& vals) {
187 inline bool getTV(
const std::string& limelightName =
"") {
196 inline double getTX(
const std::string& limelightName =
"") {
205 inline double getTY(
const std::string& limelightName =
"") {
214 inline double getTXNC(
const std::string& limelightName) {
223 inline double getTYNC(
const std::string& limelightName) {
233 inline double getTA(
const std::string& limelightName =
"") {
243 inline std::vector<double>
getT2DArray(
const std::string& limelightName) {
253 std::vector<double> t2d =
getT2DArray(limelightName);
254 if (t2d.size() == 17) {
266 std::vector<double> t2d =
getT2DArray(limelightName);
267 if (t2d.size() == 17) {
279 std::vector<double> t2d =
getT2DArray(limelightName);
280 if (t2d.size() == 17) {
345 inline std::string
getJSONDump(
const std::string& limelightName =
"") {
349 inline std::vector<double>
getBotpose(
const std::string& limelightName =
"") {
381 inline std::vector<double>
getTargetColor(
const std::string& limelightName =
"") {
442 const std::string& limelightName,
double cropXMin,
double cropXMax,
double cropYMin,
double cropYMax) {
443 double cropWindow[4]{cropXMin, cropXMax, cropYMin, cropYMax};
450 inline void setFiducial3DOffset(
const std::string& limelightName,
double offsetX,
double offsetY,
double offsetZ) {
451 std::array<double, 3> entries;
452 entries[0] = offsetX;
453 entries[1] = offsetY;
454 entries[2] = offsetZ;
466 std::array<double, 6> entries;
468 entries[1] = yawRate;
470 entries[3] = pitchRate;
472 entries[5] = rollRate;
508 inline void SetIMUMode(
const std::string& limelightName,
int mode) {
522 std::array<double, 3> entries;
530 std::vector<double> validIDsDouble(validIDs.begin(), validIDs.end());
538 const std::string& limelightName,
double forward,
double side,
double up,
double roll,
double pitch,
double yaw) {
539 double entries[6] = {forward, side, up, roll, pitch, yaw};
543 inline void setPythonScriptData(
const std::string& limelightName,
const std::vector<double>& outgoingPythonData) {
545 limelightName,
"llrobot", std::span{outgoingPythonData.begin(), outgoingPythonData.size()});
555 if (inData.size() <
static_cast<size_t>(position + 1)) {
558 return inData[position];
641 if (imuData !=
nullptr) {
657 const std::string& entryName,
660 auto tsValue = poseEntry.GetAtomic();
662 std::vector<double> poseArray = tsValue.value;
663 auto timestamp = tsValue.time;
665 if (poseArray.size() == 0) {
669 frc::Pose2d pose =
toPose2D(poseArray);
677 double adjustedTimestamp = (timestamp / 1000000.0) - (latency / 1000.0);
679 std::vector<RawFiducial> rawFiducials;
680 int valsPerFiducial = 7;
681 size_t expectedTotalVals = 11 + valsPerFiducial * tagCount;
683 if (poseArray.size() == expectedTotalVals) {
684 for (
int i = 0; i < tagCount; i++) {
685 int baseIndex = 11 + (i * valsPerFiducial);
693 rawFiducials.emplace_back(
id, txnc, tync, ta, distToCamera, distToRobot, ambiguity);
698 units::time::second_t(adjustedTimestamp),
734 if (imuData.empty() || imuData.size() < 10) {
737 return IMUData(imuData.data());
892 static int sockfd = -1;
893 static struct sockaddr_in servaddr, cliaddr;
896 sockfd = socket(AF_INET, SOCK_DGRAM, 0);
898 std::cerr <<
"Socket creation failed" << std::endl;
902 std::memset(&servaddr, 0,
sizeof(servaddr));
903 servaddr.sin_family = AF_INET;
904 servaddr.sin_addr.s_addr = inet_addr(
"255.255.255.255");
905 servaddr.sin_port = htons(5809);
909 if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast,
sizeof(broadcast)) < 0) {
910 std::cerr <<
"Error in setting Broadcast option" << std::endl;
917 if (fcntl(sockfd, F_SETFL, O_NONBLOCK) < 0) {
918 std::cerr <<
"Error setting socket to non-blocking" << std::endl;
924 const char* msg =
"LLPhoneHome";
925 sendto(sockfd, msg, std::strlen(msg), 0, (
const struct sockaddr*)&servaddr,
sizeof(servaddr));
928 char receiveData[1024];
929 socklen_t len =
sizeof(cliaddr);
931 ssize_t n = recvfrom(sockfd,
reinterpret_cast<char*
>(receiveData), 1024, 0, (
struct sockaddr*)&cliaddr, &len);
933 receiveData[n] =
'\0';
934 std::string received(receiveData, n);
935 std::cout <<
"Received response: " << received << std::endl;
936 }
else if (n < 0 && errno != EWOULDBLOCK && errno != EAGAIN) {
937 std::cerr <<
"Error receiving data" << std::endl;
945 auto& portForwarder = wpi::PortForwarder::GetInstance();
946 portForwarder.Add(5800,
sanitizeName(limelightName), 5800);
947 portForwarder.Add(5801,
sanitizeName(limelightName), 5801);
948 portForwarder.Add(5802,
sanitizeName(limelightName), 5802);
949 portForwarder.Add(5803,
sanitizeName(limelightName), 5803);
950 portForwarder.Add(5804,
sanitizeName(limelightName), 5804);
951 portForwarder.Add(5805,
sanitizeName(limelightName), 5805);
952 portForwarder.Add(5806,
sanitizeName(limelightName), 5806);
953 portForwarder.Add(5807,
sanitizeName(limelightName), 5807);
954 portForwarder.Add(5808,
sanitizeName(limelightName), 5808);
955 portForwarder.Add(5809,
sanitizeName(limelightName), 5809);
958 template <
typename T,
typename KeyType>
959 T
SafeJSONAccess(
const wpi::json& jsonData,
const KeyType& key,
const T& defaultValue) {
961 return jsonData.at(key).template get<T>();
962 }
catch (wpi::json::exception& e) {
973 std::vector<double> defaultValueVector(6, 0.0);
1001 std::vector<double> defaultValueVector(6, 0.0);
1091 std::vector<double> defaultVector{};
1116 auto start = std::chrono::high_resolution_clock::now();
1117 std::string jsonString =
getJSONDump(limelightName);
1120 data = wpi::json::parse(jsonString);
1121 }
catch (
const std::exception& e) {
1125 auto end = std::chrono::high_resolution_clock::now();
1126 double nanos = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();
1127 double millis = (nanos * 0.000001);
1132 std::cout <<
"lljson: " << millis << std::endl;
Definition LimelightHelpers.h:781
double m_TargetYDegreesNoCrosshairAdjusted
Definition LimelightHelpers.h:788
std::string m_data
Definition LimelightHelpers.h:784
double m_TargetXDegreesNoCrosshairAdjusted
Definition LimelightHelpers.h:787
std::string m_family
Definition LimelightHelpers.h:783
Definition LimelightHelpers.h:802
int m_classID
Definition LimelightHelpers.h:804
std::string m_className
Definition LimelightHelpers.h:805
double m_confidence
Definition LimelightHelpers.h:806
Definition LimelightHelpers.h:791
double m_TargetXDegreesNoCrosshairAdjusted
Definition LimelightHelpers.h:798
int m_classID
Definition LimelightHelpers.h:793
std::string m_className
Definition LimelightHelpers.h:794
double m_TargetYDegreesNoCrosshairAdjusted
Definition LimelightHelpers.h:799
double m_confidence
Definition LimelightHelpers.h:795
Definition LimelightHelpers.h:775
std::string m_family
Definition LimelightHelpers.h:778
int m_fiducialID
Definition LimelightHelpers.h:777
Definition LimelightHelpers.h:625
double gyroZ
Definition LimelightHelpers.h:633
double accelZ
Definition LimelightHelpers.h:636
double gyroY
Definition LimelightHelpers.h:632
IMUData(double imuData[10])
Definition LimelightHelpers.h:640
double gyroX
Definition LimelightHelpers.h:631
double robotYaw
Definition LimelightHelpers.h:627
double accelX
Definition LimelightHelpers.h:634
double Roll
Definition LimelightHelpers.h:628
double Yaw
Definition LimelightHelpers.h:630
double Pitch
Definition LimelightHelpers.h:629
double accelY
Definition LimelightHelpers.h:635
Definition LimelightHelpers.h:840
VisionResultsClass targetingResults
Definition LimelightHelpers.h:842
Definition LimelightHelpers.h:584
double latency
Definition LimelightHelpers.h:588
double avgTagDist
Definition LimelightHelpers.h:591
PoseEstimate(const frc::Pose2d &pose, units::time::second_t timestampSeconds, double latency, int tagCount, double tagSpan, double avgTagDist, double avgTagArea, const std::vector< RawFiducial > &rawFiducials, bool isMegaTag2)
Definition LimelightHelpers.h:598
int tagCount
Definition LimelightHelpers.h:589
frc::Pose2d pose
Definition LimelightHelpers.h:586
double avgTagArea
Definition LimelightHelpers.h:592
std::vector< RawFiducial > rawFiducials
Definition LimelightHelpers.h:593
bool isMegaTag2
Definition LimelightHelpers.h:594
double tagSpan
Definition LimelightHelpers.h:590
units::time::second_t timestampSeconds
Definition LimelightHelpers.h:587
Definition LimelightHelpers.h:561
double ambiguity
Definition LimelightHelpers.h:569
RawFiducial(int id, double txnc, double tync, double ta, double distToCamera, double distToRobot, double ambiguity)
Definition LimelightHelpers.h:571
int id
Definition LimelightHelpers.h:563
double txnc
Definition LimelightHelpers.h:564
double tync
Definition LimelightHelpers.h:565
double distToCamera
Definition LimelightHelpers.h:567
double ta
Definition LimelightHelpers.h:566
double distToRobot
Definition LimelightHelpers.h:568
Definition LimelightHelpers.h:773
Definition LimelightHelpers.h:741
std::vector< double > m_TargetTransform6DROBOTSPACE
Definition LimelightHelpers.h:767
double m_pipelineIndex
Definition LimelightHelpers.h:762
double m_TargetAreaNormalizedPercentage
Definition LimelightHelpers.h:757
double m_TargetYDegreesCrosshairAdjusted
Definition LimelightHelpers.h:753
double m_TargetYNormalizedCrosshairAdjusted
Definition LimelightHelpers.h:750
double m_TargetXDegreesCrosshairAdjusted
Definition LimelightHelpers.h:752
std::vector< double > m_CAMERATransform6DTARGETSPACE
Definition LimelightHelpers.h:765
double m_TargetXNormalized
Definition LimelightHelpers.h:746
double m_TargetAreaNormalized
Definition LimelightHelpers.h:756
double m_TargetYNormalized
Definition LimelightHelpers.h:747
std::vector< double > m_ROBOTTransform6DFIELDSPACE
Definition LimelightHelpers.h:769
double m_TargetXNormalizedCrosshairAdjusted
Definition LimelightHelpers.h:749
std::vector< double > m_CAMERATransform6DROBOTSPACE
Definition LimelightHelpers.h:770
double m_TargetXPixels
Definition LimelightHelpers.h:743
std::vector< double > m_ROBOTTransform6DTARGETSPACE
Definition LimelightHelpers.h:768
double m_timeStamp
Definition LimelightHelpers.h:760
std::vector< std::vector< double > > m_TargetCorners
Definition LimelightHelpers.h:763
std::vector< double > m_TargetTransform6DCAMERASPACE
Definition LimelightHelpers.h:766
double m_TargetYPixels
Definition LimelightHelpers.h:744
double m_TargetAreaPixels
Definition LimelightHelpers.h:755
double m_latency
Definition LimelightHelpers.h:761
Definition LimelightHelpers.h:809
std::vector< double > botPose_wpired
Definition LimelightHelpers.h:823
double m_latencyJSON
Definition LimelightHelpers.h:819
std::vector< ClassificationResultClass > ClassificationResults
Definition LimelightHelpers.h:814
double m_latencyPipeline
Definition LimelightHelpers.h:817
std::vector< double > botPose_wpiblue
Definition LimelightHelpers.h:824
std::vector< double > botPose
Definition LimelightHelpers.h:822
int valid
Definition LimelightHelpers.h:821
std::vector< BarcodeResultClass > BarcodeResults
Definition LimelightHelpers.h:815
double m_latencyCapture
Definition LimelightHelpers.h:818
double m_timeStamp
Definition LimelightHelpers.h:816
void Clear()
Definition LimelightHelpers.h:825
std::vector< RetroreflectiveResultClass > RetroResults
Definition LimelightHelpers.h:811
std::vector< FiducialResultClass > FiducialResults
Definition LimelightHelpers.h:812
std::vector< DetectionResultClass > DetectionResults
Definition LimelightHelpers.h:813
double m_pipelineIndex
Definition LimelightHelpers.h:820
const std::string _key_transformTARGETPOSE_ROBOTSPACE
Definition LimelightHelpers.h:876
const std::string _key_data
Definition LimelightHelpers.h:885
const std::string _key_TargetYNormalizedCrosshair
Definition LimelightHelpers.h:863
const std::string _key_TargetAreaNormalized
Definition LimelightHelpers.h:864
const std::string _key_pipelineIndex
Definition LimelightHelpers.h:850
const std::string _key_latency_pipeline
Definition LimelightHelpers.h:847
const std::string _key_TargetXPixels
Definition LimelightHelpers.h:855
const std::string _key_TargetYDegreesCrosshair
Definition LimelightHelpers.h:860
const std::string _key_TargetAreaPixels
Definition LimelightHelpers.h:865
const std::string _key_TargetYPixels
Definition LimelightHelpers.h:856
const std::string _key_TargetXDegreesCrosshair
Definition LimelightHelpers.h:858
const std::string _key_skew
Definition LimelightHelpers.h:883
const std::string _key_timestamp
Definition LimelightHelpers.h:846
const std::string _key_transformCAMERAPOSE_ROBOTSPACE
Definition LimelightHelpers.h:872
const std::string _key_corners
Definition LimelightHelpers.h:870
const std::string _key_botpose_wpired
Definition LimelightHelpers.h:880
const std::string _key_TargetXNormalized
Definition LimelightHelpers.h:853
const std::string _key_transformTARGETPOSE_CAMERASPACE
Definition LimelightHelpers.h:874
const std::string _key_TargetYNormalized
Definition LimelightHelpers.h:854
const std::string _key_latency_capture
Definition LimelightHelpers.h:848
const std::string _key_transformROBOTPOSE_TARGETSPACE
Definition LimelightHelpers.h:875
const std::string _key_confidence
Definition LimelightHelpers.h:868
const std::string _key_TargetXDegrees
Definition LimelightHelpers.h:851
const std::string _key_TargetXNormalizedCrosshair
Definition LimelightHelpers.h:862
const std::string _key_TargetYDegreesNoCrosshair
Definition LimelightHelpers.h:861
const std::string _key_botpose_wpiblue
Definition LimelightHelpers.h:879
const std::string _key_ffamily
Definition LimelightHelpers.h:884
const std::string _key_TargetXDegreesNoCrosshair
Definition LimelightHelpers.h:859
const std::string _key_colorHSV
Definition LimelightHelpers.h:887
const std::string _key_className
Definition LimelightHelpers.h:866
const std::string _key_classID
Definition LimelightHelpers.h:867
const std::string _key_transformCAMERAPOSE_TARGETSPACE
Definition LimelightHelpers.h:871
const std::string _key_transformROBOTPOSE_FIELDSPACE
Definition LimelightHelpers.h:882
const std::string _key_fiducialID
Definition LimelightHelpers.h:869
const std::string _key_botpose
Definition LimelightHelpers.h:878
const std::string _key_TargetYDegrees
Definition LimelightHelpers.h:852
const std::string _key_colorRGB
Definition LimelightHelpers.h:886
Definition LimelightHelpers.h:49
const std::string getDetectorClass(const std::string &limelightName)
Definition LimelightHelpers.h:300
std::vector< double > getCameraPose_TargetSpace(const std::string &limelightName="")
Definition LimelightHelpers.h:365
void setPipelineIndex(const std::string &limelightName, int index)
Definition LimelightHelpers.h:397
double getLatency_Pipeline(const std::string &limelightName="")
Definition LimelightHelpers.h:310
nt::NetworkTableEntry getLimelightNTTableEntry(const std::string &tableName, const std::string &entryName)
Definition LimelightHelpers.h:135
void SetIMUMode(const std::string &limelightName, int mode)
Definition LimelightHelpers.h:508
void SetupPortForwarding(const std::string &limelightName)
Definition LimelightHelpers.h:944
double getTY(const std::string &limelightName="")
Definition LimelightHelpers.h:205
std::vector< double > getBotpose_wpiRed(const std::string &limelightName="")
Definition LimelightHelpers.h:353
std::vector< double > getBotpose_wpiBlue(const std::string &limelightName="")
Definition LimelightHelpers.h:357
PoseEstimate getBotPoseEstimate_wpiRed(const std::string &limelightName="")
Definition LimelightHelpers.h:712
T SafeJSONAccess(const wpi::json &jsonData, const KeyType &key, const T &defaultValue)
Definition LimelightHelpers.h:959
void setLEDMode_ForceBlink(const std::string &limelightName="")
Definition LimelightHelpers.h:413
LimelightResultsClass getLatestResults(const std::string &limelightName="", bool profile=false)
Definition LimelightHelpers.h:1115
PoseEstimate getBotPoseEstimate(const std::string &limelightName, const std::string &entryName, bool isMegaTag2)
Definition LimelightHelpers.h:656
std::vector< double > getCameraPose_RobotSpace(const std::string &limelightName="")
Definition LimelightHelpers.h:369
void SetRobotOrientation(const std::string &limelightName, double yaw, double yawRate, double pitch, double pitchRate, double roll, double rollRate)
Definition LimelightHelpers.h:482
bool getTV(const std::string &limelightName="")
Definition LimelightHelpers.h:187
PoseEstimate getBotPoseEstimate_wpiBlue_MegaTag2(const std::string &limelightName="")
Definition LimelightHelpers.h:716
double getTX(const std::string &limelightName="")
Definition LimelightHelpers.h:196
void setLimelightNTDoubleArray(const std::string &tableName, const std::string &entryName, const std::span< const double > &vals)
Definition LimelightHelpers.h:176
int getClassifierClassIndex(const std::string &limelightName)
Definition LimelightHelpers.h:265
void Flush()
Definition LimelightHelpers.h:131
std::vector< double > getLimelightNTDoubleArray(const std::string &tableName, const std::string &entryName)
Definition LimelightHelpers.h:159
PoseEstimate getBotPoseEstimate_wpiBlue(const std::string &limelightName="")
Definition LimelightHelpers.h:708
void SetRobotOrientation_INTERNAL(const std::string &limelightName, double yaw, double yawRate, double pitch, double pitchRate, double roll, double rollRate, bool flush)
Definition LimelightHelpers.h:458
IMUData getIMUData(const std::string &limelightName)
Definition LimelightHelpers.h:732
std::shared_ptr< nt::NetworkTable > getLimelightNTTable(const std::string &tableName)
Definition LimelightHelpers.h:127
nt::DoubleArrayEntry & getLimelightDoubleArrayEntry(const std::string &tableName, const std::string &entryName)
Definition LimelightHelpers.h:141
std::vector< double > getT2DArray(const std::string &limelightName)
Definition LimelightHelpers.h:243
int getDetectorClassIndex(const std::string &limelightName)
Definition LimelightHelpers.h:278
double getLimelightNTDouble(const std::string &tableName, const std::string &entryName)
Definition LimelightHelpers.h:155
std::vector< double > getBotpose(const std::string &limelightName="")
Definition LimelightHelpers.h:349
frc::Pose2d toPose2D(const std::vector< double > &inData)
Definition LimelightHelpers.h:82
const double INVALID_TARGET
Definition LimelightHelpers.h:740
void setStreamMode_PiPMain(const std::string &limelightName="")
Definition LimelightHelpers.h:425
void setLimelightNTDouble(const std::string &tableName, const std::string entryName, double val)
Definition LimelightHelpers.h:172
void setPythonScriptData(const std::string &limelightName, const std::vector< double > &outgoingPythonData)
Definition LimelightHelpers.h:543
double getFiducialID(const std::string &limelightName="")
Definition LimelightHelpers.h:385
void from_json(const wpi::json &j, RetroreflectiveResultClass &t)
Definition LimelightHelpers.h:972
void setCameraPose_RobotSpace(const std::string &limelightName, double forward, double side, double up, double roll, double pitch, double yaw)
Definition LimelightHelpers.h:537
void setLEDMode_ForceOn(const std::string &limelightName="")
Definition LimelightHelpers.h:417
std::vector< double > getTargetPose_RobotSpace(const std::string &limelightName="")
Definition LimelightHelpers.h:377
PoseEstimate getBotPoseEstimate_wpiRed_MegaTag2(const std::string &limelightName="")
Definition LimelightHelpers.h:720
double getLatency_Capture(const std::string &limelightName="")
Definition LimelightHelpers.h:319
std::string getLimelightNTString(const std::string &tableName, const std::string &entryName)
Definition LimelightHelpers.h:163
void setStreamMode_Standard(const std::string &limelightName="")
Definition LimelightHelpers.h:421
void SetFidcuial3DOffset(const std::string &limelightName, double x, double y, double z)
Definition LimelightHelpers.h:521
double getTXNC(const std::string &limelightName)
Definition LimelightHelpers.h:214
int getTargetCount(const std::string &limelightName)
Definition LimelightHelpers.h:252
std::array< double, 6 > pose2dToArray(const frc::Pose2d &pose)
Definition LimelightHelpers.h:116
const std::string getCurrentPipelineType(const std::string &limelightName)
Definition LimelightHelpers.h:336
const std::string getClassifierClass(const std::string &limelightName)
Definition LimelightHelpers.h:291
std::string sanitizeName(const std::string &name)
Definition LimelightHelpers.h:50
void setFiducial3DOffset(const std::string &limelightName, double offsetX, double offsetY, double offsetZ)
Definition LimelightHelpers.h:450
void setStreamMode_PiPSecondary(const std::string &limelightName="")
Definition LimelightHelpers.h:429
std::string getNeuralClassID(const std::string &limelightName="")
Definition LimelightHelpers.h:389
std::array< double, 6 > pose3dToArray(const frc::Pose3d &pose)
Definition LimelightHelpers.h:97
std::vector< double > getPythonScriptData(const std::string &limelightName="")
Definition LimelightHelpers.h:548
frc::Pose3d toPose3D(const std::vector< double > &inData)
Definition LimelightHelpers.h:63
void setLEDMode_PipelineControl(const std::string &limelightName="")
Definition LimelightHelpers.h:405
std::vector< double > getBotpose_TargetSpace(const std::string &limelightName="")
Definition LimelightHelpers.h:361
double getTYNC(const std::string &limelightName)
Definition LimelightHelpers.h:223
void SetFiducialIDFiltersOverride(const std::string &limelightName, const std::vector< int > &validIDs)
Definition LimelightHelpers.h:529
std::unordered_map< std::string, nt::DoubleArrayEntry > doubleArrayEntries
Definition LimelightHelpers.h:139
std::vector< double > getTargetPose_CameraSpace(const std::string &limelightName="")
Definition LimelightHelpers.h:373
void PhoneHome()
Definition LimelightHelpers.h:891
void setCropWindow(const std::string &limelightName, double cropXMin, double cropXMax, double cropYMin, double cropYMax)
Definition LimelightHelpers.h:441
double getTA(const std::string &limelightName="")
Definition LimelightHelpers.h:233
std::vector< std::string > getLimelightNTStringArray(const std::string &tableName, const std::string &entryName)
Definition LimelightHelpers.h:167
void setLEDMode_ForceOff(const std::string &limelightName="")
Definition LimelightHelpers.h:409
void setPriorityTagID(const std::string &limelightName, int ID)
Definition LimelightHelpers.h:401
bool validPoseEstimate(const PoseEstimate &pose)
Definition LimelightHelpers.h:618
std::vector< double > getTargetColor(const std::string &limelightName="")
Definition LimelightHelpers.h:381
std::string getJSONDump(const std::string &limelightName="")
Definition LimelightHelpers.h:345
double extractBotPoseEntry(const std::vector< double > &inData, int position)
Definition LimelightHelpers.h:554
double getCurrentPipelineIndex(const std::string &limelightName)
Definition LimelightHelpers.h:327
void SetRobotOrientation_NoFlush(const std::string &limelightName, double yaw, double yawRate, double pitch, double pitchRate, double roll, double rollRate)
Definition LimelightHelpers.h:492
std::vector< std::string > getRawBarcodeData(const std::string &limelightName="")
Definition LimelightHelpers.h:393