Skip to content

Commit

Permalink
Merge pull request #41 from dbadb/master
Browse files Browse the repository at this point in the history
Integrate SpartronicsLib with this year's project.
  • Loading branch information
dbadb authored Jan 22, 2020
2 parents 9d339e3 + 1829380 commit f853ed5
Show file tree
Hide file tree
Showing 74 changed files with 8,689 additions and 89 deletions.
190 changes: 116 additions & 74 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,74 +1,116 @@
plugins {
id "java"
id "edu.wpi.first.GradleRIO" version "2020.1.2"
}

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

def ROBOT_MAIN_CLASS = "com.spartronics4915.frc2020.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'
}
}
}

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

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

// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
// Also defines JUnit 4.
dependencies {
implementation wpi.deps.wpilib()
nativeZip wpi.deps.wpilibJni(wpi.platforms.roborio)
nativeDesktopZip wpi.deps.wpilibJni(wpi.platforms.desktop)

implementation wpi.deps.vendor.java()
nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)

implementation "com.github.Spartronics4915:SpartronicsLib:master-SNAPSHOT"

testImplementation 'junit:junit:4.12'

// Enable simulation gui support. Must check the box in vscode to enable support
// upon debugging
simulation wpi.deps.sim.gui(wpi.platforms.desktop, false)
}

// 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.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
}
import java.text.SimpleDateFormat;
import java.io.ByteArrayOutputStream;

plugins {
id "java"
id "edu.wpi.first.GradleRIO" version "2020.2.2"
id "maven"
id "maven-publish"
}

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

def ROBOT_MAIN_CLASS = "com.spartronics4915.frc2020.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()
if(!project.hasProperty("discover"))
addresses = ["10.49.15.2"]
}
}
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

// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
// Also defines JUnit 4.
dependencies {
implementation wpi.deps.wpilib()
nativeZip wpi.deps.wpilibJni(wpi.platforms.roborio)
nativeDesktopZip wpi.deps.wpilibJni(wpi.platforms.desktop)

implementation wpi.deps.vendor.java()
nativeZip wpi.deps.vendor.jni(wpi.platforms.roborio)
nativeDesktopZip wpi.deps.vendor.jni(wpi.platforms.desktop)

// implementation "com.github.Spartronics4915:SpartronicsLib:master-SNAPSHOT"

implementation("gov.nist.math:jama:1.0.3")
implementation("org.ejml:ejml-simple:0.38")
implementation("org.apache.commons:commons-math3:3.6.1")
implementation("com.fazecast:jSerialComm:2.4.1")

testImplementation("org.knowm.xchart:xchart:3.2.2")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.3.2")
// testImplementation 'junit:junit:4.12'
testRuntime("org.junit.jupiter:junit-jupiter-engine:5.3.2")

// Enable simulation gui support. Must check the box in vscode to enable support
// upon debugging
simulation wpi.deps.sim.gui(wpi.platforms.desktop, false)
}

// 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.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
manifest {
String user = System.getProperty("user.name");
SimpleDateFormat fmt = new SimpleDateFormat("MMMMM dd, hh:mm a");
ByteArrayOutputStream gitinfo = new ByteArrayOutputStream();
exec {
ignoreExitValue true
commandLine 'git', 'describe', "--tags", "--dirty"
standardOutput = gitinfo
}
attributes (
"Built-By": user,
"Built-At": fmt.format(new Date()),
"Code-Version": gitinfo.toString().trim()
)
}
manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
// we could exclude source by subdir (see 2019-Deepspace/build.gradle)
}

/*
test {
useJUnitPlatform {
// Some tests only work if you have the right stuff plugged in
// Pass -PallTests if you want tests with the excluded tags
if (!project.hasProperty("allTests")) {
excludeTags "hardwareDependant"
}
}
testLogging {
events "PASSED", "SKIPPED", "FAILED"
exceptionFormat "full"
}
}
*/
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.spartronics4915.lib.hardware.motors;

public class SensorModel {
private final double mToMetersMultiplier;

/**
* This is a convenience constructor for sensors connected to a wheel. Use the
* more direct constructor if your sensor is not connected to a wheel.
*
* @param wheelDiameterMeters The diameter of your wheel in meters.
* @param nativeUnitsPerRevolution The number of meters per wheel revolution.
*/
public SensorModel(double wheelDiameterMeters, double nativeUnitsPerRevolution) {
mToMetersMultiplier = (1 / nativeUnitsPerRevolution) * (wheelDiameterMeters * Math.PI);
}

/**
* @param nativeUnitsToMetersMultiplier A number that, when multiplied with some
* amount of meters, converts to meters.
* This factor will also be used to convert
* to related units, like meters/sec.
*/
public SensorModel(double nativeUnitsToMetersMultiplier) {
mToMetersMultiplier = nativeUnitsToMetersMultiplier;
}

public double toMeters(double nativeUnits) {
return nativeUnits * mToMetersMultiplier;
}

public double toNativeUnits(double meters) {
return meters / mToMetersMultiplier;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.spartronics4915.lib.hardware.motors;

import com.spartronics4915.lib.util.Logger;

public interface SpartronicsEncoder {

public final SpartronicsEncoder kDisconnectedEncoder = new SpartronicsEncoder() {

@Override
public void setPhase(boolean isReversed) {
Logger.error("Couldn't set the phase of a disconnected encoder");
}

@Override
public double getVelocity() {
return 0;
}

@Override
public double getPosition() {
return 0;
}
};

/**
* @return Velocity in meters/second.
*/
double getVelocity();

/**
* @return Position in meters.
*/
double getPosition();

/**
* Sets the "direction" (phase) of this encoder.
*
* @param isReversed If true, the sensor's output is reversed.
*/
void setPhase(boolean isReversed);
}
Loading

0 comments on commit f853ed5

Please sign in to comment.