Got intake working and initial elevator working.
Change-Id: I7b8af78b768072c0b912730a2f7a7eb21609852b
diff --git a/bot3/control_loops/intake/intake.cc b/bot3/control_loops/intake/intake.cc
index 126e491..bfa71bf 100644
--- a/bot3/control_loops/intake/intake.cc
+++ b/bot3/control_loops/intake/intake.cc
@@ -13,7 +13,6 @@
const control_loops::IntakeQueue::Position * /*position*/,
control_loops::IntakeQueue::Output *output,
control_loops::IntakeQueue::Status * /*status*/) {
-
if (output != nullptr) {
output->Zero();
diff --git a/bot3/wpilib/wpilib_interface.cc b/bot3/wpilib/wpilib_interface.cc
index 0c7df64..831c0e8 100644
--- a/bot3/wpilib/wpilib_interface.cc
+++ b/bot3/wpilib/wpilib_interface.cc
@@ -168,6 +168,12 @@
elevator_message.Send();
}
+
+ // Intake
+ {
+ auto intake_message = intake_queue.position.MakeMessage();
+ intake_message.Send();
+ }
}
void Quit() { run_ = false; }
@@ -228,8 +234,8 @@
elevator_.FetchLatest();
if (elevator_.get()) {
LOG_STRUCT(DEBUG, "solenoids", *elevator_);
- elevator_passive_support_->Set(elevator_->passive_support);
- elevator_can_support_->Set(elevator_->passive_support);
+ elevator_passive_support_->Set(!elevator_->passive_support);
+ elevator_can_support_->Set(!elevator_->can_support);
}
}
@@ -334,7 +340,7 @@
auto &queue = ::bot3::control_loops::elevator_queue.output;
LOG_STRUCT(DEBUG, "will output", *queue);
elevator_talon1_->Set(queue->elevator / 12.0);
- elevator_talon2_->Set(queue->elevator / 12.0);
+ elevator_talon2_->Set(-queue->elevator / 12.0);
}
virtual void Stop() override {
@@ -367,7 +373,7 @@
auto &queue = ::bot3::control_loops::intake_queue.output;
LOG_STRUCT(DEBUG, "will output", *queue);
intake_talon1_->Set(queue->intake / 12.0);
- intake_talon2_->Set(queue->intake / 12.0);
+ intake_talon2_->Set(-queue->intake / 12.0);
}
virtual void Stop() override {
@@ -424,10 +430,12 @@
ElevatorWriter elevator_writer;
elevator_writer.set_elevator_talon1(::std::unique_ptr<Talon>(new Talon(1)));
elevator_writer.set_elevator_talon2(::std::unique_ptr<Talon>(new Talon(6)));
+ ::std::thread elevator_writer_thread(::std::ref(elevator_writer));
IntakeWriter intake_writer;
intake_writer.set_intake_talon1(::std::unique_ptr<Talon>(new Talon(2)));
intake_writer.set_intake_talon2(::std::unique_ptr<Talon>(new Talon(5)));
+ ::std::thread intake_writer_thread(::std::ref(intake_writer));
::std::unique_ptr<::frc971::wpilib::BufferedPcm> pcm(
new ::frc971::wpilib::BufferedPcm());
@@ -455,6 +463,13 @@
drivetrain_writer.Quit();
drivetrain_writer_thread.join();
+
+ elevator_writer.Quit();
+ elevator_writer_thread.join();
+
+ intake_writer.Quit();
+ intake_writer_thread.join();
+
solenoid_writer.Quit();
solenoid_thread.join();