Skip to content

Commit 27afbf2

Browse files
authored
2021 updates (#5)
* Updating to new wpilib * Adding 2021 fields and widget * Changing strings to double arrays * Removing azure pipelines * Styleguide, code review * Another cleanup
1 parent 7a6082e commit 27afbf2

File tree

68 files changed

+1159
-482
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1159
-482
lines changed

.run/Install 2021.run.xml

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Install 2021" type="GradleRunConfiguration" factoryName="Gradle">
3+
<ExternalSystemSettings>
4+
<option name="executionName" />
5+
<option name="externalProjectPath" value="$PROJECT_DIR$/CoordinateGuiWidget2021" />
6+
<option name="externalSystemIdString" value="GRADLE" />
7+
<option name="scriptParameters" value="" />
8+
<option name="taskDescriptions">
9+
<list />
10+
</option>
11+
<option name="taskNames">
12+
<list>
13+
<option value="install_plugin" />
14+
</list>
15+
</option>
16+
<option name="vmOptions" value="" />
17+
</ExternalSystemSettings>
18+
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
19+
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
20+
<DebugAllEnabled>false</DebugAllEnabled>
21+
<method v="2" />
22+
</configuration>
23+
</component>

CoordinateGuiCore/src/main/java/org/snobot/coordinate_gui/model/Distance.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public enum Unit
1010
INCH, FEET, CENTIMETERS, METERS
1111
}
1212

13-
private static final Unit DEFAULT_UNIT = Unit.FEET;
13+
private static final Unit DEFAULT_UNIT = Unit.METERS;
1414

1515
private static double INCHES_PER_METER = 0.0254;
1616
private static double FEET_PER_METER = 0.3048;

CoordinateGuiCore/src/main/java/org/snobot/coordinate_gui/model/PixelConverter.java

+28-10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public enum OriginPosition
1616
{
1717
CenterField,
1818
AlwaysIncreasing,
19+
BottomLeft,
1920
}
2021

2122
protected final Distance mXCenterFeet;
@@ -29,6 +30,7 @@ public enum OriginPosition
2930
protected Scale mScale;
3031

3132
protected final Orientation mOrientation;
33+
protected final OriginPosition mOriginPosition;
3234

3335
/**
3436
* Constructor.
@@ -37,39 +39,55 @@ public enum OriginPosition
3739
* @param aOrientation The orientation
3840
* @param aOriginPosition Where the origin should be
3941
*/
42+
@SuppressWarnings("PMD.CyclomaticComplexity")
4043
public PixelConverter(Distance aDimension1, Distance aDimension2, Orientation aOrientation, OriginPosition aOriginPosition)
4144
{
4245
Distance aFieldShortDimension;
4346
Distance aFieldLongDimension;
4447
aFieldShortDimension = aDimension1.as(CONVERSION_UNIT) > aDimension2.as(CONVERSION_UNIT) ? aDimension2 : aDimension1;
4548
aFieldLongDimension = aDimension1.as(CONVERSION_UNIT) > aDimension2.as(CONVERSION_UNIT) ? aDimension1 : aDimension2;
4649
mOrientation = aOrientation;
50+
mOriginPosition = aOriginPosition;
51+
4752
if (aOrientation == Orientation.Landscape)
4853
{
49-
mHeightMultiplier = -1;
50-
if (aOriginPosition == OriginPosition.CenterField)
54+
switch (aOriginPosition)
5155
{
56+
case CenterField:
57+
mHeightMultiplier = -1;
5258
mXCenterFeet = Distance.divide(aFieldLongDimension, 2);
5359
mYCenterFeet = Distance.divide(aFieldShortDimension, 2);
54-
}
55-
else
56-
{
60+
break;
61+
case AlwaysIncreasing:
62+
mHeightMultiplier = -1;
5763
mXCenterFeet = aFieldLongDimension;
5864
mYCenterFeet = aFieldShortDimension;
65+
break;
66+
case BottomLeft:
67+
mHeightMultiplier = 1;
68+
mXCenterFeet = aFieldLongDimension;
69+
mYCenterFeet = Distance.mult(aFieldShortDimension, 1);
70+
break;
71+
default:
72+
throw new IllegalArgumentException("Unknown origin " + aOriginPosition);
5973
}
6074
}
6175
else
6276
{
6377
mHeightMultiplier = 1;
64-
if (aOriginPosition == OriginPosition.CenterField)
78+
switch (aOriginPosition)
6579
{
80+
case CenterField:
6681
mXCenterFeet = Distance.divide(aFieldShortDimension, 2);
6782
mYCenterFeet = Distance.divide(aFieldLongDimension, 2);
68-
}
69-
else
70-
{
83+
break;
84+
case AlwaysIncreasing:
85+
case BottomLeft:
7186
mXCenterFeet = aFieldShortDimension;
7287
mYCenterFeet = aFieldLongDimension;
88+
break;
89+
default:
90+
throw new IllegalArgumentException("Unknown origin " + aOriginPosition);
7391
}
7492
}
7593

@@ -92,7 +110,7 @@ public Position2dPixels convertDistanceToPixels(Position2dDistance aDistance)
92110
Distance relativeY = Distance.subtract(mYCenterFeet, aDistance.mY);
93111
double x = mWidthPixels - convertFeetToPixels(relativeX);
94112
double y;
95-
if (mOrientation == Orientation.Portrait)
113+
if (mOrientation == Orientation.Portrait || mOriginPosition == OriginPosition.BottomLeft)
96114
{
97115
y = convertFeetToPixels(relativeY);
98116
}

CoordinateGuiCore/src/main/resources/log4j2.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<PatternLayout pattern="%highlight{%d{yyyy-MM-dd HH:mm:ss} %-5p %c:%L - %m%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/>
77
</Console>
88

9-
<RollingFile name="SnobotSimRollingFile" fileName="${sys:user.home}/ShuffleBoard/snobot_sim/${date:yyyyMMdd_HHmmss}.log" filePattern="logs/snobot_sim/${date:yyyy-MMdd_HHmm}/app-%d{yyyy-MMdd_HHmm}-%i.log.gz">
9+
<RollingFile name="SnobotSimRollingFile" fileName="${sys:user.home}/Shuffleboard/snobot_sim/${date:yyyyMMdd_HHmmss}.log" filePattern="logs/snobot_sim/${date:yyyy-MMdd_HHmm}/app-%d{yyyy-MMdd_HHmm}-%i.log.gz">
1010
<PatternLayout>
1111
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</Pattern>
1212
</PatternLayout>

CoordinateGuiCore2021/build.gradle

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
apply plugin: "java"
3+
4+
apply from: "$rootDir/shared_styleguide.gradle"
5+
6+
dependencies {
7+
compile project("$coordinateGuiBase:CoordinateGuiCore")
8+
9+
compile 'org.apache.logging.log4j:log4j-api:2.11.0'
10+
compile 'org.apache.logging.log4j:log4j-core:2.11.0'
11+
12+
compile "org.openjfx:javafx-base:11:" + getJavaFxPlatform()
13+
compile "org.openjfx:javafx-graphics:11:" + getJavaFxPlatform()
14+
compile "org.openjfx:javafx-controls:11:" + getJavaFxPlatform()
15+
compile "org.openjfx:javafx-fxml:11:" + getJavaFxPlatform()
16+
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import org.snobot.coordinate_gui.model.Distance;
4+
import org.snobot.coordinate_gui.model.PixelConverter;
5+
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;
6+
7+
public class BarrelPathController extends BaseGuiController
8+
{
9+
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-barrel.png";
10+
11+
private static final Distance LONG_DIM = Distance.fromFeet(30);
12+
private static final Distance SHORT_DIM = Distance.fromFeet(15);
13+
14+
/**
15+
* Constructor.
16+
*/
17+
public BarrelPathController()
18+
{
19+
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import org.snobot.coordinate_gui.model.Distance;
4+
import org.snobot.coordinate_gui.model.PixelConverter;
5+
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;
6+
7+
public class BouncPathController extends BaseGuiController
8+
{
9+
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-bounce.png";
10+
11+
private static final Distance LONG_DIM = Distance.fromFeet(30);
12+
private static final Distance SHORT_DIM = Distance.fromFeet(15);
13+
14+
/**
15+
* Constructor.
16+
*/
17+
public BouncPathController()
18+
{
19+
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import org.snobot.coordinate_gui.model.Distance;
4+
import org.snobot.coordinate_gui.model.PixelConverter;
5+
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;
6+
7+
public class GalacticSearchAController extends BaseGuiController
8+
{
9+
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-galacticsearcha.png";
10+
11+
private static final Distance LONG_DIM = Distance.fromFeet(30);
12+
private static final Distance SHORT_DIM = Distance.fromFeet(15);
13+
14+
/**
15+
* Constructor.
16+
*/
17+
public GalacticSearchAController()
18+
{
19+
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import org.snobot.coordinate_gui.model.Distance;
4+
import org.snobot.coordinate_gui.model.PixelConverter;
5+
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;
6+
7+
public class GalacticSearchBController extends BaseGuiController
8+
{
9+
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-galacticsearchb.png";
10+
11+
private static final Distance LONG_DIM = Distance.fromFeet(30);
12+
private static final Distance SHORT_DIM = Distance.fromFeet(15);
13+
14+
/**
15+
* Constructor.
16+
*/
17+
public GalacticSearchBController()
18+
{
19+
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import org.snobot.coordinate_gui.model.Distance;
4+
import org.snobot.coordinate_gui.model.PixelConverter;
5+
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;
6+
7+
public class InfiniteRechargeAtHomeController extends BaseGuiController
8+
{
9+
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-infinite-recharge.png";
10+
11+
private static final Distance LONG_DIM = Distance.fromFeet(52 + 5.25 / 12);
12+
private static final Distance SHORT_DIM = Distance.fromFeet(26 + 11.25 / 12);
13+
14+
private static final Distance ROBOT_WIDTH = Distance.fromInches(36);
15+
private static final Distance ROBOT_HEIGHT = Distance.fromInches(44);
16+
17+
/**
18+
* Constructor.
19+
*/
20+
public InfiniteRechargeAtHomeController()
21+
{
22+
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, ROBOT_WIDTH, ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import org.snobot.coordinate_gui.model.Distance;
4+
5+
public class RobotDims
6+
{
7+
8+
public static final Distance ROBOT_WIDTH = Distance.fromInches(36);
9+
public static final Distance ROBOT_HEIGHT = Distance.fromInches(44);
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import org.snobot.coordinate_gui.model.Distance;
4+
import org.snobot.coordinate_gui.model.PixelConverter;
5+
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;
6+
7+
public class SlalomPathController extends BaseGuiController
8+
{
9+
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-slalom.png";
10+
11+
private static final Distance LONG_DIM = Distance.fromFeet(30);
12+
private static final Distance SHORT_DIM = Distance.fromFeet(15);
13+
14+
/**
15+
* Constructor.
16+
*/
17+
public SlalomPathController()
18+
{
19+
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;
2+
3+
import javafx.application.Application;
4+
import javafx.fxml.FXMLLoader;
5+
import javafx.scene.Scene;
6+
import javafx.scene.layout.Pane;
7+
import javafx.stage.Stage;
8+
import org.snobot.coordinate_gui.model.Coordinate;
9+
import org.snobot.coordinate_gui.model.Distance;
10+
import org.snobot.coordinate_gui.model.Position2dDistance;
11+
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;
12+
13+
import java.io.IOException;
14+
15+
public final class StandaloneMain
16+
{
17+
public static class PseudoMain extends Application
18+
{
19+
20+
@Override
21+
public void start(Stage aPrimaryStage) throws IOException
22+
{
23+
// FXMLLoader loader = new FXMLLoader(getClass().getResource("barrel_roll_field.fxml"));
24+
// FXMLLoader loader = new FXMLLoader(getClass().getResource("bounce_field.fxml"));
25+
// FXMLLoader loader = new FXMLLoader(getClass().getResource("galactic_search_a.fxml"));
26+
// FXMLLoader loader = new FXMLLoader(getClass().getResource("galactic_search_b.fxml"));
27+
// FXMLLoader loader = new FXMLLoader(getClass().getResource("infinite_recharge_field.fxml"));
28+
FXMLLoader loader = new FXMLLoader(getClass().getResource("slalom_field.fxml"));
29+
30+
Pane root = loader.load();
31+
BaseGuiController robotController = loader.getController();
32+
33+
Scene scene = new Scene(root);
34+
aPrimaryStage.setScene(scene);
35+
36+
aPrimaryStage.show();
37+
38+
39+
robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(0)), 0));
40+
robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(30), Distance.fromFeet(0)), 0));
41+
robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(30), Distance.fromFeet(15)), 0));
42+
robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(15)), 0));
43+
44+
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(0)), 0));
45+
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(27), Distance.fromFeet(0)), 0));
46+
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(52), Distance.fromFeet(0)), 0));
47+
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(52), Distance.fromFeet(13.5)), 0));
48+
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(52), Distance.fromFeet(26)), 0));
49+
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(26)), 0));
50+
}
51+
}
52+
53+
private StandaloneMain()
54+
{
55+
56+
}
57+
58+
@SuppressWarnings("JavadocMethod")
59+
public static void main(String[] aArgs)
60+
{
61+
// JavaFX 11+ uses GTK3 by default, and has problems on some display
62+
// servers
63+
// This flag forces JavaFX to use GTK2
64+
// System.setProperty("jdk.gtk.version", "2");
65+
Application.launch(PseudoMain.class, aArgs);
66+
}
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import javafx.scene.Group?>
4+
<?import javafx.scene.layout.Pane?>
5+
6+
<Pane fx:id="mTopPane"
7+
maxHeight="-Infinity"
8+
maxWidth="-Infinity"
9+
prefHeight="768.0"
10+
prefWidth="1024.0"
11+
xmlns="http://javafx.com/javafx/10.0.1"
12+
xmlns:fx="http://javafx.com/fxml/1"
13+
fx:controller="org.snobot.coordinate_gui.game.infinite_recharge_at_home.BarrelPathController">
14+
<children>
15+
<Group fx:id="mLayers">
16+
<fx:include fx:id="mField" source="/org/snobot/coordinate_gui/ui/layers/field_layer.fxml" />
17+
<fx:include fx:id="mIdealTrajectoryCoordinates" source="/org/snobot/coordinate_gui/ui/layers/coordinate_layer.fxml" />
18+
<fx:include fx:id="mIdealRamseteCoordinates" source="/org/snobot/coordinate_gui/ui/layers/coordinate_layer.fxml" />
19+
<fx:include fx:id="mTrajectoryConfig" source="/org/snobot/coordinate_gui/ui/layers/trajectory_config_layer.fxml" />
20+
<fx:include fx:id="mGoToPosition" source="/org/snobot/coordinate_gui/ui/layers/go_to_position_layer.fxml" />
21+
<fx:include fx:id="mRobotPosition" source="/org/snobot/coordinate_gui/ui/layers/robot_position_layer.fxml"/>
22+
<fx:include fx:id="mCameraLayer" source="/org/snobot/coordinate_gui/ui/layers/camera_ray_layer.fxml" />
23+
<fx:include fx:id="mFadingCoordinates" source="/org/snobot/coordinate_gui/ui/layers/coordinate_layer.fxml" />
24+
<fx:include fx:id="mPurePursuit" source="/org/snobot/coordinate_gui/ui/layers/pure_pursuit_layer.fxml" />
25+
</Group>
26+
</children>
27+
</Pane>

0 commit comments

Comments
 (0)