-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add new logger system #27
base: master
Are you sure you want to change the base?
Changes from all commits
66e5a0a
314ee21
29ec846
2918f29
0d0bb64
ab7bc1a
903661e
4b2ccdc
5019e88
7b09772
5bdd854
e0eb9fe
4d90feb
a5412f1
4c3cfc4
86578d9
44cc623
d39f525
6c7522e
754c848
f1439e3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -40,6 +40,7 @@ | |
*.class | ||
|
||
# Log file | ||
logs/ | ||
*.log | ||
|
||
# BlueJ files | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,109 @@ | ||
# RA22_RobotCode | ||
# RA22_RobotCode Logger Documentation | ||
|
||
Red Alert's 2022 Robot Code | ||
Welcome to the docs for the Red Alert Robotics 2022 Robot Code Logger System. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length |
||
DISCLAIMER: This document assumes you know how Java works. If not, it is strongly recommended that you learn Java before utilizing the logger, or ask somebody who does know Java. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length |
||
|
||
## Usage | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length |
||
To show how to use the logger system, this document will demonstrate the creation of a `Loggable` object and how to register it in the log file. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length |
||
|
||
### Create the Loggable | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length |
||
1. Go to ***/src/main/java/frc/robot/logging*** and create a new Java file. The naming system used for the loggables are like this: *Loggable*, followed immediately by the name of the system being logged. For demonstrations purposes, let's call it *LoggableTest.java*. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix |
||
2. Inside this file, create a new class. You'll also need to have it implement *Loggable.java*. This contains the methods needed to accumulate data to send to the log file. No import will be needed, as *Loggable.java* is in the same file as our *LoggableTest* class. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
package frc.robot.logging | ||
|
||
public class LoggableTest implements Loggable { | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
} | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix |
||
3. Next you'll need to implement the methods from *Loggable.java*. The first method is `logHeaders()`, which is for logging the type of data. It is called only when the robot starts. The second method is `logData()`. This is called approximately 30 times a second. **Make sure to have the `@Override` decorator above both methods.** | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
package frc.robot.logging | ||
|
||
public class LoggableTest implements Loggable { | ||
@Override | ||
public void logHeaders(Logger logger) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
@Override | ||
public void logData(Logger logger) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
} | ||
} | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix |
||
4. In the `logHeaders()` method, we will have two headers: *first_name*, and *last_name*. So, we need to use the `logger` parameter to access the necessary method to add these headers. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
package frc.robot.logging | ||
|
||
public class LoggableTest implements Loggable { | ||
@Override | ||
public void logHeaders(Logger logger) { | ||
logger.addHeader("first_name"); | ||
logger.addHeader("last_name"); | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
@Override | ||
public void logData(Logger logger) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
} | ||
} | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix |
||
5. Now let's add our data. Under `logData()`, use the `logger` parameter to access the needed methods. Make sure to specify the header you want the data to go under. Don't worry about converting the data to `string` type. The logger does that automatically. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
package frc.robot.logging | ||
|
||
public class LoggableTest implements Loggable { | ||
@Override | ||
public void logHeaders(Logger logger) { | ||
logger.addHeader("first_name"); | ||
logger.addHeader("last_name"); | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trailing spaces |
||
@Override | ||
public void logData(Logger logger) { | ||
logger.addData("first_name", "Jeff") | ||
logger.addData("last_name", "Bezos") | ||
} | ||
} | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length |
||
6. There you go! Our *Loggable* object has been created. Don't think that you can't add other things as well. Constructors, other methods, those won't get in the way (except, of course, if you name other methods the same name). As long as your class has `logHeaders()` and `logData()`, you're good. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix |
||
|
||
### Registering the Loggable | ||
1. Go to the main *Robot.java* file in ***/src/main/java/frc/robot***. This is where all of the robot code is. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
|
||
2. Import *LoggableTest.java*. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
import frc.robot.logging.LoggableTest; | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
3. Go to the top of the `Robot` class and create a new *LoggableTest* object. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
LoggableTest loggableTest; | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
4. Now go into the `robotInit()` method and create the new instance. This is what the logger will register. If there's a constructor, make sure to give the necessary values. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
loggableTest = new LoggableTest(); | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
5. Go to the bottom of the `robotInit()` method and use the `logger.addLoggable()` method to register `loggableTest` (This is assuming that the *Loggable* is a standalone system. If this is part of another system, then make sure to add it to whatever if-statements belong to that system, if any.) This will allow the logger to call `logHeaders()` and `logData()`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lists should be surrounded by blank lines |
||
```java | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
logger.addLoggable(loggableTest); | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fenced code blocks should be surrounded by blank lines |
||
<br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inline HTML |
||
|
||
6. You are now all set! You've added the *LoggableTest* object to the logger, so now, when you start the robot, the log file should contain the info being logged by your *Loggable* object. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line length There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ordered list item prefix |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,7 +10,7 @@ | |
|
||
public class DriveModule implements Loggable { | ||
|
||
private final double VELOCITY_COEFFICIENT = 600 / 2048; | ||
// private final double VELOCITY_COEFFICIENT = 600 / 2048; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This block of commented-out lines of code should be removed. |
||
|
||
private TalonFX main; | ||
private TalonFX sub; | ||
|
@@ -24,7 +24,7 @@ public class DriveModule implements Loggable { | |
/** | ||
* Constructor. | ||
* | ||
* @param moduleName Name of the attribute to log speed | ||
* @param moduleName Name of the attribute to addData speed | ||
* @param mainID CAN id of the main TalonFX | ||
* @param subID CAN id of the sub TalonFX | ||
*/ | ||
|
@@ -127,22 +127,22 @@ public double getAverageCurrent() { | |
} | ||
|
||
@Override | ||
public void setupLogging(Logger logger) { | ||
logger.addAttribute(this.moduleName + "/MotorPower"); | ||
logger.addAttribute(this.moduleName + "/Distance"); | ||
logger.addAttribute(this.moduleName + "/EncoderRate"); | ||
logger.addAttribute(this.moduleName + "/MotorVelocity"); | ||
logger.addAttribute(this.moduleName + "/MotorCurrent"); | ||
logger.addAttribute(this.moduleName + "/MotorAverageCurrent"); | ||
public void logHeaders(Logger logger) { | ||
logger.addHeader(this.moduleName + "/MotorPower"); | ||
logger.addHeader(this.moduleName + "/Distance"); | ||
logger.addHeader(this.moduleName + "/EncoderRate"); | ||
logger.addHeader(this.moduleName + "/MotorVelocity"); | ||
logger.addHeader(this.moduleName + "/MotorCurrent"); | ||
logger.addHeader(this.moduleName + "/MotorAverageCurrent"); | ||
} | ||
|
||
@Override | ||
public void log(Logger logger) { | ||
logger.log(this.moduleName + "/MotorPower", power); | ||
logger.log(this.moduleName + "/Distance", this.encoder.getDistance()); | ||
logger.log(this.moduleName + "/EncoderRate", this.encoder.getRate()); | ||
logger.log(this.moduleName + "/MotorVelocity", getSpeed()); | ||
logger.log(this.moduleName + "/MotorCurrent", getCurrent()); | ||
logger.log(this.moduleName + "/MotorAverageCurrent", getAverageCurrent()); | ||
public void logData(Logger logger) { | ||
logger.addData(this.moduleName + "/MotorPower", power); | ||
logger.addData(this.moduleName + "/Distance", this.encoder.getDistance()); | ||
logger.addData(this.moduleName + "/EncoderRate", this.encoder.getRate()); | ||
logger.addData(this.moduleName + "/MotorVelocity", getSpeed()); | ||
logger.addData(this.moduleName + "/MotorCurrent", getCurrent()); | ||
logger.addData(this.moduleName + "/MotorAverageCurrent", getAverageCurrent()); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -119,13 +119,11 @@ public void checkGears() { | |
} | ||
|
||
@Override | ||
public void setupLogging(Logger logger) { | ||
public void logHeaders(Logger logger) { | ||
// logger.addLoggable(left); | ||
// logger.addLoggable(right); | ||
} | ||
|
||
@Override | ||
public void log(Logger logger) { | ||
// TODO Auto-generated method stub | ||
} | ||
public void logData(Logger logger) {} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. '}' at column 41 should be alone on a line. |
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length