mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-03 03:01:40 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e58c27caa2 | ||
|
|
f6e3c9b3ee | ||
|
|
88ed2ebf51 | ||
|
|
5f39123bde | ||
|
|
37a7d378fd |
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -397,7 +397,7 @@ jobs:
|
|||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
artifact-name: LinuxArm64
|
artifact-name: LinuxArm64
|
||||||
image_suffix: limelight
|
image_suffix: limelight
|
||||||
image_url: https://api.github.com/repos/photonvision/photon-pi-gen/releases/tags/v2023.1.1_limelight-arm64
|
image_url: https://api.github.com/repos/photonvision/photon-pi-gen/releases/tags/v2023.2.2_limelight-arm64
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
name: "Build image - ${{ matrix.image_url }}"
|
name: "Build image - ${{ matrix.image_url }}"
|
||||||
|
|||||||
@@ -142,8 +142,8 @@ public class NTDataPublisher implements CVPipelineResultConsumer {
|
|||||||
|
|
||||||
ts.rawBytesEntry.set(packet.getData());
|
ts.rawBytesEntry.set(packet.getData());
|
||||||
|
|
||||||
ts.pipelineIndexPublisher.setDefault(pipelineIndexSupplier.get());
|
ts.pipelineIndexPublisher.set(pipelineIndexSupplier.get());
|
||||||
ts.driverModePublisher.setDefault(driverModeSupplier.getAsBoolean());
|
ts.driverModePublisher.set(driverModeSupplier.getAsBoolean());
|
||||||
ts.latencyMillisEntry.set(result.getLatencyMillis());
|
ts.latencyMillisEntry.set(result.getLatencyMillis());
|
||||||
ts.hasTargetEntry.set(result.hasTargets());
|
ts.hasTargetEntry.set(result.hasTargets());
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ public class VisionModule {
|
|||||||
new NTDataPublisher(
|
new NTDataPublisher(
|
||||||
visionSource.getSettables().getConfiguration().nickname,
|
visionSource.getSettables().getConfiguration().nickname,
|
||||||
pipelineManager::getCurrentPipelineIndex,
|
pipelineManager::getCurrentPipelineIndex,
|
||||||
pipelineManager::setIndex,
|
this::setPipeline,
|
||||||
pipelineManager::getDriverMode,
|
pipelineManager::getDriverMode,
|
||||||
this::setDriverMode);
|
this::setDriverMode);
|
||||||
uiDataConsumer = new UIDataPublisher(index);
|
uiDataConsumer = new UIDataPublisher(index);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
apply plugin: 'maven-publish'
|
apply plugin: 'maven-publish'
|
||||||
|
|
||||||
ext.licenseFile = files("$rootDir/LICENSE.txt")
|
ext.licenseFile = files("$rootDir/LICENSE")
|
||||||
|
ext.photonVersionFile = files("$projectDir/src/generate/native/include")
|
||||||
|
|
||||||
def outputsFolder = file("$buildDir/outputs")
|
def outputsFolder = file("$buildDir/outputs")
|
||||||
def allOutputsFolder = file("$buildDir/allOutputs")
|
def allOutputsFolder = file("$buildDir/allOutputs")
|
||||||
@@ -54,15 +55,19 @@ task cppHeadersZip(type: Zip) {
|
|||||||
into '/'
|
into '/'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
from(photonVersionFile) {
|
||||||
|
into '/'
|
||||||
|
}
|
||||||
|
|
||||||
from('src/main/native/include/') {
|
from('src/main/native/include/') {
|
||||||
into '/'
|
into '/'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task cppSourceZip(type: Zip) {
|
task cppSourcesZip(type: Zip) {
|
||||||
destinationDirectory = outputsFolder
|
destinationDirectory = outputsFolder
|
||||||
archiveBaseName = zipBaseName
|
archiveBaseName = zipBaseName
|
||||||
classifier = "source"
|
classifier = "sources"
|
||||||
|
|
||||||
from(licenseFile) {
|
from(licenseFile) {
|
||||||
into '/'
|
into '/'
|
||||||
@@ -75,8 +80,8 @@ task cppSourceZip(type: Zip) {
|
|||||||
|
|
||||||
build.dependsOn cppHeadersZip
|
build.dependsOn cppHeadersZip
|
||||||
addTaskToCopyAllOutputs(cppHeadersZip)
|
addTaskToCopyAllOutputs(cppHeadersZip)
|
||||||
build.dependsOn cppSourceZip
|
build.dependsOn cppSourcesZip
|
||||||
addTaskToCopyAllOutputs(cppSourceZip)
|
addTaskToCopyAllOutputs(cppSourcesZip)
|
||||||
|
|
||||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||||
classifier = 'sources'
|
classifier = 'sources'
|
||||||
@@ -162,7 +167,7 @@ model {
|
|||||||
artifact it
|
artifact it
|
||||||
}
|
}
|
||||||
artifact cppHeadersZip
|
artifact cppHeadersZip
|
||||||
artifact cppSourceZip
|
artifact cppSourcesZip
|
||||||
|
|
||||||
artifactId = "${baseArtifactId}-cpp"
|
artifactId = "${baseArtifactId}-cpp"
|
||||||
groupId artifactGroupId
|
groupId artifactGroupId
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
package org.photonvision;
|
package org.photonvision;
|
||||||
|
|
||||||
import edu.wpi.first.networktables.BooleanEntry;
|
|
||||||
import edu.wpi.first.networktables.BooleanPublisher;
|
import edu.wpi.first.networktables.BooleanPublisher;
|
||||||
import edu.wpi.first.networktables.BooleanSubscriber;
|
import edu.wpi.first.networktables.BooleanSubscriber;
|
||||||
import edu.wpi.first.networktables.DoubleArrayPublisher;
|
import edu.wpi.first.networktables.DoubleArrayPublisher;
|
||||||
@@ -50,7 +49,6 @@ public class PhotonCamera {
|
|||||||
|
|
||||||
protected final NetworkTable rootTable;
|
protected final NetworkTable rootTable;
|
||||||
RawSubscriber rawBytesEntry;
|
RawSubscriber rawBytesEntry;
|
||||||
BooleanEntry driverModeEntry;
|
|
||||||
BooleanPublisher driverModePublisher;
|
BooleanPublisher driverModePublisher;
|
||||||
BooleanSubscriber driverModeSubscriber;
|
BooleanSubscriber driverModeSubscriber;
|
||||||
DoublePublisher latencyMillisEntry;
|
DoublePublisher latencyMillisEntry;
|
||||||
@@ -67,7 +65,6 @@ public class PhotonCamera {
|
|||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
rawBytesEntry.close();
|
rawBytesEntry.close();
|
||||||
driverModeEntry.close();
|
|
||||||
driverModePublisher.close();
|
driverModePublisher.close();
|
||||||
driverModeSubscriber.close();
|
driverModeSubscriber.close();
|
||||||
latencyMillisEntry.close();
|
latencyMillisEntry.close();
|
||||||
@@ -121,7 +118,8 @@ public class PhotonCamera {
|
|||||||
.getRawTopic("rawBytes")
|
.getRawTopic("rawBytes")
|
||||||
.subscribe(
|
.subscribe(
|
||||||
"rawBytes", new byte[] {}, PubSubOption.periodic(0.01), PubSubOption.sendAll(true));
|
"rawBytes", new byte[] {}, PubSubOption.periodic(0.01), PubSubOption.sendAll(true));
|
||||||
driverModeEntry = rootTable.getBooleanTopic("driverMode").getEntry(false);
|
driverModePublisher = rootTable.getBooleanTopic("driverMode").publish();
|
||||||
|
driverModeSubscriber = rootTable.getBooleanTopic("driverModeRequest").subscribe(false);
|
||||||
inputSaveImgEntry = rootTable.getIntegerTopic("inputSaveImgCmd").getEntry(0);
|
inputSaveImgEntry = rootTable.getIntegerTopic("inputSaveImgCmd").getEntry(0);
|
||||||
outputSaveImgEntry = rootTable.getIntegerTopic("outputSaveImgCmd").getEntry(0);
|
outputSaveImgEntry = rootTable.getIntegerTopic("outputSaveImgCmd").getEntry(0);
|
||||||
pipelineIndexEntry = rootTable.getIntegerTopic("pipelineIndex").getEntry(0);
|
pipelineIndexEntry = rootTable.getIntegerTopic("pipelineIndex").getEntry(0);
|
||||||
@@ -179,7 +177,7 @@ public class PhotonCamera {
|
|||||||
* @return Whether the camera is in driver mode.
|
* @return Whether the camera is in driver mode.
|
||||||
*/
|
*/
|
||||||
public boolean getDriverMode() {
|
public boolean getDriverMode() {
|
||||||
return driverModeEntry.get(false);
|
return driverModeSubscriber.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -188,7 +186,7 @@ public class PhotonCamera {
|
|||||||
* @param driverMode Whether to set driver mode.
|
* @param driverMode Whether to set driver mode.
|
||||||
*/
|
*/
|
||||||
public void setDriverMode(boolean driverMode) {
|
public void setDriverMode(boolean driverMode) {
|
||||||
driverModeEntry.set(driverMode);
|
driverModePublisher.set(driverMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -41,8 +41,7 @@ PhotonCamera::PhotonCamera(nt::NetworkTableInstance instance,
|
|||||||
rootTable(mainTable->GetSubTable(cameraName)),
|
rootTable(mainTable->GetSubTable(cameraName)),
|
||||||
rawBytesEntry(
|
rawBytesEntry(
|
||||||
rootTable->GetRawTopic("rawBytes")
|
rootTable->GetRawTopic("rawBytes")
|
||||||
.Subscribe("raw", {}, {.periodic = 0.01, .sendAll = true})),
|
.Subscribe("rawBytes", {}, {.periodic = 0.01, .sendAll = true})),
|
||||||
driverModeEntry(rootTable->GetBooleanTopic("driverMode").Publish()),
|
|
||||||
inputSaveImgEntry(
|
inputSaveImgEntry(
|
||||||
rootTable->GetIntegerTopic("inputSaveImgCmd").Publish()),
|
rootTable->GetIntegerTopic("inputSaveImgCmd").Publish()),
|
||||||
inputSaveImgSubscriber(
|
inputSaveImgSubscriber(
|
||||||
@@ -56,6 +55,8 @@ PhotonCamera::PhotonCamera(nt::NetworkTableInstance instance,
|
|||||||
versionEntry(mainTable->GetStringTopic("version").Subscribe("")),
|
versionEntry(mainTable->GetStringTopic("version").Subscribe("")),
|
||||||
driverModeSubscriber(
|
driverModeSubscriber(
|
||||||
rootTable->GetBooleanTopic("driverMode").Subscribe(false)),
|
rootTable->GetBooleanTopic("driverMode").Subscribe(false)),
|
||||||
|
driverModePublisher(
|
||||||
|
rootTable->GetBooleanTopic("driverModeRequest").Publish()),
|
||||||
pipelineIndexSubscriber(
|
pipelineIndexSubscriber(
|
||||||
rootTable->GetIntegerTopic("pipelineIndex").Subscribe(-1)),
|
rootTable->GetIntegerTopic("pipelineIndex").Subscribe(-1)),
|
||||||
ledModeSubscriber(mainTable->GetIntegerTopic("ledMode").Subscribe(0)),
|
ledModeSubscriber(mainTable->GetIntegerTopic("ledMode").Subscribe(0)),
|
||||||
@@ -92,7 +93,7 @@ PhotonPipelineResult PhotonCamera::GetLatestResult() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PhotonCamera::SetDriverMode(bool driverMode) {
|
void PhotonCamera::SetDriverMode(bool driverMode) {
|
||||||
driverModeEntry.Set(driverMode);
|
driverModePublisher.Set(driverMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhotonCamera::TakeInputSnapshot() {
|
void PhotonCamera::TakeInputSnapshot() {
|
||||||
|
|||||||
@@ -168,7 +168,6 @@ class PhotonCamera {
|
|||||||
std::shared_ptr<nt::NetworkTable> mainTable;
|
std::shared_ptr<nt::NetworkTable> mainTable;
|
||||||
std::shared_ptr<nt::NetworkTable> rootTable;
|
std::shared_ptr<nt::NetworkTable> rootTable;
|
||||||
nt::RawSubscriber rawBytesEntry;
|
nt::RawSubscriber rawBytesEntry;
|
||||||
nt::BooleanPublisher driverModeEntry;
|
|
||||||
nt::IntegerPublisher inputSaveImgEntry;
|
nt::IntegerPublisher inputSaveImgEntry;
|
||||||
nt::IntegerSubscriber inputSaveImgSubscriber;
|
nt::IntegerSubscriber inputSaveImgSubscriber;
|
||||||
nt::IntegerPublisher outputSaveImgEntry;
|
nt::IntegerPublisher outputSaveImgEntry;
|
||||||
@@ -178,6 +177,7 @@ class PhotonCamera {
|
|||||||
nt::StringSubscriber versionEntry;
|
nt::StringSubscriber versionEntry;
|
||||||
|
|
||||||
nt::BooleanSubscriber driverModeSubscriber;
|
nt::BooleanSubscriber driverModeSubscriber;
|
||||||
|
nt::BooleanPublisher driverModePublisher;
|
||||||
nt::IntegerSubscriber pipelineIndexSubscriber;
|
nt::IntegerSubscriber pipelineIndexSubscriber;
|
||||||
nt::IntegerSubscriber ledModeSubscriber;
|
nt::IntegerSubscriber ledModeSubscriber;
|
||||||
|
|
||||||
|
|||||||
@@ -75,9 +75,11 @@ public class NTTopicSet {
|
|||||||
pipelineIndexPublisher = pipelineIndexTopic.publish();
|
pipelineIndexPublisher = pipelineIndexTopic.publish();
|
||||||
pipelineIndexSubscriber = pipelineIndexTopic.subscribe(0);
|
pipelineIndexSubscriber = pipelineIndexTopic.subscribe(0);
|
||||||
|
|
||||||
driverModeEntry = subTable.getBooleanTopic("driverMode");
|
driverModePublisher = subTable.getBooleanTopic("driverMode").publish();
|
||||||
driverModePublisher = driverModeEntry.publish();
|
driverModeSubscriber = subTable.getBooleanTopic("driverModeRequest").subscribe(false);
|
||||||
driverModeSubscriber = driverModeEntry.subscribe(false);
|
|
||||||
|
// Fun little hack to make the request show up
|
||||||
|
driverModeSubscriber.getTopic().publish().setDefault(false);
|
||||||
|
|
||||||
latencyMillisEntry = subTable.getDoubleTopic("latencyMillis").publish();
|
latencyMillisEntry = subTable.getDoubleTopic("latencyMillis").publish();
|
||||||
hasTargetEntry = subTable.getBooleanTopic("hasTarget").publish();
|
hasTargetEntry = subTable.getBooleanTopic("hasTarget").publish();
|
||||||
|
|||||||
Reference in New Issue
Block a user