Tuned intake action to work every time.
Change-Id: I3918d0270581e33d002e5f578dde5785700f19f1
diff --git a/frc971/actors/pickup_actor.cc b/frc971/actors/pickup_actor.cc
index ef32c92..f0ea383 100644
--- a/frc971/actors/pickup_actor.cc
+++ b/frc971/actors/pickup_actor.cc
@@ -12,15 +12,23 @@
namespace frc971 {
namespace actors {
+namespace {
+constexpr double kClawPickupVelocity = 3.00;
+constexpr double kClawPickupAcceleration = 4.0;
+constexpr double kClawMoveVelocity = 3.00;
+constexpr double kClawMoveAcceleration = 8.0;
+} // namespace
PickupActor::PickupActor(PickupActionQueueGroup* queues)
: aos::common::actions::ActorBase<PickupActionQueueGroup>(queues) {}
bool PickupActor::RunAction(const PickupParams& params) {
- constexpr double kAngleEpsilon = 0.05;
+ constexpr double kAngleEpsilon = 0.10;
{
auto message = control_loops::claw_queue.goal.MakeMessage();
message->angle = params.pickup_angle;
+ message->max_velocity = kClawPickupVelocity;
+ message->max_acceleration = kClawPickupAcceleration;
message->angular_velocity = 0.0;
message->intake = 0.0;
message->rollers_closed = true;
@@ -43,6 +51,8 @@
{
auto message = control_loops::claw_queue.goal.MakeMessage();
message->angle = params.pickup_angle;
+ message->max_velocity = kClawPickupVelocity;
+ message->max_acceleration = kClawPickupAcceleration;
message->angular_velocity = 0.0;
message->intake = params.intake_voltage;
message->rollers_closed = true;
@@ -64,7 +74,9 @@
{
auto message = control_loops::claw_queue.goal.MakeMessage();
- message->angle = params.suck_angle;
+ message->angle = params.suck_angle_finish;
+ message->max_velocity = kClawMoveVelocity;
+ message->max_acceleration = kClawMoveAcceleration;
message->angular_velocity = 0.0;
message->intake = params.intake_voltage;
message->rollers_closed = true;
@@ -83,6 +95,8 @@
{
auto message = control_loops::claw_queue.goal.MakeMessage();
message->angle = params.pickup_finish_angle;
+ message->max_velocity = kClawMoveVelocity;
+ message->max_acceleration = kClawMoveAcceleration;
message->angular_velocity = 0.0;
message->intake = 0.0;
message->rollers_closed = true;
diff --git a/frc971/joystick_reader.cc b/frc971/joystick_reader.cc
index 9fd4441..502c83e 100644
--- a/frc971/joystick_reader.cc
+++ b/frc971/joystick_reader.cc
@@ -157,12 +157,16 @@
if (data.PosEdge(kPickup)) {
actors::PickupParams params;
- params.pickup_angle = 0.7;
- params.suck_angle = 0.5;
+ // Lift to here initially.
+ params.pickup_angle = 0.9;
+ // Start sucking here
+ params.suck_angle = 0.8;
+ // Go back down to here to finish sucking.
params.suck_angle_finish = 0.4;
- params.pickup_finish_angle = 0.87;
- params.intake_time = 0.5;
- params.intake_voltage = 12.0;
+ // Pack the box back in here.
+ params.pickup_finish_angle = 0.95;
+ params.intake_time = 0.8;
+ params.intake_voltage = 9.0;
action_queue_.EnqueueAction(actors::MakePickupAction(params));
}
if (data.PosEdge(kElevatorDown)) {