Skip to content

Commit 1dfbe78

Browse files
authored
migrate: smartdashboard to shuffleboard (#105)
1 parent 153108e commit 1dfbe78

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

.Glass/glass.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"NetworkTables Info": {
3+
"visible": true
4+
},
5+
"NetworkTables Log": {
6+
"visible": true
7+
},
8+
"Plots": {
9+
"Plot <0>": {
10+
"plots": [
11+
{
12+
"backgroundColor": [
13+
0.0,
14+
0.0,
15+
0.0,
16+
0.8500000238418579
17+
],
18+
"height": 332
19+
}
20+
],
21+
"window": {
22+
"visible": false
23+
}
24+
}
25+
}
26+
}

pybot/telemetry.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from ntcore import NetworkTableInstance
22
from phoenix6 import SignalLogger, swerve, units
3-
from wpilib import Color, Color8Bit, Mechanism2d, MechanismLigament2d, SmartDashboard
3+
from wpilib import Color, Color8Bit, Mechanism2d, MechanismLigament2d, SmartDashboard, Field2d
44
from wpimath.geometry import Pose2d
55
from wpimath.kinematics import ChassisSpeeds, SwerveModulePosition, SwerveModuleState
6+
import time
67

78
class Telemetry:
89
def __init__(self, max_speed: units.meters_per_second):
@@ -17,6 +18,11 @@ def __init__(self, max_speed: units.meters_per_second):
1718

1819
# What to publish over networktables for telemetry
1920
self._inst = NetworkTableInstance.getDefault()
21+
self._inst.startServer() # Start NetworkTables server for simulation
22+
23+
# Initialize Field2D object
24+
self._field = Field2d()
25+
SmartDashboard.putData("Field", self._field)
2026

2127
# Robot swerve drive state
2228
self._drive_state_table = self._inst.getTable("DriveState")
@@ -107,10 +113,13 @@ def telemeterize(self, state: swerve.SwerveDrivetrain.SwerveDriveState):
107113
self._field_type_pub.set("Field2d")
108114
self._field_pub.set(pose_array)
109115

116+
# Update the Field2d object with the robot's pose
117+
self._field.setRobotPose(state.pose)
118+
110119
# Telemeterize the module states to a Mechanism2d
111120
for i, module_state in enumerate(state.module_states):
112121
self._module_speeds[i].setAngle(module_state.angle.degrees())
113122
self._module_directions[i].setAngle(module_state.angle.degrees())
114123
self._module_speeds[i].setLength(module_state.speed / (2 * self._max_speed))
115124

116-
SmartDashboard.putData(f"Module {i}", self._module_mechanisms[i])
125+
SmartDashboard.putData(f"Module {i}", self._module_mechanisms[i])

0 commit comments

Comments
 (0)