wpi-32u4-library
Chassis.h
Go to the documentation of this file.
1#pragma once
2
3#include <Arduino.h>
4#include <Romi32U4Motors.h>
5
19{
20public:
23
24protected:
25 const float cmPerEncoderTick;
26 const float robotRadius;
27 const uint16_t ctrlIntervalMS = 16;
28
29public:
36 Chassis(float wheelDiam = 7, float ticksPerRevolution = 1440, float wheelTrack = 14.7)
37 : cmPerEncoderTick(wheelDiam * M_PI / ticksPerRevolution), robotRadius(wheelTrack / 2.0)
38 {}
39
42 void init(void);
43
46 void setMotorPIDcoeffs(float kp, float ki);
47
50 void idle(void);
51
57 void setMotorEfforts(int leftEffort, int rightEffort);
58
64 void setWheelSpeeds(float leftSpeed, float rightSpeed);
65
71 void setTwist(float forwardSpeed, float turningSpeed);
72
81 void driveFor(float forwardDistance, float forwardSpeed, bool block = false);
82
89 void turnFor(float turnAngle, float turningSpeed, bool block = false);
90
95 bool checkMotionComplete(void);
96
97 void printSpeeds(void);
98 void printEncoderCounts(void);
99
100 inline void updateEncoderDeltas();
101};
102
103extern Chassis chassis;
Chassis chassis
void idle(void)
Idles chassis. Motors will stop.
Definition: Chassis.cpp:46
const uint16_t ctrlIntervalMS
Definition: Chassis.h:27
const float cmPerEncoderTick
Definition: Chassis.h:25
void turnFor(float turnAngle, float turningSpeed, bool block=false)
Commands the chassis to turn a set angle.
Definition: Chassis.cpp:99
void updateEncoderDeltas()
Definition: Chassis.cpp:135
void init(void)
Initializes the chassis. Must be called in setup().
Definition: Chassis.cpp:13
void printSpeeds(void)
Definition: Chassis.cpp:144
LeftMotor leftMotor
Definition: Chassis.h:21
void driveFor(float forwardDistance, float forwardSpeed, bool block=false)
Commands the robot to drive at a distance and speed.
Definition: Chassis.cpp:80
bool checkMotionComplete(void)
Checks if the motion commanded by driveFor() or turnFor() is done.
Definition: Chassis.cpp:118
void setTwist(float forwardSpeed, float turningSpeed)
Sets target motion for the chassis.
Definition: Chassis.cpp:70
void setMotorEfforts(int leftEffort, int rightEffort)
Sets motor efforts. Max speed is 420.
Definition: Chassis.cpp:54
void printEncoderCounts(void)
Definition: Chassis.cpp:152
void setMotorPIDcoeffs(float kp, float ki)
Sets PID coefficients for the motors. Not independent.
Definition: Chassis.cpp:35
const float robotRadius
Definition: Chassis.h:26
Chassis(float wheelDiam=7, float ticksPerRevolution=1440, float wheelTrack=14.7)
Chassis constructor.
Definition: Chassis.h:36
void setWheelSpeeds(float leftSpeed, float rightSpeed)
Sets target wheel speeds in cm/sec.
Definition: Chassis.cpp:60
RightMotor rightMotor
Definition: Chassis.h:22