Git Product home page Git Product logo

snobotsim's Introduction

Appveyor Build status Travis Build Status codecov

SnobotSim

Join the chat at https://gitter.im/SnobotSim/Lobby SnobotSim is a java-based simulator that can simulate FRC Robots written in Java, with incubating support for C++ and Python.

Check out the Release Notes to keep up with all the updates and bug fixes going on throughout the season.

Features

  • Simple physics based motor simulations
  • Feedback Sensor simulation (AnalogIO, DigitalIO, Encoders, Gyros)
  • NavX Simulation for the 3-axis Gyro and 3-axis Accelerometers
  • CTRE CanTalon and Pigeon IMU simulations. Due to the incredble power of this speed control, I cannot guarantee that all features will work, even if they appear to. It covers most of the control modes, but without something to test against your mileage might vary.
  • Open to extension for custom I2C, SPI, Potentiometer, Motors servo'd by limit switches, etc. Hopefully anything you need!

Contributing

If you need any help with simulator, check the wiki. If that doesn't help, DM me on ChiefDelphi, pjreiniger

If something doesn't seem like its working, create an issue here and I will try to make a patch for you

If you find a bug you can fix, don't like how I did something, or want to add an improvment, create a Pull Request and help make the project better.

Documentation

Check out the wiki for how to set up and use the simulator, or these examples for how you might want to set things up.

snobotsim's People

Contributors

dependabot-preview[bot] avatar gitter-badger avatar pjreiniger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

snobotsim's Issues

CTRE Issue

Error Message: java.lang.UnsatisfiedLinkError: com.ctre.phoenix.motorcontrol.can.MotControllerJNI.Set_4(JIDDI)V java.lang.UnsatisfiedLinkError: com.ctre.phoenix.motorcontrol.can.MotControllerJNI.Set_4(JIDDI)V

This is normally resolved by running Lifeboat with the RIO connected to the computer. Is there a way to do it here?

CANSparkMax simulation usage

The 2019-1.0.0 version says "Added ability to simulate REV CANSparkMax", however, I cannot get this simulation work. When I installed the vendor libraries of REV CANSparkMax and ran the task "./gradlew runJavaSnoborSim", the error comes as follow:
java.io.IOException: SparkMaxDriver could not be loaded from path or an embedded resource. attempted to load for platform /windows/x86-64/

I also tried the vendor libraries example, and it works fine. When I tried to install and add the SparkMax vendor libraries, the same error appears.

Look forward to your reply,
Thanks

Gradle 5

hello pjreinger

i must start by saying that the "simulation" is better than all the other simulation available right now.
and i must ask if you would update the simulation to gradle 5?

moreover i have problems setting my own robot main in the simulation.

thanks and have a nice day
ofek eshet

Having problems while download with Gradle

Hey,
while trying to run SnobotSim with Gradle in IntelliJ IDEA with .\gradlew runSnobotSim, I get this error:

Could not get unknown property 'snobotSimJ' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

This is our build.gradle file:

plugins {
    id 'java'
    id "edu.wpi.first.GradleRIO" version "2018.06.21"
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2018-1.0.0"
}

group 'Robot'
version '1.0'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile wpilib()
    compile ctre()
    compile navx()
    testCompile snobotSimCompile()
    testCompile snobotSimJ avaCompile()
}

def ROBOT_CLASS = "robot.Robot"

deploy {
    targets {
        target("roborio", edu.wpi.first.gradlerio.frc.RoboRIO) {
            // Team can be overridden by command line, for use with VSCode
            team = getTeamOrDefault(5987)
        }
    }
    artifacts {
        artifact('frcJava', edu.wpi.first.gradlerio.frc.FRCJavaArtifact) {
            targets << "roborio"
            // Debug can be overridden by command line, for use with VSCode
            debug = getDebugOrDefault(false)
        }
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.9'
}

compileJava {
    classpath = sourceSets.main.compileClasspath
    options.encoding = 'UTF-8'
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

jar {
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_CLASS)
}

If I change the version to the latest one, I get the following error:

Could not find edu.wpi.first.wpiutil:wpiutil-cpp:2019.1.1-beta-1.
Searched in the following locations:
  - http://raw.githubusercontent.com/pjreiniger/maven_repo/master/edu/wpi/first/wpiutil/wpiutil-cpp/2019.1.1-beta-1/wpiutil-cpp-2019.1.1-beta-1.pom
  - http://raw.githubusercontent.com/pjreiniger/maven_repo/master/edu/wpi/first/wpiutil/wpiutil-cpp/2019.1.1-beta-1/wpiutil-cpp-2019.1.1-beta-1-windowsx86-64.zip
  - file:/C:/Users/user/.m2/repository/edu/wpi/first/wpiutil/wpiutil-cpp/2019.1.1-beta-1/wpiutil-cpp-2019.1.1-beta-1.pom
  - file:/C:/Users/user/.m2/repository/edu/wpi/first/wpiutil/wpiutil-cpp/2019.1.1-beta-1/wpiutil-cpp-2019.1.1-beta-1-windowsx86-64.zip
  - https://repo.maven.apache.org/maven2/edu/wpi/first/wpiutil/wpiutil-cpp/2019.1.1-beta-1/wpiutil-cpp-2019.1.1-beta-1.pom
  - https://repo.maven.apache.org/maven2/edu/wpi/first/wpiutil/wpiutil-cpp/2019.1.1-beta-1/wpiutil-cpp-2019.1.1-beta-1-windowsx86-64.zip
Required by:
    project :  // I don't know why there is nothing here after the colon

What am I doing wrong? Thank you!

Unsatisfied Link Using CTRE Phoenix (WPI_TalonSRX) calls

Any hope of getting mocks for CTRE?

MoveForward

19:35:48.724 [RobotThread] FATAL com.snobot.simulator.Simulator - Unsatisfied link error. This likely means that there is a native call in WpiLib or the NetworkTables libraries. Please tell PJ so he can mock it out.

Error Message: java.lang.UnsatisfiedLinkError: com.ctre.phoenix.motorcontrol.can.MotControllerJNI.Set_4(JIDDI)V
java.lang.UnsatisfiedLinkError: com.ctre.phoenix.motorcontrol.can.MotControllerJNI.Set_4(JIDDI)V
at com.ctre.phoenix.motorcontrol.can.MotControllerJNI.Set_4(Native Method) ~[ButtonMadness.jar:?]
at com.ctre.phoenix.motorcontrol.can.BaseMotorController.set(BaseMotorController.java:156) ~[ButtonMadness.jar:?]
at com.ctre.phoenix.motorcontrol.can.BaseMotorController.set(BaseMotorController.java:94) ~[ButtonMadness.jar:?]
at com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX.set(WPI_TalonSRX.java:68) ~[ButtonMadness.jar:?]
at com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX.set(WPI_TalonSRX.java:46) ~[ButtonMadness.jar:?]
at frc.robot.DriveSubsystem.driveForward(DriveSubsystem.java:46) ~[ButtonMadness.jar:?]
at frc.robot.MoveForward.execute(MoveForward.java:23) ~[ButtonMadness.jar:?]
at edu.wpi.first.wpilibj.command.Command.run(Command.java:238) ~[ButtonMadness.jar:?]
at edu.wpi.first.wpilibj.command.Scheduler.run(Scheduler.java:220) ~[ButtonMadness.jar:?]
at frc.robot.Robot.teleopPeriodic(Robot.java:142) ~[ButtonMadness.jar:?]
at edu.wpi.first.wpilibj.IterativeRobotBase.loopFunc(IterativeRobotBase.java:213) ~[ButtonMadness.jar:?]
at edu.wpi.first.wpilibj.IterativeRobot.startCompetition(IterativeRobot.java:41) ~[ButtonMadness.jar:?]
at com.snobot.simulator.robot_container.JavaRobotContainer.startCompetition(JavaRobotContainer.java:32) ~[snobot_sim_gui-0.11.0-all.jar:?]
at com.snobot.simulator.Simulator$2.run(Simulator.java:318) [snobot_sim_gui-0.11.0-all.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]

Smart Dashboard?

Is there support for displaying the smart dashboard?
To me this is an important feature given the lack of a graphical robot.

Failed to acquire device error for HID touchpad

Describe the bug
Using SnobotSim from VSCode with GradleRio. I do a WPILib command: Run a command in Gradle, then type runJavaSnobotSim.
This works when I have the example robot class defined, but not frc.robot.Robot.
When using the real class it fails to acquire my touch-pad device.
I'm wondering if there is a work-around.

Quick Glance Configuration
Please provide the following information

  1. SnobotSimPlugin version : "2019-0.2.0"
  2. SnobotSim version 2019
  3. GradleRIO version "2019.2.1"
  4. Your Operating System: Windows x86-64
  5. If your project is open source and you don't mind, a link to your repository
    I could add you to the project if needed, or send you a zip.

To Reproduce
Please information on when the issue occurs, and/or what you did to cause the issue to surface. i.e.

  • Does the issue happen during compilation (gradlew build)?
    No
  • Does the issue happen when simulating from the command line (gradlew runSnobotSim)?
    Actually, runJavaSnobotSim
  • Does the issue happen on startup (unsatisfied link, class not found, NPE, etc)?
    Yes
  • Does the issue happen while running (When we try to use a joystick..., when we put it in auton..., etc)?
    No

Expected behavior
To be able to run SnobotSim

Detailed Setup
Please provide your full build.gradle file, and a stack trace if applicable. Please put them in code or quote blocks so it is easier to read (put the text in ``)
"
plugins {
id "java"
id "edu.wpi.first.GradleRIO" version "2019.2.1"
id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2019-0.2.0" apply false // Should point to the latest version at https://login.gradle.org/plugin/com.snobot.simulator.plugin.SnobotSimulatorPlugin
}

def ROBOT_MAIN_CLASS = "frc.robot.Main"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
targets {
roboRIO("roborio") {
// Team number is loaded either from the .wpilib/wpilib_preferences.json
// or from command line. If not found an exception will be thrown.
// You can use getTeamOrDefault(team) instead of getTeamNumber if you
// want to store a team number in this file.
team = frc.getTeamNumber()
}
}
artifacts {
frcJavaArtifact('frcJava') {
targets << "roborio"
// Debug can be overridden by command line, for use with VSCode
debug = frc.getDebugOrDefault(false)
}
// Built in artifact to deploy arbitrary files to the roboRIO.
fileTreeArtifact('frcStaticFileDeploy') {
// The directory below is the local directory to deploy
files = fileTree(dir: 'src/main/deploy')
// Deploy to RoboRIO target, into /home/lvuser/deploy
targets << "roborio"
directory = '/home/lvuser/deploy'
}
}
}

// Set this to true to enable desktop support.
def includeDesktopSupport = false

// Maven central needed for JUnit
repositories {
mavenCentral()
}

apply plugin: com.snobot.simulator.plugin.SnobotSimulatorPlugin

configurations {
snobotSimCompile
}

// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
// Also defines JUnit 4.
dependencies {
compile wpi.deps.wpilib()
compile wpi.deps.vendor.java()
nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)
testCompile 'junit:junit:4.12'

// SnobotSim
snobotSimCompile snobotSimJava()

}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
}
"
Additional context
2019-01-31 10:40:30 INFO com.snobot.simulator.config.v1.SimulatorConfigReaderV1:71 - Loading C:\Users\crozeboom\Documents\GitHub\DeepSpace-2019\DeepSpace-2019\simulator_config\simulator_config.yml
Jan 31, 2019 10:40:31 AM net.java.games.input.ControllerEnvironment log
INFO: Failed to initialize device Synaptics HID-Compliant Touch pad Device because of: java.io.IOException: Failed to acquire device (8007001e)

2019-01-31 10:40:31 INFO com.snobot.simulator.Simulator:216 - Starting Robot Code
2019-01-31 10:40:31 INFO com.snobot.simulator.Simulator:307 - Starting simulator

FAILURE: Build failed with an exception.

Simulator is not building

Describe the bug
Describe the issue you are seeing with the simulator

Quick Glance Configuration
Please provide the following information

  1. SnobotSimPlugin version - 2019-0.2.0
  2. SnobotSim version - ?
  3. GradleRIO version - 2019.2.1
  4. Windows 10

To Reproduce
Please information on when the issue occurs, and/or what you did to cause the issue to surface. i.e.

  • Does the issue happen during compilation (gradlew build)? yes
  • Does the issue happen when simulating from the command line (gradlew runSnobotSim)? yes
  • Does the issue happen on startup (unsatisfied link, class not found, NPE, etc)? - cannot reach this setp
  • Does the issue happen while running (When we try to use a joystick..., when we put it in auton..., etc)? - cannot reach this setp

Expected behavior
The code will build

Detailed Setup

plugins {
    id "java"
    id "edu.wpi.first.GradleRIO" version "2019.2.1"
    // id "jaci.openrio.gradle.GradleRIO" version "2018.01.06"// Should point to the at https://login.gradle.org/plugin/jaci.openrio.gradle.GradleRIO
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2019-0.2.0" apply false
}

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

def ROBOT_MAIN_CLASS = "frc.robot.Main"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        roboRIO("roborio") {
            // Team number is loaded either from the .wpilib/wpilib_preferences.json
            // or from command line. If not found an exception will be thrown.
            // You can use getTeamOrDefault(team) instead of getTeamNumber if you
            // want to store a team number in this file.
            team = frc.getTeamNumber()
        }
    }
    artifacts {
        frcJavaArtifact('frcJava') {
            targets << "roborio"
            // Debug can be overridden by command line, for use with VSCode
            debug = frc.getDebugOrDefault(false)
        }
        // Built in artifact to deploy arbitrary files to the roboRIO.
        fileTreeArtifact('frcStaticFileDeploy') {
            // The directory below is the local directory to deploy
            files = fileTree(dir: 'src/main/deploy')
            // Deploy to RoboRIO target, into /home/lvuser/deploy
            targets << "roborio"
            directory = '/home/lvuser/deploy'
        }
    }
}

// Set this to true to enable desktop support.
def includeDesktopSupport = false
apply plugin: com.snobot.simulator.plugin.SnobotSimulatorPlugin
configurations {
    snobotSimCompile
}
// Maven central needed for JUnit
repositories {
    mavenCentral()
}

// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
// Also defines JUnit 4.
dependencies {
    compile wpi.deps.wpilib()
    compile wpi.deps.vendor.java()
    nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
    nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)
    testCompile 'junit:junit:4.12'

    testCompile snobotSimCompile()
    testCompile snobotSimJavaCompile()
}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
}

Stacktrace:

.\gradlew build --stacktrace

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\Reali\Desktop\test\eya\build.gradle' line: 62

* What went wrong:
A problem occurred evaluating root project 'eya'.
> Could not find method snobotSimCompile() for arguments [] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'eya'.
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:206)
        at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:211)
        at org.gradle.configuration.BuildOperationScriptPlugin$1$1.run(BuildOperationScriptPlugin.java:69)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:66)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:63)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:48)
        at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:63)
        at org.gradle.configuration.project.BuildScriptProcessor$1.run(BuildScriptProcessor.java:44)
        at org.gradle.internal.Factories$1.create(Factories.java:25)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:200)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:186)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:41)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject$1.run(LifecycleProjectEvaluator.java:107)
        at org.gradle.internal.Factories$1.create(Factories.java:25)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:226)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:220)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:186)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:96)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:68)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:687)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:140)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:41)
        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:286)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:194)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:133)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:79)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:76)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:103)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:96)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:76)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:49)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method snobotSimCompile() for arguments [] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
        at org.gradle.internal.metaobject.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:179)
        at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:87)
        at build_4vhn2o0fs69ybkmiy1hisreg8$_run_closure4.doCall(C:\Users\Reali\Desktop\test\eya\build.gradle:62)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:70)
        at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:105)
        at org.gradle.api.internal.project.DefaultProject.dependencies(DefaultProject.java:1182)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
        at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
        at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
        at org.gradle.internal.metaobject.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:30)
        at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:133)
        at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:160)
        at org.gradle.groovy.scripts.BasicScript.invokeMethod(BasicScript.java:82)
        at build_4vhn2o0fs69ybkmiy1hisreg8.run(C:\Users\Reali\Desktop\test\eya\build.gradle:55)
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
        ... 115 more


* Get more help at https://help.gradle.org

Why is the simulator not building?
Thanks a lot!

Encoder getRate not working

When I try to use encoder.getrate() it returns a constant number around ~4.08. every other encoder function works however. I can get the distance and pulse count from each, and the gyro simulation works perfectly. What is there to do about this?

Gradle `simulate` task fails

The gradle simulate task doesn't work, looks like there is a configuration missing for snobotSimLibs.

This is my build.gradle setup:

plugins {
    id "java"
    id "jaci.openrio.gradle.GradleRIO" version "2018.03.06"
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2018.05.23" // Should point to the latest version at https://login.gradle.org/plugin/com.snobot.simulator.plugin.SnobotSimulatorPlugin
}

apply plugin: com.snobot.simulator.plugin.SnobotSimulatorPlugin

def TEAM = 0000
def ROBOT_CLASS = "frc.team0000.robot.Robot"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        target("roborio", jaci.openrio.gradle.frc.RoboRIO) {
            team = TEAM
        }
    }
    artifacts {
        artifact('frcJava', jaci.openrio.gradle.frc.FRCJavaArtifact) {
            targets << "roborio"
        }
    }
}


// Defining my dependencies. In this case, WPILib (+ friends), CTRE Phoenix (Talon SRX)
// and NavX.
dependencies {
    compile wpilib()
    compile ctre()
    compile navx()
    compile openrio.powerup.matchData()

    testCompile snobotSimCompile()
    testCompile snobotSimJavaCompile()
}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    manifest jaci.openrio.gradle.GradleRIOPlugin.javaManifest(ROBOT_CLASS)
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
}

// SnobotSim
build.dependsOn snobotSimUnzipNativeTools

And the result of running gradle simulate is:

> Configure project :
Eclipse not configured, will not update classpath


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':simulate'.
> Configuration with name 'snobotSimLibs' not found.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.5.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 2s
1 actionable task: 1 executed

This appears to be the same issue as: #14

Problems with the HAT switch on Logitech Extreme 3D Pro Joystick

Describe the bug
On the Logitech Extreme 3D Pro Joystick, there is a HAT (POV) switch on the top of the joystick. In the WPILIB code, it returns the angle that it is pressed at, in degrees. However, in SnobotSim, it is represented as a button, that is on when it displaced from its origin, and off otherwise. This is inaccurate, and the addition of a button throws off all other button ports on the Joystick by 1.

Also, the Y- and X- axes of the joystick are reversed. I don't know how to configure this through the setup.

Quick Glance Configuration
Please provide the following information

  1. SnobotSimPlugin version - "2019-0.2.0"
  2. SnobotSim version - 2019-0.0.1-RC
  3. GradleRIO version - "2019.1.1"
  4. I am using 64-bit Windows 10.
  5. I am testing this using a modified version of JavaExample on Snobot sim examples.

To Reproduce

package frc.robot;

import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.TimedRobot;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

public class Robot extends TimedRobot
{
    private final Joystick mJoystick = new Joystick(0);

    public Robot() {}

    @Override
    public void teleopPeriodic()
    {
        for(int i = 1; i<= 12; i++){
            SmartDashboard.putBoolean("Button " + i, mJoystick.getRawButton(i));
        }

        SmartDashboard.putNumber("Joystick Y", mJoystick.getY());
        SmartDashboard.putNumber("Joystick X", mJoystick.getX());
    }
}

Then just look in the SmartDashboard.

Expected behavior
mJoystick.getPOV() should return a clockwise angle of the HAT switch's angle, or -1 if it isn't pressed. Currently the POV just doesn't exist in code.

Detailed Setup

plugins {
    id "java"
    id "edu.wpi.first.GradleRIO" version "2019.1.1"
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2019-0.2.0" apply false
}

def ROBOT_MAIN_CLASS = "frc.robot.Main"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        roboRIO("roborio") {
            // Team number is loaded either from the .wpilib/wpilib_preferences.json
            // or from command line. If not found an exception will be thrown.
            // You can use getTeamOrDefault(team) instead of getTeamNumber if you
            // want to store a team number in this file.
            team = frc.getTeamNumber()
        }
    }
    artifacts {
        frcJavaArtifact('frcJava') {
            targets << "roborio"
            // Debug can be overridden by command line, for use with VSCode
            debug = frc.getDebugOrDefault(false)
        }
        // Built in artifact to deploy arbitrary files to the roboRIO.
        fileTreeArtifact('frcStaticFileDeploy') {
            // The directory below is the local directory to deploy
            files = fileTree(dir: 'src/main/deploy')
            // Deploy to RoboRIO target, into /home/lvuser/deploy
            targets << "roborio"
            directory = '/home/lvuser/deploy'
        }
    }
}

// Set this to true to enable desktop support.
def includeDesktopSupport = true

// Maven central needed for JUnit
repositories {
    mavenCentral()
}

/////////////////////////////////////////////////////
// Snobot Sim

apply plugin: com.snobot.simulator.plugin.SnobotSimulatorPlugin

configurations {
    snobotSimCompile
}

// This isn't necessary, but running analysis on your code is a good idea. If you do it, the files should probably be in your project dir,
// but since this is shared I have it in a more centralized location
apply from: "../styleguide/java_style.gradle"
// End Snobot Sim
/////////////////////////////////////////////////////

// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
// Also defines JUnit 4.
dependencies {
    compile wpi.deps.wpilib()
    compile wpi.deps.vendor.java()
    nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
    nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)
    testCompile 'junit:junit:4.12'

    snobotSimCompile snobotSimJava()
}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
}

Additional context
I understand that you may not have the joystick physically present. If so, how would I set up the Joystick software myself?

No encoders showing up by default

Are encoders generated by default or do they have to be added manually?

ERROR CtreManager:227 - Unknown motor callback: GetQuadraturePosition

Will the Eclipse option work on Linux

I followed the instructions on the wiki to see how it would run but I am getting jni errors on ubuntu.
Stack trace is below. Don't want to blow time if this is a windows only option as I see the native-windows jar in the quickstart

2018-01-17 14:31:16 FATAL JniLibraryResourceLoader:93 - Could not find resource at /linux/x86-64/libwpiutil.so
2018-01-17 14:31:16 FATAL JniLibraryResourceLoader:93 - Could not find resource at /linux/x86-64/libwpiHal.so
2018-01-17 14:31:16 FATAL JniLibraryResourceLoader:93 - Could not find resource at /linux/x86-64/libhalsim_adx_gyro_accelerometer.so
2018-01-17 14:31:16 FATAL JniLibraryResourceLoader:93 - Could not find resource at /linux/x86-64/libnavx_simulator.so
2018-01-17 14:31:16 FATAL JniLibraryResourceLoader:93 - Could not find resource at /linux/x86-64/libCtreMockHooks.so
2018-01-17 14:31:16 FATAL JniLibraryResourceLoader:93 - Could not find resource at /linux/x86-64/libsnobotSimJavaJni.so
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.snobot.simulator.jni.RegisterCallbacksJni.resetWpiHal()V
at com.snobot.simulator.jni.RegisterCallbacksJni.resetWpiHal(Native Method)
at com.snobot.simulator.jni.RegisterCallbacksJni.reset(RegisterCallbacksJni.java:19)
at com.snobot.simulator.jni.BaseSnobotJni.(BaseSnobotJni.java:16)
at com.snobot.simulator.wrapper_accessors.java.JavaDataAccessor.(JavaDataAccessor.java:31)
at com.snobot.simulator.DefaultDataAccessorFactory.initalize(DefaultDataAccessorFactory.java:20)
at com.snobot.simulator.Main.main(Main.java:28)

In addition the instructions mention the simulator_config.properties but that file is not in the quickstart, I think I can make one up from looking in the code, just did not see one.

GradleRIO install failing

Hello,

I'm running into some issues with the GradleRIO install of SnobotSim.

I've followed the install instructions on the wiki, mainly, adding the line to the plugins block, as well as the testCompile lines to my build.gradle file.

When running ./gradlew build initially, I get the output below:

./gradlew build                                                                                                           
Download https://plugins.gradle.org/m2/com/snobot/simulator/plugin/SnobotSimulatorPlugin/com.snobot.simulator.plugin.SnobotSimulatorPlugin.gradle.plugin/2018.01.01/com.snobot.simulator.plugin.SnobotSimulatorPlugin.gradle.plugin-2018.01.01.pom
Download https://plugins.gradle.org/m2/gradle/plugin/com/snobot/simulator/plugin/SnobotSimulatorPlugin/2018.01.01/SnobotSimulatorPlugin-2018.01.01.pom
Download https://plugins.gradle.org/m2/gradle/plugin/com/snobot/simulator/plugin/SnobotSimulatorPlugin/2018.01.01/SnobotSimulatorPlugin-2018.01.01.jar
Download https://plugins.gradle.org/m2/net/java/jinput/jinput/2.0.7/jinput-2.0.7.pom
Download https://plugins.gradle.org/m2/net/java/jutils/jutils/1.0.0/jutils-1.0.0.pom
Download https://plugins.gradle.org/m2/net/java/jinput/jinput-platform/2.0.7/jinput-platform-2.0.7.pom
Download https://plugins.gradle.org/m2/net/java/jinput/jinput-platform/2.0.7/jinput-platform-2.0.7-natives-linux.jar
Download https://plugins.gradle.org/m2/net/java/jinput/jinput-platform/2.0.7/jinput-platform-2.0.7-natives-osx.jar
Download https://plugins.gradle.org/m2/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar
Download https://plugins.gradle.org/m2/net/java/jinput/jinput-platform/2.0.7/jinput-platform-2.0.7-natives-windows.jar
Download https://plugins.gradle.org/m2/net/java/jinput/jinput/2.0.7/jinput-2.0.7.jar

> Configure project : 
Eclipse not configured, will not update classpath

Following that, I ran ./gradlew eclipse to generate the eclipse project. Output is below:

./gradlew eclipse                                                                                                       

> Configure project : 
Eclipse not configured, will not update classpath

Download http://first.wpi.edu/FRC/roborio/maven/release/org/opencv/opencv-jni/maven-metadata.xml
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/ntcore/ntcore-jni/maven-metadata.xml
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/ntcore/ntcore-jni/4.0.0/ntcore-jni-4.0.0.pom
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/cscore/cscore-jni/maven-metadata.xml
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/cscore/cscore-jni/1.1.0/cscore-jni-1.1.0.pom
Download https://plugins.gradle.org/m2/jfree/jfreechart/1.0.13/jfreechart-1.0.13.pom
Download https://plugins.gradle.org/m2/log4j/log4j/1.2.16/log4j-1.2.16.pom
Download https://plugins.gradle.org/m2/com/miglayout/miglayout-swing/4.2/miglayout-swing-4.2.pom
Download https://plugins.gradle.org/m2/com/miglayout/miglayout-core/4.2/miglayout-core-4.2.pom
Download https://plugins.gradle.org/m2/jfree/jcommon/1.0.16/jcommon-1.0.16.pom
Download https://plugins.gradle.org/m2/org/yaml/snakeyaml/1.18/snakeyaml-1.18.pom
Download https://plugins.gradle.org/m2/com/miglayout/miglayout-parent/4.2/miglayout-parent-4.2.pom
Download https://plugins.gradle.org/m2/jfree/jfreechart/1.0.13/jfreechart-1.0.13.jar
Download https://plugins.gradle.org/m2/jfree/jcommon/1.0.16/jcommon-1.0.16.jar
Download https://plugins.gradle.org/m2/log4j/log4j/1.2.16/log4j-1.2.16.jar
Download https://plugins.gradle.org/m2/org/yaml/snakeyaml/1.18/snakeyaml-1.18.jar
Download https://plugins.gradle.org/m2/com/miglayout/miglayout-swing/4.2/miglayout-swing-4.2.jar
Download https://plugins.gradle.org/m2/com/miglayout/miglayout-core/4.2/miglayout-core-4.2.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/org/opencv/opencv-jni/3.2.0/opencv-jni-3.2.0-all.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/ntcore/ntcore-jni/4.0.0/ntcore-jni-4.0.0-all.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/cscore/cscore-jni/1.1.0/cscore-jni-1.1.0-all.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/wpilibj/wpilibj-java/2018.1.1/wpilibj-java-2018.1.1-sources.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/ntcore/ntcore-java/4.0.0/ntcore-java-4.0.0-sources.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/wpiutil/wpiutil-java/3.0.0/wpiutil-java-3.0.0-sources.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/org/opencv/opencv-java/3.2.0/opencv-java-3.2.0-sources.jar
Download http://first.wpi.edu/FRC/roborio/maven/release/edu/wpi/first/cscore/cscore-java/1.1.0/cscore-java-1.1.0-sources.jar
Download https://raw.githubusercontent.com/Open-RIO/Maven-Mirror/master/m2/openrio/mirror/third/ctre/CTRE-phoenix-java/5.1.2.1/CTRE-phoenix-java-5.1.2.1-sources.jar
Download https://raw.githubusercontent.com/Open-RIO/Maven-Mirror/master/m2/openrio/mirror/third/kauailabs/navx-java/3.0.342/navx-java-3.0.342-sources.jar
Download http://dev.imjac.in/maven/openrio/powerup/MatchData/2018.01.07/MatchData-2018.01.07-sources.jar
Download https://plugins.gradle.org/m2/jfree/jcommon/1.0.16/jcommon-1.0.16-sources.jar
Download https://plugins.gradle.org/m2/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar
Download https://plugins.gradle.org/m2/org/yaml/snakeyaml/1.18/snakeyaml-1.18-sources.jar
Download https://plugins.gradle.org/m2/com/miglayout/miglayout-swing/4.2/miglayout-swing-4.2-sources.jar
Download https://plugins.gradle.org/m2/com/miglayout/miglayout-core/4.2/miglayout-core-4.2-sources.jar
Download https://plugins.gradle.org/m2/net/java/jinput/jinput/2.0.7/jinput-2.0.7-sources.jar
Download https://plugins.gradle.org/m2/net/java/jutils/jutils/1.0.0/jutils-1.0.0-sources.jar

> Task :eclipseClasspath 
Could not resolve: com.snobot.simulator:snobot_sim_gui:0.6.0
Could not resolve: com.snobot.simulator:ctre_override:0.6.0
Could not resolve: com.snobot.simulator:snobot_sim_java:0.6.0

Now, the eclipse project opens fine, though I can't get the simulator started while following the Run As instructions for Eclipse; the package for SnobotSim does not show up in the search box for Java Applications in Eclipse.

I've duplicated this on both Windows 10 and Ubuntu 16.04.3. I'd love to get the programmers on my team using this sim before our drive base is built - it looks really well put together.

Thanks for your help! I've included my build.gradle file below.

plugins {
    id "java"
    id "eclipse"
    id "idea"
    id "jaci.openrio.gradle.GradleRIO" version "2018.01.07"
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2018.01.01"
}

def TEAM = 5805
def ROBOT_CLASS = "frc.team5805.robot.Robot"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        target("roborio", jaci.openrio.gradle.frc.RoboRIO) {
            team = TEAM
        }
    }
    artifacts {
        artifact('frcJava', jaci.openrio.gradle.frc.FRCJavaArtifact) {
            targets << "roborio"
        }
    }
}

// Defining my dependencies. In this case, WPILib (+ friends), CTRE Toolsuite (Talon SRX)
// and NavX.
dependencies {
    compile wpilib()
    compile ctre()
    compile navx()
    compile openrio.powerup.matchData()

    testCompile snobotSimCompile()
    testCompile snobotSimJavaCompile()
}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    manifest jaci.openrio.gradle.GradleRIOPlugin.javaManifest(ROBOT_CLASS)
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
}

build.dependsOn snobotSimUnzipNativeTools

CTRE Units are terrible

We hooked up our TalonSRX's today, and as one would have expected if I read the CTRE documentation, the units are way, way off. I will make a release to address this. We still have a lot more testing we will do with our real robot, but I thought I should throw this issue out there in case anyone else has noticed it.

Build Failure

Describe the bug
I followed the setup page, and when running the gradlew runSnobotSim command, I get a build failure error. One line seemed to catch my eye:

15:51:36.001 [main] FATAL com.snobot.simulator.Main - Unsatisfied link error.  This likely means that there is a native call in WpiLib or the NetworkTables libraries.  Please tell PJ so he can mock it out.

Quick Glance Configuration
Please provide the following information

  1. SnobotSimPlugin version "2018.05.23"
  2. SnobotSim version ??
  3. GradleRIO version 2019.0.0-alpha-3
  4. Your Operating System. Windows 10
  5. N/A

To Reproduce
Please information on when the issue occurs, and/or what you did to cause the issue to surface. i.e.
The issue happens when simulating from the command line (gradlew runSnobotSim) and the error message states that ther is an unsatisfied link.

Expected behavior
I expect the command to run successfully.

Detailed Setup

Gradle File
plugins {
    id "java"
    id "eclipse"
    id "edu.wpi.first.GradleRIO" version "2019.0.0-alpha-3"
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2018.05.23"// Should point to the latest version at https://login.gradle.org/plugin/com.snobot.simulator.plugin.SnobotSimulatorPlugin
}

def ROBOT_CLASS = "org.usfirst.frc.team1683.robot.Robot"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        target("roborio", edu.wpi.first.gradlerio.frc.RoboRIO) {
            // Team number is loaded either from the .wpilib/wpilib_preferences.json
            // or from command line. If not found an exception will be thrown.
            // You can use getTeamOrDefault(team) instead of getTeamNumber if you
            // want to store a team number in this file.
            team = getTeamNumber()
        }
    }
    artifacts {
        artifact('frcJava', edu.wpi.first.gradlerio.frc.FRCJavaArtifact) {
            targets << "roborio"
            // Debug can be overridden by command line, for use with VSCode
            debug = getDebugOrDefault(false)
        }
    }
}

// Defining my dependencies. In this case, WPILib (+ friends), CTRE Toolsuite (Talon SRX)
// and NavX.
dependencies {
    compile wpilib()
    compile ctre()
    compile navx()
    testCompile snobotSimCompile()
    testCompile snobotSimJavaCompile()
}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_CLASS)
}

// Force Java 8 Compatibility mode for deployed code, in case the develoment
// system is using Java 10.
compileJava {
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
}

wrapper {
    gradleVersion = '4.9'
}
Stack Trace
> Task :runSnobotSim FAILED
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\com.snobot.simulator\snobot_sim_gui\0.11.0\e1a97cc451c5fddf77085a07846bd882b1f2e188\snobot_sim_gui-0.11.0-all.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\jfree\jcommon\1.0.16\376f19a7c317509a57dfc684cdfd4081db7c082c\jcommon-1.0.16.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\jfree\jfreechart\1.0.13\b5fbdc552c4caec3dac4b4dcbc10d119a194946e\jfreechart-1.0.13.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.11.0\bede79a3f150711634a3047985517431bf6499f2\log4j-api-2.11.0.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.11.0\e6b751e02120c08702d98750f6a80bc25343b7f5\log4j-core-2.11.0.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.18\e4a441249ade301985cb8d009d4e4a72b85bf68e\snakeyaml-1.18.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\com.miglayout\miglayout-swing\4.2\ca85067488e79a2078ba4eb8e2617653e9172388\miglayout-swing-4.2.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\com.miglayout\miglayout-core\4.2\70f2bfa2a077ee1632cc8229deffa1d942825c78\miglayout-core-4.2.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\org.opencv\opencv-jni\3.2.0\5c6a5b457a6a4071007cf53b8bab479933e01327\opencv-jni-3.2.0-all.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.7\7795d3dbbcfecd03e3d2bf964b04c0cd042415f7\jinput-2.0.7.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\com.snobot.simulator\snobot_sim_java\0.11.0\e0bd8716659eba70a05c773e1f768a5f493349d5\snobot_sim_java-0.11.0-uber_native-windows.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\edu.wpi.first.ntcore\ntcore-jni\2019.1.1-beta-2\ae15a1e70f5cabfc517e96e9336dc114111abfcb\ntcore-jni-2019.1.1-beta-2-all.jar;
  C:\Users\lux\.gradle\caches\modules-2\files-2.1\edu.wpi.first.cscore\cscore-jni\2019.1.1-beta-2\1868c45b57df8e3c0864f39b7d4c6f47386057e4\cscore-jni-2019.1.1-beta-2-all.jar;
Info    C:/projects/snobotsim/snobot_sim_java/cpp/lib/SnobotSimJava/Jni/RegisterCallbacksJni.cpp:32 - Initializing the simulator
15:51:36.001 [main] FATAL com.snobot.simulator.Main - Unsatisfied link error.  This likely means that there is a native call in WpiLib or the NetworkTables libraries.  Please tell PJ so he can mock it out.

Error Message: java.lang.UnsatisfiedLinkError: no ntcore in java.library.path
java.lang.UnsatisfiedLinkError: no ntcore in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) ~[?:1.8.0_144]
        at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[?:1.8.0_144]
        at java.lang.System.loadLibrary(System.java:1122) ~[?:1.8.0_144]
        at edu.wpi.first.networktables.NetworkTablesJNI.<clinit>(NetworkTablesJNI.java:53) ~[TitanWare2018Grits.jar:?]
        at edu.wpi.first.networktables.NetworkTableInstance.getDefault(NetworkTableInstance.java:88) ~[TitanWare2018Grits.jar:?]
        at edu.wpi.first.wpilibj.DriverStation$MatchDataSender.<init>(DriverStation.java:106) ~[TitanWare2018Grits.jar:?]
        at edu.wpi.first.wpilibj.DriverStation.<init>(DriverStation.java:210) ~[TitanWare2018Grits.jar:?]
        at edu.wpi.first.wpilibj.DriverStation.<clinit>(DriverStation.java:128) ~[TitanWare2018Grits.jar:?]
        at edu.wpi.first.wpilibj.RobotBase.initializeHardwareConfiguration(RobotBase.java:180) ~[TitanWare2018Grits.jar:?]
        at com.snobot.simulator.robot_container.JavaRobotContainer.constructRobot(JavaRobotContainer.java:25) ~[snobot_sim_gui-0.11.0-all.jar:?]
        at com.snobot.simulator.Simulator.createRobot(Simulator.java:171) ~[snobot_sim_gui-0.11.0-all.jar:?]
        at com.snobot.simulator.Simulator.loadConfig(Simulator.java:133) ~[snobot_sim_gui-0.11.0-all.jar:?]
        at com.snobot.simulator.Simulator.startSimulation(Simulator.java:220) ~[snobot_sim_gui-0.11.0-all.jar:?]
        at com.snobot.simulator.Main.main(Main.java:50) [snobot_sim_gui-0.11.0-all.jar:?]

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':runSnobotSim'.
> Process 'command 'java'' finished with non-zero exit value -1

Could not get unknown property Linux

Having trouble trying with the runSnobotSim task. When that task is run I just get "Could not get unknown property 'Jvm' for task ':runSnobotSim' of type org.gradle.api.DefaultTask".

Full Gradle output:
`
Task :runSnobotSim FAILED
/home/rommac100/.gradle/caches/modules-2/files-2.1/com.snobot.simulator/snobot_sim_gui/0.11.0/e1a97cc451c5fddf77085a07846bd882b1f2e188/snobot_sim_gui-0.11.0-all.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/jfree/jcommon/1.0.16/376f19a7c317509a57dfc684cdfd4081db7c082c/jcommon-1.0.16.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/jfree/jfreechart/1.0.13/b5fbdc552c4caec3dac4b4dcbc10d119a194946e/jfreechart-1.0.13.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.11.0/bede79a3f150711634a3047985517431bf6499f2/log4j-api-2.11.0.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.11.0/e6b751e02120c08702d98750f6a80bc25343b7f5/log4j-core-2.11.0.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.18/e4a441249ade301985cb8d009d4e4a72b85bf68e/snakeyaml-1.18.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/com.miglayout/miglayout-swing/4.2/ca85067488e79a2078ba4eb8e2617653e9172388/miglayout-swing-4.2.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/com.miglayout/miglayout-core/4.2/70f2bfa2a077ee1632cc8229deffa1d942825c78/miglayout-core-4.2.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/org.opencv/opencv-jni/3.2.0/5c6a5b457a6a4071007cf53b8bab479933e01327/opencv-jni-3.2.0-all.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput/2.0.7/7795d3dbbcfecd03e3d2bf964b04c0cd042415f7/jinput-2.0.7.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/net.java.jutils/jutils/1.0.0/e12fe1fda814bd348c1579329c86943d2cd3c6a6/jutils-1.0.0.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/com.snobot.simulator/snobot_sim_java/0.11.0/b0b55cf7d5b24462425441334eb87ffc08d73bdc/snobot_sim_java-0.11.0-uber_native-linux.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/edu.wpi.first.ntcore/ntcore-jni/4.1.0/c1ad0b0938157416131580a988e5e7c2e976c983/ntcore-jni-4.1.0-all.jar;
/home/rommac100/.gradle/caches/modules-2/files-2.1/edu.wpi.first.cscore/cscore-jni/1.3.0/9a49af3f76e0122517f53a65b2cd73c6452c0a9/cscore-jni-1.3.0-all.jar;

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':runSnobotSim'.

Could not get unknown property 'Jvm' for task ':runSnobotSim' of type org.gradle.api.DefaultTask.
`

Gradle:
`plugins {
id "java"
id "jaci.openrio.gradle.GradleRIO" version "2018.03.06"// Should point to the at https://login.gradle.org/plugin/jaci.openrio.gradle.GradleRIO
id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2018.05.23"
}

def TEAM = 4183
def ROBOT_CLASS = "frc.robot.Robot"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
targets {
target("roborio", jaci.openrio.gradle.frc.RoboRIO) {
team = TEAM
}
}
artifacts {
artifact('frcJava', jaci.openrio.gradle.frc.FRCJavaArtifact) {
targets << "roborio"
}
}
}

// Defining my dependencies. In this case, WPILib (+ friends), CTRE Toolsuite (Talon SRX)
// and NavX.
dependencies {

compile wpilib()

testCompile snobotSimCompile()
testCompile snobotSimJavaCompile()

}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
manifest jaci.openrio.gradle.GradleRIOPlugin.javaManifest(ROBOT_CLASS)
}

wrapper {
gradleVersion = '4.8'
}

snobotSimVersions {
// Check the the project releases for the latest release.
// This wiki not always be in sync with the latest and greatest
// https://github.com/pjreiniger/SnobotSim/releases
snobotSimVersion = "2018-2.0.0"
}`

runSnobotSim doesn't work

Describe the bug
task "runSnobotSim" doesn't work

Quick Glance Configuration
Please provide the following information

  1. SnobotSimPlugin version-2019-0.2.0
  2. SnobotSim version-2019-0.2.0
  3. GradleRIO version-2019.1.1
  4. Your Operating System. widows 10

To Reproduce
Please information on when the issue occurs, and/or what you did to cause the issue to surface. i.e.

  • Does the issue happen during compilation (gradlew build)no
  • Does the issue happen when simulating from the command line (gradlew runSnobotSim)yes
  • Does the issue happen on startup (unsatisfied link, class not found, NPE, etc) haven't got there
  • Does the issue happen while running (When we try to use a joystick..., when we put it in auton..., etc)haven't got there

Expected behavior
expected to run the task

Detailed Setup

    plugins {
        id 'java'
        id 'idea'
        id "edu.wpi.first.GradleRIO" version "2019.1.1"
        id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2019-0.2.0" apply false
}
    group 'Robot'
    version '1.0'

    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8

    def includeDesktopSupport = true
        apply plugin: com.snobot.simulator.plugin.SnobotSimulatorPlugin
        configurations {
        snobotSimCompile
    }

    repositories {
        mavenCentral()
    }

    dependencies {
        compile wpi.deps.wpilib()
        compile wpi.deps.vendor.java()

        nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
        nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)
        testCompile 'junit:junit:4.12'
        
        snobotSimCompile snobotSimJava()
        
    }

    def ROBOT_CLASS = "robot.Robot"

    deploy {
        targets {
            target("roborio", edu.wpi.first.gradlerio.frc.RoboRIO) {
                team = getTeamOrDefault()
            }
        }
        artifacts {
            artifact('frcJava', edu.wpi.first.gradlerio.frc.FRCJavaArtifact) {
                targets << "roborio"
            }
        }
    }

    task wrapper(type: Wrapper) {
        gradleVersion = '4.9' 
    }

    compileJava {
        classpath = sourceSets.main.compileClasspath
        options.encoding = 'UTF-8'
    }

    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }

    jar {
        from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
        manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_CLASS)
    }

Additional context
stacktrace:

.\gradlew build --stacktrace
Warning! Your wrapper zip / dist store is set to wrapper/dists!
This can cause issues when going to competition, since this directory is automatically purged once a month
Run ./gradlew wrapper to fix this, or use -Pskip-inspector-wrapper to squash this warning.
> Task :extractSnobotSimJavaJNI FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':extractSnobotSimJavaJNI'.
>org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(Ljava/lang/Iterable;Lgroovy/lang/Closure;)Ljava/util/List;

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':extractSnobotSimJavaJNI'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
        at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
        at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:273)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:258)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.NoSuchMethodError: org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(Ljava/lang/Iterable;Lgroovy/lang/Closure;)Ljava/util/List;
        at com.snobot.simulator.plugin.BaseExtractSnobotSimNatives$_runExtract_closure2$_closure4.doCall(BaseExtractSnobotSimNatives.groovy:37)
        at com.snobot.simulator.plugin.BaseExtractSnobotSimNatives$_runExtract_closure2$_closure4.call(BaseExtractSnobotSimNatives.groovy)
        at com.snobot.simulator.plugin.BaseExtractSnobotSimNatives$_runExtract_closure2.doCall(BaseExtractSnobotSimNatives.groovy:34)
        at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
        at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:155)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
        at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:167)
        at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:158)
        at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:174)
        at com.snobot.simulator.plugin.BaseExtractSnobotSimNatives.runExtract(BaseExtractSnobotSimNatives.groovy:31)
        at com.snobot.simulator.plugin.java_sim.ExtractSnobotSimJavaNatives.extract(ExtractSnobotSimJavaNatives.groovy:21)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:786)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:753)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
        ... 31 more

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.9/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 0s
2 actionable tasks: 1 executed, 1 up-to-date

CANSparkMax.set(0) does not stop PID from running

Describe the bug
When a PID control mode has been running on the Spark Max controller, the PID cannot be stopped by setting the output to zero. See "Additional context" for a possible cause and solution.

Quick Glance Configuration

  1. SnobotSimPlugin version 2020-0.0.1
  2. SnobotSim version 2020-0.0.1
  3. GradleRIO version 2020.2.2
  4. Your Operating System: Linux 5.3.0 (Pop!_OS 19.10)

To Reproduce

  1. Create a robot with a Spark Max controller.
  2. Simulate the robot, and run the motor with closed-loop velocity or position control.
  3. Try to stop outputting from the motor using CANSparkMax.set(0) on the motor controller.
  4. Observe that the motor continues to output.

Expected behavior
Calling the CANSparkMax.set(0) function should cause the motor to stop outputting. I have confirmed that this is what the real hardware does.

Additional context
I belive the problem is in RevManager.java:48. I think the issue is that set does not update mControlType. Changing set to setRawGoal should fix this.

I haven't tested this, but it looks like there might be a similar problem in the CTRE motor controllers as well: CtreManager:72, CtreManager:92, CtreManager:132

Simulate task fails with exception

I've been trying to setup the simulator with my team's GradleRIO project, but can't execute the simulate task. I added the plugin with the 2018.01.10 version, overwrote the simulator version with snobotSimVersion="0.8.0 and added the test dependencies. My build.gradle file looks like this (sorry for the walls of text, I tried to include all relevant information):

plugins {
    id "java"
    id "eclipse"
    id "idea"
    id "jaci.openrio.gradle.GradleRIO" version "2018.02.17"
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2018.01.10"
}

apply plugin: com.snobot.simulator.plugin.SnobotSimulatorPlugin
snobotSimVersions {
    snobotSimVersion = "0.8.0"
}

def TEAM = 6955
def ROBOT_CLASS = "cl.loschillis.robot.ChiliBot"

repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
}

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        target("roborio", jaci.openrio.gradle.frc.RoboRIO) {
            team = TEAM
        }
    }
    artifacts {
        artifact('frcJava', jaci.openrio.gradle.frc.FRCJavaArtifact) {
            targets << "roborio"
        }
    }
}

// Defining my dependencies. In this case, WPILib (+ friends), CTRE Toolsuite (Talon SRX)
// and NavX.
dependencies {
    compile wpilib()
    compile ctre()
    compile navx()
    compile openrio.powerup.matchData()

    testCompile snobotSimCompile()
    testCompile snobotSimJavaCompile()

}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    manifest jaci.openrio.gradle.GradleRIOPlugin.javaManifest(ROBOT_CLASS)
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
}

build.dependsOn snobotSimUnzipNativeTools

However, when I try to simulate, I get the following error (with stacktrace):

8:05:49 PM: Executing task 'simulate --stacktrace'...

Eclipse not configured, will not update classpath
:simulate FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':simulate'.
> Configuration with name 'snobotSimLibs' not found.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':simulate'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
	at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:59)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:128)
	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
	at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
	at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:46)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
	at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:314)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:204)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:134)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:109)
	at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78)
	at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:53)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
	at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57)
	at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:69)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:30)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.artifacts.UnknownConfigurationException: Configuration with name 'snobotSimLibs' not found.
	at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer.createNotFoundException(DefaultConfigurationContainer.java:140)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(DefaultNamedDomainObjectCollection.java:229)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer.getByName(DefaultConfigurationContainer.java:130)
	at org.gradle.api.internal.artifacts.configurations.ConfigurationContainerInternal$getByName.call(Unknown Source)
	at com.snobot.simulator.plugin.SnobotSimulatorPlugin.getRunArguments(SnobotSimulatorPlugin.groovy:193)
	at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
	at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
	at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:78)
	at com.snobot.simulator.plugin.SnobotSimulatorPlugin$_createSimulateTask_closure9$_closure17.doCall(SnobotSimulatorPlugin.groovy:162)
	at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:718)
	at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:691)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
	... 104 more


* Get more help at https://help.gradle.org

BUILD FAILED in 0s
1 actionable task: 1 executed
Configuration with name 'snobotSimLibs' not found.
8:05:51 PM: Task execution finished 'simulate --stacktrace'.

What am I doing wrong with the setup?

Having a problem setting the robot class

Describe the bug
Describe the issue you are seeing with the simulator

Quick Glance Configuration
Please provide the following information

  1. SnobotSimPlugin version 2018.05.23
  2. SnobotSim version last
  3. GradleRIO version 2018.03.06 with gradle 4.10.2.
  4. operation system windows 10 64 bits
  5. source - https://github.com/GreenBlitz/SnobotSim-Ragnarok

this simulations crash in this if
if (mSimulator != null)
{
sLOGGER.log(Level.FATAL, "Could not start simulator, no simulator was created");
}

i have changed the robot class to my robot class from the defult to org.usfirst.frc.team4590.robot.Robot
the error happens when im executing the simulation with gradlew runsnobot command.
the error is "FATAL com.snobot.simulatio.Simulation -uinexpected exeption shutting down simulation.
java.lang.NullPointerExection: null, at com.snobot.simulation.robot_container.JavaRobotContainer.startCompitation(javaRobotContainer.java 32) ~[snobot_sin_gui-0.11.9-all.jar:?]
at com.snobot.simulation.Simulator$2.run(Simulator.java:318)[snobot_sin_gui-0.11.9-all.jar:?]

at java.land.Thread.run(Thread.java:748)[?:1.8.0_131]

Expected behavior

i expects the code to run normally with my robot main

Detailed Setup

gradle path="C:\Gradle\gradle-4.10.2\bin"

Additional context

the simulations works fine with the base robot class, and im using a joystick which is not very loved by the simulation, but it stills work.

thanks from ofek eshet team GreenBlitz 4590.

Use VSCode to debug simulations

Sorry to bug you again. Trying to key the VS Code debugger into running the
sim
The following configuration worked with the previous version (alpha
integration)
But the com.snobot.simulator.Main is no longer the entry point (does not
exist).
Using the frc.robot.Main does not seem right; how should we start the sim
through the debugger?
mk
{
"type": "java",
"name": "Debug (Launch)",
"request": "launch",
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopOnEntry": false,
"mainClass": "com.snobot.simulator.Main",
"args": "",
"vmArgs": "-Djava.library.path=build/native_libs",
"env": {
"DYLD_LIBRARY_PATH": "build/native_libs"
}
}

Michael Kessel
Coach
The Bit Buckets
web.bitbuckets.org http://www.bitbuckets.org
FRC Team #4183
FLL Team #38905
VEX Team #5485

On Thu, Jan 17, 2019 at 11:31 PM Mike Kessel [email protected] wrote:

I think I found out why: the following dialog was behind a bunch of
windows and as soon as I closed it, then things popped up.
[image: image.png]

Michael Kessel
Coach
The Bit Buckets
web.bitbuckets.org http://www.bitbuckets.org
FRC Team #4183
FLL Team #38905
VEX Team #5485

On Thu, Jan 17, 2019 at 11:27 PM Mike Kessel [email protected]
wrote:

Changed the simulator_config.properties to reference frc.robot.Robot.
Thanks, got it to run with "./gradlew runJavaSnobotSim"

But the nice GUI that popped up with the example did not appear. Is there
something I am missing?

Michael Kessel
Coach
The Bit Buckets
web.bitbuckets.org http://www.bitbuckets.org
FRC Team #4183
FLL Team #38905
VEX Team #5485

On Thu, Jan 17, 2019 at 2:42 PM PJ Reiniger [email protected]
wrote:

Try the latest version. This
https://github.com/pjreiniger/SnobotSimExamples/blob/master/JavaExample/build.gradle
is a good example to base your build file on.

The simulator currently supports CTRE 5.12.0

โ€”
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#23 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATUoKCp1Ilu-qi9hqnkd7Ow2eHKmh7weks5vEO5bgaJpZM4UGTyF
.

Originally posted by @RocketRedNeck in #23 (comment)

No CTRE in Java Path

java.lang.UnsatisfiedLinkError: no CTRE_PhoenixCCI in java.library.path

Getting this error in this simulator. Any Suggestions? Here is the full output:

	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at com.ctre.phoenix.CTREJNIWrapper.<clinit>(CTREJNIWrapper.java:9)
	at com.ctre.phoenix.motorcontrol.can.BaseMotorController.<init>(BaseMotorController.java:51)
	at com.ctre.phoenix.motorcontrol.can.TalonSRX.<init>(TalonSRX.java:19)
	at org.usfirst.frc.team1322.robot.subsystems.LIFT.<init>(LIFT.java:17)
	at org.usfirst.frc.team1322.robot.Robot.<clinit>(Robot.java:32)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.snobot.simulator.robot_container.JavaRobotContainer.constructRobot(JavaRobotContainer.java:26)
	at com.snobot.simulator.Simulator.createRobot(Simulator.java:154)
	at com.snobot.simulator.Simulator.loadConfig(Simulator.java:117)
	at com.snobot.simulator.Simulator.startSimulation(Simulator.java:203)
	at com.snobot.simulator.Main.main(Main.java:46)

Windows 7 64 Bit Java JDK 1.8.121, Using the quick start package.

On A roboRIO in real life, this issue is usually caused by not having the libCTRE_PhoenixCCI.so file in the C:\Users\<user>\wpilib\user\java\lib folder.

Eclipse option for the Mac?

We've seen an issue virtually identical to issue #2, but with the Mac. It's failing to start because it can't find a bunch of *.dylib files. Is there a similar fix for that platform?

runJavaSnobotSim task not finishing.

Describe the bug
Task "runJavaSnobotSim" doesn't work

Quick Glance Configuration

  • SnobotSimPlugin version: 2019-3.0.0
  • SnobotSim version: 2019-3.0.0
  • GradleRIO version: 2019.4.1
  • Operating System: Widows 10

Detailed Setup
build.gradle file:

plugins {
    id "java"
    id "edu.wpi.first.GradleRIO" version "2019.4.1"
    id "com.snobot.simulator.plugin.SnobotSimulatorPlugin" version "2019-3.0.0" apply false
}

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

def ROBOT_MAIN_CLASS = "frc.robot.Main"

// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project EmbeddedTools.
deploy {
    targets {
        roboRIO("roborio") {
            // Team number is loaded either from the .wpilib/wpilib_preferences.json
            // or from command line. If not found an exception will be thrown.
            // You can use getTeamOrDefault(team) instead of getTeamNumber if you
            // want to store a team number in this file.
            team = frc.getTeamNumber()
        }
    }
    artifacts {
        frcJavaArtifact('frcJava') {
            targets << "roborio"
            // Debug can be overridden by command line, for use with VSCode
            debug = frc.getDebugOrDefault(false)
        }
        // Built in artifact to deploy arbitrary files to the roboRIO.
        fileTreeArtifact('frcStaticFileDeploy') {
            // The directory below is the local directory to deploy
            files = fileTree(dir: 'src/main/deploy')
            // Deploy to RoboRIO target, into /home/lvuser/deploy
            targets << "roborio"
            directory = '/home/lvuser/deploy'
        }
    }
}

// Set this to true to enable desktop support.
def includeDesktopSupport = false

// Maven central needed for JUnit
repositories {
    mavenCentral()
}

apply plugin: com.snobot.simulator.plugin.SnobotSimulatorPlugin

configurations {
    snobotSimCompile
}

// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
// Also defines JUnit 4.
dependencies {
    compile wpi.deps.wpilib()
    compile wpi.deps.vendor.java()
    nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
    nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)
    testCompile 'junit:junit:4.12'

    // SnobotSim
    snobotSimCompile snobotSimJava()
}

// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar')
// in order to make them all available at runtime. Also adding the manifest so WPILib
// knows where to look for our Robot Class.
jar {
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
}

Additional context
Stacktrace:

19:07:19: Executing task 'runJavaSnobotSim'...

> Task :extractSnobotSimJavaJNI
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :downloadDepsPreemptively
> Task :jar UP-TO-DATE

> Task :runJavaSnobotSim
                                               (@.
                                        #.    ,@@@@@@@@@@
                                       @@@@& .@@@@@@@@@@@@%
                                   ./@@@@@@,&@@@@@@@@@@@@@@@@(    ,@,
                                 &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&/.&@@
                             /@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*
                           .@@@@@@@@@@@@@@@@@@@@@@&&&@@@@@@@@@@@@@@@@@@@@@@&(%/
                           @@@@@@@@@@@@@@@%,             *@@@@@@@@@@@@@@@@@@@@@@&
                           @@@@@@@@@@@*                    ,@@@@@@@@@@@@@@@@@@@@@@%
                          ,@@@@@@@@%             %@@*       ,@@@@@@@@@@@@@@@@@@@@@@@*
                          (@@@@@@@*             @@@@@,      ,@@@@@@@@@*.,#@@@@@@@@@@@#
                         /@@@@@@@#              @@@@@.      &@@@@@@@,       /@@@@@@@@@&
                       .@@@@@@@@@@/              ./,      (@@@@@@@@%          /@@@@@@@@@
                      @@@@@@@@@@@@@@&/                 *&@@@@@@@@@@/  @@@@/     &@@@@@@@&/@.
                     *@@@@@&/ .@@@@@@@@@@@@@@@&*                .(&% %@@@@@      (@@@@@@@@@@#
                        .&      @@@&(#%@&*,&.          *#&,        .@@@@#       /@@@@@@@@@@&
                                                     @@@@@@@@&                     &@@@@@@@@@@,
                                                     #@@@@@&/     (@@@,             @@@@@@@@@@&
                                                                  #@@@@@            &@@@@@@@@@&
           ./((/.                                                  /@@@@@           &@@@@@@@@@&
         &@@@@@@@@@@@@#.                                             %@@&           @@@@@@@@@@*
        @@@@@@@@@@@@@@@@@@@@@#,                                                *//%@@@@@@@@@@%
       @@@@@@@@@@@@@@@@@@@@@@@@@@@@@&/.                                        (#@@@@@@@@@@@@.
    /&@@@@@@,       ,#@@@@@@@@@@@@@@@@@@@@@#.                                    /@@@@@#,&@@@#
 ,@@@@@@@@@@               .*%@@@@@@@@@@@@@@@@@@@&*                                 ./..   .#
,@@@@@@@@@@@                       ,%@@@@@@@@@@@@@@@@@@%.
&@@@@@@@@@@@                             ,#@@@@@@@@@@@@@@@@&*
@@@@@@@@@@@@(                                   (@@@@@@@@@@@@@@@#.
#@@@@@@@@@@@@                       .                ,#@@@@@@@@@@@@@@@%,
 @@@@@@@@@@@@#     @@@@            @@                     *&@@@@@@@@@@@@@@@@%*
  (@@@@@@@@@%     (@@@@@@        &@@@,    .@                   *&@@@@@@@@@@@@@@@@@@&(.
   #@@@@@@@.      #@@@@@@*      @@@@@@   %@@       .                (@@@@@@@@@@@@@@@@@@@@@%.
   ,@@@@@@        ,@@@@@@&     @@@@@@@@@@@@@&    %@,                    *@@@@@@@@@@@@@@@@@@@@@.
   .@@@@@@         @@@@@@@    @@@@@@@@@@@@@@@@#@@@@%    /@                  (@@@@@@@@@@@@@@@@@@.
    @@@@@%         /@@@@@@#  &@@@@@@@@@@@@@@@@@@@@@@* (@@@     /                ,&@@@@@@@@@@@@@,
    ,@@@@&          #@@@@@@./@@@@@@@@@@@@@@@@@@@@@@@@@@@@@( .@@@    ,(                 %@@@@@@@
     &@@@@            .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* ,@@(                %@@@@@@@#
      @@@@/            @@@@@@@%*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%  .@*          @@@@@@@@@
      .@@@@            (@@%     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,         #@@@@@@@@@.
       /@@@@           ,(       @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/        /@@@@@@@@@@.
        ,@@@@                   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*      *@@@@@@@@@@@@,
         *@@@@.                 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.   .&@@@@@@@@@@@@@@,
          #@@@@%               ,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*
           (@@@@@.             &@(    (@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,
            /@@@@@&                   (@&*   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&
             .@@@@@@&.                       &@%.  #@@@@@@@@@@@@@@/  @@@@@@@@@@@@@@@@#
              .@@@@@@@&                            .@@@@/@@@@@@@,    @@@@@@@@@@@@@@@/
                (@@@@@@@@*                               ,@@@/       @@@@@@@@@@@@@@
                  @@@@@@@@@%.                                       &@@@@@@@@@@@@/
                   #@@@@@@@@@@*                                    /@&/ @@@@@@@%
                     #@@@@@@@@@@@*                                   /@@@@@@@@
                       %@@@@@@@@@@@@@*                           *@@@@@@@@@@.
                         &@@@@@@@@@@@@@@@#.                 ,#@@@@@@@@@@@@,
                           /@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
                                 /&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
                                     .#@@@@@@@@@@@@@@@@@@@@@&,
                                             .,*///*,.

2019-07-04 19:07:21 INFO  com.snobot.simulator.config.v1.SimulatorConfigReaderV1:71 - Loading C:\Users\bauke\Documents\Coding\FRC\Projects\ArmstrongSimulationIJ\simulator_config\simulator_config.yml
                          __             _           _     __ _
                         / _\_ __   ___ | |__   ___ | |_  / _(_)_ __ ___
                         \ \| '_ \ / _ \| '_ \ / _ \| __| \ \| | '_ ` _ \
                         _\ \ | | | (_) | |_) | (_) | |_  _\ \ | | | | | |
                         \__/_| |_|\___/|_.__/ \___/ \__| \__/_|_| |_| |_|

2019-07-04 19:07:22 INFO  com.snobot.simulator.Simulator:216 - Starting Robot Code
java.io.IOException: ntcorejni could not be loaded from path or an embedded resource.
	attempted to load for platform /windows/x86-64/

	at edu.wpi.first.wpiutil.RuntimeLoader.loadLibrary(RuntimeLoader.java:79)
	at edu.wpi.first.networktables.NetworkTablesJNI.<clinit>(NetworkTablesJNI.java:23)
	at edu.wpi.first.networktables.NetworkTableInstance.getDefault(NetworkTableInstance.java:97)
	at edu.wpi.first.wpilibj.RobotBase.<init>(RobotBase.java:87)
	at edu.wpi.first.wpilibj.IterativeRobotBase.<init>(IterativeRobotBase.java:65)
	at edu.wpi.first.wpilibj.TimedRobot.<init>(TimedRobot.java:45)
	at edu.wpi.first.wpilibj.TimedRobot.<init>(TimedRobot.java:36)
	at com.snobot.simulator.example_robot.ExampleRobot.<init>(ExampleRobot.java:26)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.base/java.lang.Class.newInstance(Class.java:584)
	at com.snobot.simulator.robot_container.JavaRobotContainer.constructRobot(JavaRobotContainer.java:24)
	at com.snobot.simulator.Simulator.createRobot(Simulator.java:235)
	at com.snobot.simulator.Simulator.startSimulation(Simulator.java:299)
	at com.snobot.simulator.Main.main(Main.java:46)

> Task :runJavaSnobotSim FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':runJavaSnobotSim'.
> Process 'command 'java'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3s
5 actionable tasks: 3 executed, 2 up-to-date
Process 'command 'java'' finished with non-zero exit value 1
19:07:22: Task execution finished 'runJavaSnobotSim'.

Cannot read individual trigger values

Describe the bug
The simulator does not allow for reading the values of the trigger of a joystick individually, if both triggers are held, then the value is read as 0, and none of the controller modes are allowing me to change this to be able to read both of the values individually.

Quick Glance Configuration
Please provide the following information

  1. SnobotSimPlugin 1.0.0 (vs code plugin)
  2. SnobotSim 2020-0.0.1
  3. GradleRIO version 2020.3.2
  4. windows 10
  5. https://github.com/Aztechs157/FRC2020

To Reproduce
This issue occurs whenever we try to read a trigger whenever both triggers are completely depressed. this issue happens while running.

Expected behavior
There should be a way to read the individual values of each trigger, the state of both triggers fully depressed should not be the same state as neither trigger depressed at all.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.