Draw robot in LocalizationTest (fixes #360)
This commit is contained in:
@ -21,7 +21,6 @@ import com.acmerobotics.roadrunner.TimeTurn;
|
|||||||
import com.acmerobotics.roadrunner.TrajectoryActionBuilder;
|
import com.acmerobotics.roadrunner.TrajectoryActionBuilder;
|
||||||
import com.acmerobotics.roadrunner.TurnConstraints;
|
import com.acmerobotics.roadrunner.TurnConstraints;
|
||||||
import com.acmerobotics.roadrunner.Twist2dDual;
|
import com.acmerobotics.roadrunner.Twist2dDual;
|
||||||
import com.acmerobotics.roadrunner.Vector2d;
|
|
||||||
import com.acmerobotics.roadrunner.VelConstraint;
|
import com.acmerobotics.roadrunner.VelConstraint;
|
||||||
import com.acmerobotics.roadrunner.ftc.DownsampledWriter;
|
import com.acmerobotics.roadrunner.ftc.DownsampledWriter;
|
||||||
import com.acmerobotics.roadrunner.ftc.Encoder;
|
import com.acmerobotics.roadrunner.ftc.Encoder;
|
||||||
@ -325,10 +324,10 @@ public final class MecanumDrive {
|
|||||||
drawPoseHistory(c);
|
drawPoseHistory(c);
|
||||||
|
|
||||||
c.setStroke("#4CAF50");
|
c.setStroke("#4CAF50");
|
||||||
drawRobot(c, txWorldTarget.value());
|
Drawing.drawRobot(c, txWorldTarget.value());
|
||||||
|
|
||||||
c.setStroke("#3F51B5");
|
c.setStroke("#3F51B5");
|
||||||
drawRobot(c, pose);
|
Drawing.drawRobot(c, pose);
|
||||||
|
|
||||||
c.setStroke("#4CAF50FF");
|
c.setStroke("#4CAF50FF");
|
||||||
c.setStrokeWidth(1);
|
c.setStrokeWidth(1);
|
||||||
@ -406,10 +405,10 @@ public final class MecanumDrive {
|
|||||||
drawPoseHistory(c);
|
drawPoseHistory(c);
|
||||||
|
|
||||||
c.setStroke("#4CAF50");
|
c.setStroke("#4CAF50");
|
||||||
drawRobot(c, txWorldTarget.value());
|
Drawing.drawRobot(c, txWorldTarget.value());
|
||||||
|
|
||||||
c.setStroke("#3F51B5");
|
c.setStroke("#3F51B5");
|
||||||
drawRobot(c, pose);
|
Drawing.drawRobot(c, pose);
|
||||||
|
|
||||||
c.setStroke("#7C4DFFFF");
|
c.setStroke("#7C4DFFFF");
|
||||||
c.fillCircle(turn.beginPose.position.x, turn.beginPose.position.y, 2);
|
c.fillCircle(turn.beginPose.position.x, turn.beginPose.position.y, 2);
|
||||||
@ -455,18 +454,6 @@ public final class MecanumDrive {
|
|||||||
c.strokePolyline(xPoints, yPoints);
|
c.strokePolyline(xPoints, yPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void drawRobot(Canvas c, Pose2d t) {
|
|
||||||
final double ROBOT_RADIUS = 9;
|
|
||||||
|
|
||||||
c.setStrokeWidth(1);
|
|
||||||
c.strokeCircle(t.position.x, t.position.y, ROBOT_RADIUS);
|
|
||||||
|
|
||||||
Vector2d halfv = t.heading.vec().times(0.5 * ROBOT_RADIUS);
|
|
||||||
Vector2d p1 = t.position.plus(halfv);
|
|
||||||
Vector2d p2 = p1.plus(halfv);
|
|
||||||
c.strokeLine(p1.x, p1.y, p2.x, p2.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TrajectoryActionBuilder actionBuilder(Pose2d beginPose) {
|
public TrajectoryActionBuilder actionBuilder(Pose2d beginPose) {
|
||||||
return new TrajectoryActionBuilder(
|
return new TrajectoryActionBuilder(
|
||||||
TurnAction::new,
|
TurnAction::new,
|
||||||
|
@ -343,10 +343,10 @@ public final class TankDrive {
|
|||||||
drawPoseHistory(c);
|
drawPoseHistory(c);
|
||||||
|
|
||||||
c.setStroke("#4CAF50");
|
c.setStroke("#4CAF50");
|
||||||
drawRobot(c, txWorldTarget.value());
|
Drawing.drawRobot(c, txWorldTarget.value());
|
||||||
|
|
||||||
c.setStroke("#3F51B5");
|
c.setStroke("#3F51B5");
|
||||||
drawRobot(c, pose);
|
Drawing.drawRobot(c, pose);
|
||||||
|
|
||||||
c.setStroke("#4CAF50FF");
|
c.setStroke("#4CAF50FF");
|
||||||
c.setStrokeWidth(1);
|
c.setStrokeWidth(1);
|
||||||
@ -426,10 +426,10 @@ public final class TankDrive {
|
|||||||
drawPoseHistory(c);
|
drawPoseHistory(c);
|
||||||
|
|
||||||
c.setStroke("#4CAF50");
|
c.setStroke("#4CAF50");
|
||||||
drawRobot(c, txWorldTarget.value());
|
Drawing.drawRobot(c, txWorldTarget.value());
|
||||||
|
|
||||||
c.setStroke("#3F51B5");
|
c.setStroke("#3F51B5");
|
||||||
drawRobot(c, pose);
|
Drawing.drawRobot(c, pose);
|
||||||
|
|
||||||
c.setStroke("#7C4DFFFF");
|
c.setStroke("#7C4DFFFF");
|
||||||
c.fillCircle(turn.beginPose.position.x, turn.beginPose.position.y, 2);
|
c.fillCircle(turn.beginPose.position.x, turn.beginPose.position.y, 2);
|
||||||
@ -475,18 +475,6 @@ public final class TankDrive {
|
|||||||
c.strokePolyline(xPoints, yPoints);
|
c.strokePolyline(xPoints, yPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void drawRobot(Canvas c, Pose2d t) {
|
|
||||||
final double ROBOT_RADIUS = 9;
|
|
||||||
|
|
||||||
c.setStrokeWidth(1);
|
|
||||||
c.strokeCircle(t.position.x, t.position.y, ROBOT_RADIUS);
|
|
||||||
|
|
||||||
Vector2d halfv = t.heading.vec().times(0.5 * ROBOT_RADIUS);
|
|
||||||
Vector2d p1 = t.position.plus(halfv);
|
|
||||||
Vector2d p2 = p1.plus(halfv);
|
|
||||||
c.strokeLine(p1.x, p1.y, p2.x, p2.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TrajectoryActionBuilder actionBuilder(Pose2d beginPose) {
|
public TrajectoryActionBuilder actionBuilder(Pose2d beginPose) {
|
||||||
return new TrajectoryActionBuilder(
|
return new TrajectoryActionBuilder(
|
||||||
TurnAction::new,
|
TurnAction::new,
|
||||||
|
@ -1,17 +1,22 @@
|
|||||||
package org.firstinspires.ftc.teamcode.tuning;
|
package org.firstinspires.ftc.teamcode.tuning;
|
||||||
|
|
||||||
|
import com.acmerobotics.dashboard.FtcDashboard;
|
||||||
|
import com.acmerobotics.dashboard.telemetry.MultipleTelemetry;
|
||||||
|
import com.acmerobotics.dashboard.telemetry.TelemetryPacket;
|
||||||
import com.acmerobotics.roadrunner.Pose2d;
|
import com.acmerobotics.roadrunner.Pose2d;
|
||||||
import com.acmerobotics.roadrunner.PoseVelocity2d;
|
import com.acmerobotics.roadrunner.PoseVelocity2d;
|
||||||
import com.acmerobotics.roadrunner.Twist2d;
|
|
||||||
import com.acmerobotics.roadrunner.Vector2d;
|
import com.acmerobotics.roadrunner.Vector2d;
|
||||||
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
|
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
|
||||||
|
|
||||||
|
import org.firstinspires.ftc.teamcode.Drawing;
|
||||||
import org.firstinspires.ftc.teamcode.MecanumDrive;
|
import org.firstinspires.ftc.teamcode.MecanumDrive;
|
||||||
import org.firstinspires.ftc.teamcode.TankDrive;
|
import org.firstinspires.ftc.teamcode.TankDrive;
|
||||||
|
|
||||||
public class LocalizationTest extends LinearOpMode {
|
public class LocalizationTest extends LinearOpMode {
|
||||||
@Override
|
@Override
|
||||||
public void runOpMode() throws InterruptedException {
|
public void runOpMode() throws InterruptedException {
|
||||||
|
telemetry = new MultipleTelemetry(telemetry, FtcDashboard.getInstance().getTelemetry());
|
||||||
|
|
||||||
if (TuningOpModes.DRIVE_CLASS.equals(MecanumDrive.class)) {
|
if (TuningOpModes.DRIVE_CLASS.equals(MecanumDrive.class)) {
|
||||||
MecanumDrive drive = new MecanumDrive(hardwareMap, new Pose2d(0, 0, 0));
|
MecanumDrive drive = new MecanumDrive(hardwareMap, new Pose2d(0, 0, 0));
|
||||||
|
|
||||||
@ -32,6 +37,11 @@ public class LocalizationTest extends LinearOpMode {
|
|||||||
telemetry.addData("y", drive.pose.position.y);
|
telemetry.addData("y", drive.pose.position.y);
|
||||||
telemetry.addData("heading (deg)", Math.toDegrees(drive.pose.heading.toDouble()));
|
telemetry.addData("heading (deg)", Math.toDegrees(drive.pose.heading.toDouble()));
|
||||||
telemetry.update();
|
telemetry.update();
|
||||||
|
|
||||||
|
TelemetryPacket packet = new TelemetryPacket();
|
||||||
|
packet.fieldOverlay().setStroke("#3F51B5");
|
||||||
|
Drawing.drawRobot(packet.fieldOverlay(), drive.pose);
|
||||||
|
FtcDashboard.getInstance().sendTelemetryPacket(packet);
|
||||||
}
|
}
|
||||||
} else if (TuningOpModes.DRIVE_CLASS.equals(TankDrive.class)) {
|
} else if (TuningOpModes.DRIVE_CLASS.equals(TankDrive.class)) {
|
||||||
TankDrive drive = new TankDrive(hardwareMap, new Pose2d(0, 0, 0));
|
TankDrive drive = new TankDrive(hardwareMap, new Pose2d(0, 0, 0));
|
||||||
@ -53,6 +63,11 @@ public class LocalizationTest extends LinearOpMode {
|
|||||||
telemetry.addData("y", drive.pose.position.y);
|
telemetry.addData("y", drive.pose.position.y);
|
||||||
telemetry.addData("heading (deg)", Math.toDegrees(drive.pose.heading.toDouble()));
|
telemetry.addData("heading (deg)", Math.toDegrees(drive.pose.heading.toDouble()));
|
||||||
telemetry.update();
|
telemetry.update();
|
||||||
|
|
||||||
|
TelemetryPacket packet = new TelemetryPacket();
|
||||||
|
packet.fieldOverlay().setStroke("#3F51B5");
|
||||||
|
Drawing.drawRobot(packet.fieldOverlay(), drive.pose);
|
||||||
|
FtcDashboard.getInstance().sendTelemetryPacket(packet);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
|
Reference in New Issue
Block a user