mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[wpilib][sim] Add Onboard IMU Sim (#8855)
This provides the ability to simulate parts of the Onboard IMU at the HAL level. This allows team to use and simulate the IMU in code, and a follow up PR could be made to the halsim_gui to add a new widget to view and modify the data graphically. Since the C++ IMU uses radians for angles that is what I did for the simulator. Partially deals with #8845
This commit is contained in:
@@ -132,8 +132,7 @@ void Drivetrain::SimulationPeriodic() {
|
||||
leftEncoderSim.SetRate(drivetrainSimulator.GetLeftVelocity().value());
|
||||
rightEncoderSim.SetDistance(drivetrainSimulator.GetRightPosition().value());
|
||||
rightEncoderSim.SetRate(drivetrainSimulator.GetRightVelocity().value());
|
||||
// gyroSim.SetAngle(-drivetrainSimulator.GetHeading().Degrees().value());
|
||||
// // TODO(Ryan): fixup when sim implemented
|
||||
imuSim.SetYaw(-drivetrainSimulator.GetHeading().Degrees());
|
||||
}
|
||||
|
||||
void Drivetrain::Periodic() {
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "wpi/nt/NetworkTableInstance.hpp"
|
||||
#include "wpi/simulation/DifferentialDrivetrainSim.hpp"
|
||||
#include "wpi/simulation/EncoderSim.hpp"
|
||||
#include "wpi/simulation/OnboardIMUSim.hpp"
|
||||
#include "wpi/smartdashboard/Field2d.hpp"
|
||||
#include "wpi/units/angle.hpp"
|
||||
#include "wpi/units/angular_velocity.hpp"
|
||||
@@ -166,6 +167,7 @@ class Drivetrain {
|
||||
// Simulation classes
|
||||
wpi::sim::EncoderSim leftEncoderSim{leftEncoder};
|
||||
wpi::sim::EncoderSim rightEncoderSim{rightEncoder};
|
||||
wpi::sim::OnboardIMUSim imuSim;
|
||||
wpi::Field2d fieldSim;
|
||||
wpi::Field2d fieldApproximation;
|
||||
wpi::math::LinearSystem<2, 2, 2> drivetrainSystem =
|
||||
|
||||
Reference in New Issue
Block a user