Skip to content

Commit

Permalink
2021 updates (#5)
Browse files Browse the repository at this point in the history
* Updating to new wpilib

* Adding 2021 fields and widget

* Changing strings to double arrays

* Removing azure pipelines

* Styleguide, code review

* Another cleanup
  • Loading branch information
pjreiniger authored Feb 23, 2021
1 parent 7a6082e commit 27afbf2
Show file tree
Hide file tree
Showing 68 changed files with 1,159 additions and 482 deletions.
23 changes: 23 additions & 0 deletions .run/Install 2021.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Install 2021" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/CoordinateGuiWidget2021" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="install_plugin" />
</list>
</option>
<option name="vmOptions" value="" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<method v="2" />
</configuration>
</component>
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public enum Unit
INCH, FEET, CENTIMETERS, METERS
}

private static final Unit DEFAULT_UNIT = Unit.FEET;
private static final Unit DEFAULT_UNIT = Unit.METERS;

private static double INCHES_PER_METER = 0.0254;
private static double FEET_PER_METER = 0.3048;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public enum OriginPosition
{
CenterField,
AlwaysIncreasing,
BottomLeft,
}

protected final Distance mXCenterFeet;
Expand All @@ -29,6 +30,7 @@ public enum OriginPosition
protected Scale mScale;

protected final Orientation mOrientation;
protected final OriginPosition mOriginPosition;

/**
* Constructor.
Expand All @@ -37,39 +39,55 @@ public enum OriginPosition
* @param aOrientation The orientation
* @param aOriginPosition Where the origin should be
*/
@SuppressWarnings("PMD.CyclomaticComplexity")
public PixelConverter(Distance aDimension1, Distance aDimension2, Orientation aOrientation, OriginPosition aOriginPosition)
{
Distance aFieldShortDimension;
Distance aFieldLongDimension;
aFieldShortDimension = aDimension1.as(CONVERSION_UNIT) > aDimension2.as(CONVERSION_UNIT) ? aDimension2 : aDimension1;
aFieldLongDimension = aDimension1.as(CONVERSION_UNIT) > aDimension2.as(CONVERSION_UNIT) ? aDimension1 : aDimension2;
mOrientation = aOrientation;
mOriginPosition = aOriginPosition;

if (aOrientation == Orientation.Landscape)
{
mHeightMultiplier = -1;
if (aOriginPosition == OriginPosition.CenterField)
switch (aOriginPosition)
{
case CenterField:
mHeightMultiplier = -1;
mXCenterFeet = Distance.divide(aFieldLongDimension, 2);
mYCenterFeet = Distance.divide(aFieldShortDimension, 2);
}
else
{
break;
case AlwaysIncreasing:
mHeightMultiplier = -1;
mXCenterFeet = aFieldLongDimension;
mYCenterFeet = aFieldShortDimension;
break;
case BottomLeft:
mHeightMultiplier = 1;
mXCenterFeet = aFieldLongDimension;
mYCenterFeet = Distance.mult(aFieldShortDimension, 1);
break;
default:
throw new IllegalArgumentException("Unknown origin " + aOriginPosition);
}
}
else
{
mHeightMultiplier = 1;
if (aOriginPosition == OriginPosition.CenterField)
switch (aOriginPosition)
{
case CenterField:
mXCenterFeet = Distance.divide(aFieldShortDimension, 2);
mYCenterFeet = Distance.divide(aFieldLongDimension, 2);
}
else
{
break;
case AlwaysIncreasing:
case BottomLeft:
mXCenterFeet = aFieldShortDimension;
mYCenterFeet = aFieldLongDimension;
break;
default:
throw new IllegalArgumentException("Unknown origin " + aOriginPosition);
}
}

Expand All @@ -92,7 +110,7 @@ public Position2dPixels convertDistanceToPixels(Position2dDistance aDistance)
Distance relativeY = Distance.subtract(mYCenterFeet, aDistance.mY);
double x = mWidthPixels - convertFeetToPixels(relativeX);
double y;
if (mOrientation == Orientation.Portrait)
if (mOrientation == Orientation.Portrait || mOriginPosition == OriginPosition.BottomLeft)
{
y = convertFeetToPixels(relativeY);
}
Expand Down
2 changes: 1 addition & 1 deletion CoordinateGuiCore/src/main/resources/log4j2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<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}"/>
</Console>

<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">
<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">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</Pattern>
</PatternLayout>
Expand Down
17 changes: 17 additions & 0 deletions CoordinateGuiCore2021/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

apply plugin: "java"

apply from: "$rootDir/shared_styleguide.gradle"

dependencies {
compile project("$coordinateGuiBase:CoordinateGuiCore")

compile 'org.apache.logging.log4j:log4j-api:2.11.0'
compile 'org.apache.logging.log4j:log4j-core:2.11.0'

compile "org.openjfx:javafx-base:11:" + getJavaFxPlatform()
compile "org.openjfx:javafx-graphics:11:" + getJavaFxPlatform()
compile "org.openjfx:javafx-controls:11:" + getJavaFxPlatform()
compile "org.openjfx:javafx-fxml:11:" + getJavaFxPlatform()

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import org.snobot.coordinate_gui.model.Distance;
import org.snobot.coordinate_gui.model.PixelConverter;
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;

public class BarrelPathController extends BaseGuiController
{
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-barrel.png";

private static final Distance LONG_DIM = Distance.fromFeet(30);
private static final Distance SHORT_DIM = Distance.fromFeet(15);

/**
* Constructor.
*/
public BarrelPathController()
{
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import org.snobot.coordinate_gui.model.Distance;
import org.snobot.coordinate_gui.model.PixelConverter;
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;

public class BouncPathController extends BaseGuiController
{
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-bounce.png";

private static final Distance LONG_DIM = Distance.fromFeet(30);
private static final Distance SHORT_DIM = Distance.fromFeet(15);

/**
* Constructor.
*/
public BouncPathController()
{
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import org.snobot.coordinate_gui.model.Distance;
import org.snobot.coordinate_gui.model.PixelConverter;
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;

public class GalacticSearchAController extends BaseGuiController
{
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-galacticsearcha.png";

private static final Distance LONG_DIM = Distance.fromFeet(30);
private static final Distance SHORT_DIM = Distance.fromFeet(15);

/**
* Constructor.
*/
public GalacticSearchAController()
{
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import org.snobot.coordinate_gui.model.Distance;
import org.snobot.coordinate_gui.model.PixelConverter;
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;

public class GalacticSearchBController extends BaseGuiController
{
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-galacticsearchb.png";

private static final Distance LONG_DIM = Distance.fromFeet(30);
private static final Distance SHORT_DIM = Distance.fromFeet(15);

/**
* Constructor.
*/
public GalacticSearchBController()
{
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import org.snobot.coordinate_gui.model.Distance;
import org.snobot.coordinate_gui.model.PixelConverter;
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;

public class InfiniteRechargeAtHomeController extends BaseGuiController
{
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-infinite-recharge.png";

private static final Distance LONG_DIM = Distance.fromFeet(52 + 5.25 / 12);
private static final Distance SHORT_DIM = Distance.fromFeet(26 + 11.25 / 12);

private static final Distance ROBOT_WIDTH = Distance.fromInches(36);
private static final Distance ROBOT_HEIGHT = Distance.fromInches(44);

/**
* Constructor.
*/
public InfiniteRechargeAtHomeController()
{
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, ROBOT_WIDTH, ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import org.snobot.coordinate_gui.model.Distance;

public class RobotDims
{

public static final Distance ROBOT_WIDTH = Distance.fromInches(36);
public static final Distance ROBOT_HEIGHT = Distance.fromInches(44);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import org.snobot.coordinate_gui.model.Distance;
import org.snobot.coordinate_gui.model.PixelConverter;
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;

public class SlalomPathController extends BaseGuiController
{
private static final String FIELD_IMAGE_PATH = "/org/snobot/coordinate_gui/game/infinite_recharge_at_home/2021-slalom.png";

private static final Distance LONG_DIM = Distance.fromFeet(30);
private static final Distance SHORT_DIM = Distance.fromFeet(15);

/**
* Constructor.
*/
public SlalomPathController()
{
super(FIELD_IMAGE_PATH, LONG_DIM, SHORT_DIM, RobotDims.ROBOT_WIDTH, RobotDims.ROBOT_HEIGHT, PixelConverter.Orientation.Landscape, PixelConverter.OriginPosition.BottomLeft);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package org.snobot.coordinate_gui.game.infinite_recharge_at_home;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import org.snobot.coordinate_gui.model.Coordinate;
import org.snobot.coordinate_gui.model.Distance;
import org.snobot.coordinate_gui.model.Position2dDistance;
import org.snobot.coordinate_gui.ui.layers.BaseGuiController;

import java.io.IOException;

public final class StandaloneMain
{
public static class PseudoMain extends Application
{

@Override
public void start(Stage aPrimaryStage) throws IOException
{
// FXMLLoader loader = new FXMLLoader(getClass().getResource("barrel_roll_field.fxml"));
// FXMLLoader loader = new FXMLLoader(getClass().getResource("bounce_field.fxml"));
// FXMLLoader loader = new FXMLLoader(getClass().getResource("galactic_search_a.fxml"));
// FXMLLoader loader = new FXMLLoader(getClass().getResource("galactic_search_b.fxml"));
// FXMLLoader loader = new FXMLLoader(getClass().getResource("infinite_recharge_field.fxml"));
FXMLLoader loader = new FXMLLoader(getClass().getResource("slalom_field.fxml"));

Pane root = loader.load();
BaseGuiController robotController = loader.getController();

Scene scene = new Scene(root);
aPrimaryStage.setScene(scene);

aPrimaryStage.show();


robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(0)), 0));
robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(30), Distance.fromFeet(0)), 0));
robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(30), Distance.fromFeet(15)), 0));
robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(15)), 0));

// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(0)), 0));
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(27), Distance.fromFeet(0)), 0));
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(52), Distance.fromFeet(0)), 0));
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(52), Distance.fromFeet(13.5)), 0));
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(52), Distance.fromFeet(26)), 0));
// robotController.addRobotPosition(new Coordinate(new Position2dDistance(Distance.fromFeet(0), Distance.fromFeet(26)), 0));
}
}

private StandaloneMain()
{

}

@SuppressWarnings("JavadocMethod")
public static void main(String[] aArgs)
{
// JavaFX 11+ uses GTK3 by default, and has problems on some display
// servers
// This flag forces JavaFX to use GTK2
// System.setProperty("jdk.gtk.version", "2");
Application.launch(PseudoMain.class, aArgs);
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.Group?>
<?import javafx.scene.layout.Pane?>

<Pane fx:id="mTopPane"
maxHeight="-Infinity"
maxWidth="-Infinity"
prefHeight="768.0"
prefWidth="1024.0"
xmlns="http://javafx.com/javafx/10.0.1"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="org.snobot.coordinate_gui.game.infinite_recharge_at_home.BarrelPathController">
<children>
<Group fx:id="mLayers">
<fx:include fx:id="mField" source="/org/snobot/coordinate_gui/ui/layers/field_layer.fxml" />
<fx:include fx:id="mIdealTrajectoryCoordinates" source="/org/snobot/coordinate_gui/ui/layers/coordinate_layer.fxml" />
<fx:include fx:id="mIdealRamseteCoordinates" source="/org/snobot/coordinate_gui/ui/layers/coordinate_layer.fxml" />
<fx:include fx:id="mTrajectoryConfig" source="/org/snobot/coordinate_gui/ui/layers/trajectory_config_layer.fxml" />
<fx:include fx:id="mGoToPosition" source="/org/snobot/coordinate_gui/ui/layers/go_to_position_layer.fxml" />
<fx:include fx:id="mRobotPosition" source="/org/snobot/coordinate_gui/ui/layers/robot_position_layer.fxml"/>
<fx:include fx:id="mCameraLayer" source="/org/snobot/coordinate_gui/ui/layers/camera_ray_layer.fxml" />
<fx:include fx:id="mFadingCoordinates" source="/org/snobot/coordinate_gui/ui/layers/coordinate_layer.fxml" />
<fx:include fx:id="mPurePursuit" source="/org/snobot/coordinate_gui/ui/layers/pure_pursuit_layer.fxml" />
</Group>
</children>
</Pane>
Loading

0 comments on commit 27afbf2

Please sign in to comment.