mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
Merge branch 'main' into 2027
This commit is contained in:
56
wpilibcExamples/src/main/cpp/examples/Xrptimed/cpp/Robot.cpp
Normal file
56
wpilibcExamples/src/main/cpp/examples/Xrptimed/cpp/Robot.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "Robot.hpp"
|
||||
|
||||
Robot::Robot() {
|
||||
wpi::util::SendableRegistry::AddChild(&m_drive, &m_leftMotor);
|
||||
wpi::util::SendableRegistry::AddChild(&m_drive, &m_rightMotor);
|
||||
|
||||
// We need to invert one side of the drivetrain so that positive voltages
|
||||
// result in both sides moving forward. Depending on how your robot's
|
||||
// gearbox is constructed, you might have to invert the left side instead.
|
||||
m_rightMotor.SetInverted(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is called every 20 ms, no matter the mode. Use
|
||||
* this for items like diagnostics that you want ran during disabled,
|
||||
* autonomous, teleoperated and test.
|
||||
*
|
||||
* <p> This runs after the mode specific periodic functions, but before
|
||||
* LiveWindow and SmartDashboard integrated updating.
|
||||
*/
|
||||
void Robot::RobotPeriodic() {}
|
||||
|
||||
// This function is only once each time Autonomous is enabled
|
||||
void Robot::AutonomousInit() {
|
||||
m_timer.Restart();
|
||||
}
|
||||
|
||||
// This function is called periodically during autonomous mode
|
||||
void Robot::AutonomousPeriodic() {
|
||||
// Drive for 2 seconds
|
||||
if (m_timer.Get() < 2_s) {
|
||||
// Drive forwards half speed, make sure to turn input squaring off
|
||||
m_drive.ArcadeDrive(0.5, 0.0, false);
|
||||
} else {
|
||||
// Stop robot
|
||||
m_drive.ArcadeDrive(0.0, 0.0, false);
|
||||
}
|
||||
}
|
||||
|
||||
// This function is only once each time telop is enabled
|
||||
void Robot::TeleopInit() {}
|
||||
|
||||
// This function is called periodically during teleop mode
|
||||
void Robot::TeleopPeriodic() {
|
||||
m_drive.ArcadeDrive(-m_controller.GetRawAxis(2), -m_controller.GetRawAxis(1));
|
||||
}
|
||||
|
||||
#ifndef RUNNING_FRC_TESTS
|
||||
int main() {
|
||||
return wpi::StartRobot<Robot>();
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,32 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "wpi/drive/DifferentialDrive.hpp"
|
||||
#include "wpi/driverstation/Joystick.hpp"
|
||||
#include "wpi/framework/TimedRobot.hpp"
|
||||
#include "wpi/system/Timer.hpp"
|
||||
#include "wpi/xrp/XRPMotor.hpp"
|
||||
|
||||
class Robot : public wpi::TimedRobot {
|
||||
public:
|
||||
Robot();
|
||||
void RobotPeriodic() override;
|
||||
void AutonomousInit() override;
|
||||
void AutonomousPeriodic() override;
|
||||
void TeleopInit() override;
|
||||
void TeleopPeriodic() override;
|
||||
|
||||
private:
|
||||
wpi::xrp::XRPMotor m_leftMotor{0};
|
||||
wpi::xrp::XRPMotor m_rightMotor{1};
|
||||
// Assumes a gamepad plugged into channel 0
|
||||
wpi::Joystick m_controller{0};
|
||||
wpi::Timer m_timer;
|
||||
|
||||
wpi::DifferentialDrive m_drive{
|
||||
[&](double output) { m_leftMotor.Set(output); },
|
||||
[&](double output) { m_rightMotor.Set(output); }};
|
||||
};
|
||||
@@ -510,6 +510,22 @@
|
||||
"xrp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "XRP Timed",
|
||||
"description": "An very basic timed robot program that can be used with the XRP reference robot design.",
|
||||
"tags": [
|
||||
"XRP",
|
||||
"Differential Drive",
|
||||
"Joystick"
|
||||
],
|
||||
"foldername": "Xrptimed",
|
||||
"gradlebase": "cppxrp",
|
||||
"mainclass": "Main",
|
||||
"commandversion": 2,
|
||||
"extravendordeps": [
|
||||
"xrp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "StateSpaceFlywheel",
|
||||
"description": "Control a flywheel using a state-space model (based on values from CAD), with a Kalman Filter and LQR.",
|
||||
|
||||
Reference in New Issue
Block a user