mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-22 01:11:40 +00:00
Auto-generate packet dataclasses with Jinja (#1374)
This commit is contained in:
@@ -15,112 +15,134 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <chrono>
|
||||
|
||||
#include <units/angle.h>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "photon/dataflow/structures/Packet.h"
|
||||
#include "photon/targeting/MultiTargetPNPResult.h"
|
||||
#include "photon/targeting/PNPResult.h"
|
||||
#include "photon/targeting/PhotonPipelineResult.h"
|
||||
#include "photon/targeting/PhotonTrackedTarget.h"
|
||||
#include "photon/targeting/PnpResult.h"
|
||||
|
||||
TEST(PacketTest, PNPResult) {
|
||||
photon::PNPResult result;
|
||||
photon::Packet p;
|
||||
p << result;
|
||||
using namespace photon;
|
||||
|
||||
photon::PNPResult b;
|
||||
p >> b;
|
||||
TEST(PacketTest, PnpResult) {
|
||||
PnpResult result{};
|
||||
|
||||
result.best = {1_m, 2_m, 3_m, frc::Rotation3d{6_deg, 7_deg, 12_deg}};
|
||||
result.alt = {8_m, 2_m, 1_m, frc::Rotation3d{0_deg, 1_deg, 88_deg}};
|
||||
// determined by throwing a few D20s
|
||||
result.bestReprojErr = 7;
|
||||
result.altReprojErr = 11;
|
||||
result.ambiguity = 5.0 / 13.0;
|
||||
|
||||
Packet p;
|
||||
p.Pack<PnpResult>(result);
|
||||
|
||||
PnpResult b = p.Unpack<PnpResult>();
|
||||
|
||||
EXPECT_EQ(result, b);
|
||||
}
|
||||
|
||||
TEST(PacketTest, MultiTargetPNPResult) {
|
||||
photon::MultiTargetPNPResult result;
|
||||
photon::Packet p;
|
||||
p << result;
|
||||
// TEST(PacketTest, MultiTargetPNPResult) {
|
||||
// MultiTargetPNPResult result;
|
||||
// Packet p;
|
||||
// p << result;
|
||||
|
||||
photon::MultiTargetPNPResult b;
|
||||
p >> b;
|
||||
// MultiTargetPNPResult b;
|
||||
// p >> b;
|
||||
|
||||
EXPECT_EQ(result, b);
|
||||
}
|
||||
// EXPECT_EQ(result, b);
|
||||
// }
|
||||
|
||||
TEST(PacketTest, PhotonTrackedTarget) {
|
||||
photon::PhotonTrackedTarget target{
|
||||
3.0,
|
||||
4.0,
|
||||
9.0,
|
||||
-5.0,
|
||||
-1,
|
||||
-1,
|
||||
-1.0,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
-1,
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}};
|
||||
// TEST(PacketTest, PhotonTrackedTarget) {
|
||||
// PhotonTrackedTarget target{
|
||||
// 3.0,
|
||||
// 4.0,
|
||||
// 9.0,
|
||||
// -5.0,
|
||||
// -1,
|
||||
// -1,
|
||||
// -1.0,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// -1,
|
||||
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}};
|
||||
|
||||
photon::Packet p;
|
||||
p << target;
|
||||
// Packet p;
|
||||
// p << target;
|
||||
|
||||
photon::PhotonTrackedTarget b;
|
||||
p >> b;
|
||||
// PhotonTrackedTarget b;
|
||||
// p >> b;
|
||||
|
||||
EXPECT_EQ(target, b);
|
||||
}
|
||||
// EXPECT_EQ(target, b);
|
||||
// }
|
||||
|
||||
TEST(PacketTest, PhotonPipelineResult) {
|
||||
photon::PhotonPipelineResult result{0, 0_s, 1_s, {}};
|
||||
photon::Packet p;
|
||||
p << result;
|
||||
|
||||
photon::PhotonPipelineResult b;
|
||||
p >> b;
|
||||
PhotonPipelineResult result(PhotonPipelineMetadata(0, 0, 1),
|
||||
std::vector<PhotonTrackedTarget>{}, std::nullopt);
|
||||
|
||||
Packet p;
|
||||
p.Pack<decltype(result)>(result);
|
||||
auto b = p.Unpack<decltype(result)>();
|
||||
EXPECT_EQ(result, b);
|
||||
|
||||
wpi::SmallVector<photon::PhotonTrackedTarget, 2> targets{
|
||||
photon::PhotonTrackedTarget{
|
||||
3.0,
|
||||
-4.0,
|
||||
9.0,
|
||||
4.0,
|
||||
1,
|
||||
-1,
|
||||
std::vector<PhotonTrackedTarget> targets{
|
||||
PhotonTrackedTarget{
|
||||
3.0, -4.0, 9.0, 4.0, 1, -1, -1.0f,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
-1.0,
|
||||
std::vector<TargetCorner>{
|
||||
TargetCorner{1., 2.}, TargetCorner{3.0, 4.0},
|
||||
TargetCorner{5., 6.}, TargetCorner{7.0, 8.0}},
|
||||
std::vector<TargetCorner>{
|
||||
TargetCorner{1., 2.}, TargetCorner{3.0, 4.0},
|
||||
TargetCorner{5., 6.}, TargetCorner{7.0, 8.0}}},
|
||||
PhotonTrackedTarget{
|
||||
3.0, -4.0, 9.1, 6.7, -1, -1, -1.0f,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
-1,
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}},
|
||||
photon::PhotonTrackedTarget{
|
||||
3.0,
|
||||
-4.0,
|
||||
9.1,
|
||||
6.7,
|
||||
-1,
|
||||
-1,
|
||||
-1.0,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
-1,
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6},
|
||||
std::pair{7, 8}}}};
|
||||
std::vector<TargetCorner>{
|
||||
TargetCorner{1.0, 2.0}, TargetCorner{3.0, 4.0},
|
||||
TargetCorner{5.0, 6.0}, TargetCorner{7.0, 8.0}},
|
||||
std::vector<TargetCorner>{
|
||||
TargetCorner{1.0, 2.0}, TargetCorner{3.0, 4.0},
|
||||
TargetCorner{5.0, 6.0}, TargetCorner{7.0, 8.0}}}};
|
||||
|
||||
photon::PhotonPipelineResult result2{0, 0_s, 1_s, targets};
|
||||
photon::Packet p2;
|
||||
p2 << result2;
|
||||
MultiTargetPNPResult mtResult{
|
||||
PnpResult{frc::Transform3d{1_m, 2_m, 3_m,
|
||||
frc::Rotation3d{6_deg, 7_deg, 12_deg}},
|
||||
frc::Transform3d{8_m, 2_m, 1_m,
|
||||
frc::Rotation3d{0_deg, 1_deg, 88_deg}},
|
||||
// determined by throwing a few D20s
|
||||
17.0, 22.33, 2.54},
|
||||
std::vector<int16_t>{8, 7, 11, 22, 59, 40}};
|
||||
|
||||
photon::PhotonPipelineResult b2;
|
||||
p2 >> b2;
|
||||
PhotonPipelineResult result2(PhotonPipelineMetadata{0, 0, 1}, targets,
|
||||
mtResult);
|
||||
|
||||
Packet p2;
|
||||
auto t1 = std::chrono::steady_clock::now();
|
||||
p2.Pack<decltype(result2)>(result2);
|
||||
auto t2 = std::chrono::steady_clock::now();
|
||||
auto b2 = p2.Unpack<decltype(result2)>();
|
||||
auto t3 = std::chrono::steady_clock::now();
|
||||
EXPECT_EQ(result2, b2);
|
||||
|
||||
fmt::println(
|
||||
"Pack {} unpack {} packet length {}",
|
||||
std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count(),
|
||||
std::chrono::duration_cast<std::chrono::nanoseconds>(t3 - t2).count(),
|
||||
p2.GetDataSize());
|
||||
}
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Photon Vision.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "photon/targeting/MultiTargetPNPResult.h"
|
||||
|
||||
// TODO
|
||||
TEST(MultiTargetPNPResultTest, Equality) {}
|
||||
|
||||
// TODO
|
||||
TEST(MultiTargetPNPResultTest, Inequality) {}
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Photon Vision.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "photon/targeting/PNPResult.h"
|
||||
|
||||
// TODO
|
||||
TEST(PNPResultTest, Equality) {}
|
||||
|
||||
// TODO
|
||||
TEST(PNPResultTest, Inequality) {}
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Photon Vision.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "photon/targeting/PhotonPipelineResult.h"
|
||||
|
||||
// TODO
|
||||
TEST(PhotonPipelineResultTest, Equality) {}
|
||||
|
||||
// TODO
|
||||
TEST(PhotonPipelineResultTest, Inequality) {}
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Photon Vision.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "photon/targeting/PhotonTrackedTarget.h"
|
||||
|
||||
// TODO
|
||||
TEST(PhotonTrackedTargetTest, Equality) {}
|
||||
|
||||
// TODO
|
||||
TEST(PhotonTrackedTargetTest, Inequality) {}
|
||||
@@ -20,36 +20,36 @@
|
||||
#include "photon/targeting/MultiTargetPNPResult.h"
|
||||
#include "photon/targeting/proto/MultiTargetPNPResultProto.h"
|
||||
|
||||
TEST(MultiTargetPNPResultTest, Roundtrip) {
|
||||
photon::MultiTargetPNPResult result;
|
||||
// TEST(MultiTargetPNPResultTest, Roundtrip) {
|
||||
// photon::MultiTargetPNPResult result;
|
||||
|
||||
google::protobuf::Arena arena;
|
||||
google::protobuf::Message* proto =
|
||||
wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
|
||||
wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result);
|
||||
// google::protobuf::Arena arena;
|
||||
// google::protobuf::Message* proto =
|
||||
// wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
|
||||
// wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result);
|
||||
|
||||
photon::MultiTargetPNPResult unpacked_data =
|
||||
wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
|
||||
// photon::MultiTargetPNPResult unpacked_data =
|
||||
// wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(result, unpacked_data);
|
||||
// EXPECT_EQ(result, unpacked_data);
|
||||
|
||||
photon::PNPResult pnpRes{
|
||||
true,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
0.1,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
0.1,
|
||||
0};
|
||||
// photon::PnpResult pnpRes{
|
||||
// true,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// 0.1,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// 0.1,
|
||||
// 0};
|
||||
|
||||
photon::MultiTargetPNPResult result1{pnpRes, {1, 2, 3, 4}};
|
||||
// photon::MultiTargetPNPResult result1{pnpRes, {1, 2, 3, 4}};
|
||||
|
||||
proto = wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
|
||||
wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result1);
|
||||
// proto = wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
|
||||
// wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result1);
|
||||
|
||||
photon::MultiTargetPNPResult unpacked_data1 =
|
||||
wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
|
||||
// photon::MultiTargetPNPResult unpacked_data1 =
|
||||
// wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(result1, unpacked_data1);
|
||||
}
|
||||
// EXPECT_EQ(result1, unpacked_data1);
|
||||
// }
|
||||
|
||||
@@ -17,37 +17,37 @@
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "photon.pb.h"
|
||||
#include "photon/targeting/PNPResult.h"
|
||||
#include "photon/targeting/PnpResult.h"
|
||||
#include "photon/targeting/proto/PNPResultProto.h"
|
||||
|
||||
TEST(PNPResultTest, Roundtrip) {
|
||||
photon::PNPResult result;
|
||||
// TEST(PnpResultTest, Roundtrip) {
|
||||
// photon::PnpResult result;
|
||||
|
||||
google::protobuf::Arena arena;
|
||||
google::protobuf::Message* proto =
|
||||
wpi::Protobuf<photon::PNPResult>::New(&arena);
|
||||
wpi::Protobuf<photon::PNPResult>::Pack(proto, result);
|
||||
// google::protobuf::Arena arena;
|
||||
// google::protobuf::Message* proto =
|
||||
// wpi::Protobuf<photon::PnpResult>::New(&arena);
|
||||
// wpi::Protobuf<photon::PnpResult>::Pack(proto, result);
|
||||
|
||||
photon::PNPResult unpacked_data =
|
||||
wpi::Protobuf<photon::PNPResult>::Unpack(*proto);
|
||||
// photon::PnpResult unpacked_data =
|
||||
// wpi::Protobuf<photon::PnpResult>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(result, unpacked_data);
|
||||
// EXPECT_EQ(result, unpacked_data);
|
||||
|
||||
photon::PNPResult result1{
|
||||
true,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
0.1,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
0.1,
|
||||
0};
|
||||
// photon::PnpResult result1{
|
||||
// true,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// 0.1,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// 0.1,
|
||||
// 0};
|
||||
|
||||
proto = wpi::Protobuf<photon::PNPResult>::New(&arena);
|
||||
wpi::Protobuf<photon::PNPResult>::Pack(proto, result1);
|
||||
// proto = wpi::Protobuf<photon::PnpResult>::New(&arena);
|
||||
// wpi::Protobuf<photon::PnpResult>::Pack(proto, result1);
|
||||
|
||||
photon::PNPResult unpacked_data2 =
|
||||
wpi::Protobuf<photon::PNPResult>::Unpack(*proto);
|
||||
// photon::PnpResult unpacked_data2 =
|
||||
// wpi::Protobuf<photon::PnpResult>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(result1, unpacked_data2);
|
||||
}
|
||||
// EXPECT_EQ(result1, unpacked_data2);
|
||||
// }
|
||||
|
||||
@@ -20,81 +20,82 @@
|
||||
#include "photon/targeting/PhotonPipelineResult.h"
|
||||
#include "photon/targeting/proto/PhotonPipelineResultProto.h"
|
||||
|
||||
TEST(PhotonPipelineResultTest, Roundtrip) {
|
||||
photon::PhotonPipelineResult result{0, 0_s, 12_ms, {}};
|
||||
// TEST(PhotonPipelineResultTest, Roundtrip) {
|
||||
// photon::PhotonPipelineResult result{0, 0_s, 12_ms, {}};
|
||||
|
||||
google::protobuf::Arena arena;
|
||||
google::protobuf::Message* proto =
|
||||
wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
|
||||
wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result);
|
||||
// google::protobuf::Arena arena;
|
||||
// google::protobuf::Message* proto =
|
||||
// wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
|
||||
// wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result);
|
||||
|
||||
photon::PhotonPipelineResult unpacked_data =
|
||||
wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
|
||||
// photon::PhotonPipelineResult unpacked_data =
|
||||
// wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(result, unpacked_data);
|
||||
// EXPECT_EQ(result, unpacked_data);
|
||||
|
||||
wpi::SmallVector<photon::PhotonTrackedTarget, 2> targets{
|
||||
photon::PhotonTrackedTarget{
|
||||
3.0,
|
||||
-4.0,
|
||||
9.0,
|
||||
4.0,
|
||||
1,
|
||||
-1,
|
||||
-1.0,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
-1,
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}},
|
||||
photon::PhotonTrackedTarget{
|
||||
3.0,
|
||||
-4.0,
|
||||
9.1,
|
||||
6.7,
|
||||
-1,
|
||||
-1,
|
||||
-1.0,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
-1,
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6},
|
||||
std::pair{7, 8}}}};
|
||||
// wpi::SmallVector<photon::PhotonTrackedTarget, 2> targets{
|
||||
// photon::PhotonTrackedTarget{
|
||||
// 3.0,
|
||||
// -4.0,
|
||||
// 9.0,
|
||||
// 4.0,
|
||||
// 1,
|
||||
// -1,
|
||||
// -1.0,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// -1,
|
||||
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7,
|
||||
// 8}}, {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6},
|
||||
// std::pair{7, 8}}},
|
||||
// photon::PhotonTrackedTarget{
|
||||
// 3.0,
|
||||
// -4.0,
|
||||
// 9.1,
|
||||
// 6.7,
|
||||
// -1,
|
||||
// -1,
|
||||
// -1.0,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// -1,
|
||||
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7,
|
||||
// 8}}, {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6},
|
||||
// std::pair{7, 8}}}};
|
||||
|
||||
photon::PhotonPipelineResult result2{0, 0_s, 12_ms, targets};
|
||||
// photon::PhotonPipelineResult result2{0, 0_s, 12_ms, targets};
|
||||
|
||||
proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
|
||||
wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result2);
|
||||
// proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
|
||||
// wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result2);
|
||||
|
||||
photon::PhotonPipelineResult unpacked_data2 =
|
||||
wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
|
||||
// photon::PhotonPipelineResult unpacked_data2 =
|
||||
// wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(result2, unpacked_data2);
|
||||
// EXPECT_EQ(result2, unpacked_data2);
|
||||
|
||||
photon::PNPResult pnpRes{
|
||||
true,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
0.1,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
0.1,
|
||||
0};
|
||||
// photon::PnpResult pnpRes{
|
||||
// true,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// 0.1,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// 0.1,
|
||||
// 0};
|
||||
|
||||
photon::MultiTargetPNPResult multitagRes{pnpRes, {1, 2, 3, 4}};
|
||||
// photon::MultiTargetPNPResult multitagRes{pnpRes, {1, 2, 3, 4}};
|
||||
|
||||
photon::PhotonPipelineResult result3{0, 0_s, 12_ms, targets, multitagRes};
|
||||
// photon::PhotonPipelineResult result3{0, 0_s, 12_ms, targets, multitagRes};
|
||||
|
||||
proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
|
||||
wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result3);
|
||||
// proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
|
||||
// wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result3);
|
||||
|
||||
photon::PhotonPipelineResult unpacked_data3 =
|
||||
wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
|
||||
// photon::PhotonPipelineResult unpacked_data3 =
|
||||
// wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(result3, unpacked_data3);
|
||||
}
|
||||
// EXPECT_EQ(result3, unpacked_data3);
|
||||
// }
|
||||
|
||||
@@ -20,30 +20,30 @@
|
||||
#include "photon/targeting/PhotonTrackedTarget.h"
|
||||
#include "photon/targeting/proto/PhotonTrackedTargetProto.h"
|
||||
|
||||
TEST(PhotonTrackedTargetTest, Roundtrip) {
|
||||
photon::PhotonTrackedTarget target{
|
||||
3.0,
|
||||
4.0,
|
||||
9.0,
|
||||
-5.0,
|
||||
-1,
|
||||
-1,
|
||||
-1.0,
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
-1,
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}};
|
||||
// TEST(PhotonTrackedTargetTest, Roundtrip) {
|
||||
// photon::PhotonTrackedTarget target{
|
||||
// 3.0,
|
||||
// 4.0,
|
||||
// 9.0,
|
||||
// -5.0,
|
||||
// -1,
|
||||
// -1,
|
||||
// -1.0,
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
|
||||
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
|
||||
// -1,
|
||||
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
|
||||
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}};
|
||||
|
||||
google::protobuf::Arena arena;
|
||||
google::protobuf::Message* proto =
|
||||
wpi::Protobuf<photon::PhotonTrackedTarget>::New(&arena);
|
||||
wpi::Protobuf<photon::PhotonTrackedTarget>::Pack(proto, target);
|
||||
// google::protobuf::Arena arena;
|
||||
// google::protobuf::Message* proto =
|
||||
// wpi::Protobuf<photon::PhotonTrackedTarget>::New(&arena);
|
||||
// wpi::Protobuf<photon::PhotonTrackedTarget>::Pack(proto, target);
|
||||
|
||||
photon::PhotonTrackedTarget unpacked_data =
|
||||
wpi::Protobuf<photon::PhotonTrackedTarget>::Unpack(*proto);
|
||||
// photon::PhotonTrackedTarget unpacked_data =
|
||||
// wpi::Protobuf<photon::PhotonTrackedTarget>::Unpack(*proto);
|
||||
|
||||
EXPECT_EQ(target, unpacked_data);
|
||||
}
|
||||
// EXPECT_EQ(target, unpacked_data);
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user