blob: d5e8822c9a9fc639bf48403e0f5f619513fd5fa7 [file] [log] [blame]
Brian Silverman6ae77dd2013-03-29 22:28:08 -07001#include "math.h"
2
Brian Silverman5b3e51e2013-03-29 22:53:44 -07003#include "aos/common/time.h"
4#include "aos/atom_code/init.h"
5
Brian Silverman6ae77dd2013-03-29 22:28:08 -07006#include "frc971/queues/GyroAngle.q.h"
7#include "frc971/queues/CameraTarget.q.h"
Brian Silverman5b3e51e2013-03-29 22:53:44 -07008
Brian Silverman6ae77dd2013-03-29 22:28:08 -07009#include "vision/RingBuffer.h"
Brian Silverman68a5a012013-03-29 23:37:04 -070010#include "vision/SensorProcessor.h"
Brian Silverman6ae77dd2013-03-29 22:28:08 -070011
Brian Silverman68a5a012013-03-29 23:37:04 -070012using ::frc971::vision::RingBuffer;
13using ::frc971::sensors::gyro;
14using ::frc971::vision::targets;
15using ::frc971::vision::target_angle;
16using ::frc971::kPixelsToMeters;
17using ::frc971::kMetersToShooterSpeeds;
18using ::frc971::kMetersToShooterAngles;
19using ::frc971::interpolate;
Brian Silverman6ae77dd2013-03-29 22:28:08 -070020
Brian Silvermane8ee1e52013-03-29 23:09:37 -070021int main() {
Brian Silverman68a5a012013-03-29 23:37:04 -070022 //RingBuffer< ::aos::time::Time, double> buff;
Brian Silvermane8ee1e52013-03-29 23:09:37 -070023 ::aos::InitNRT();
24 while (true) {
Brian Silverman68a5a012013-03-29 23:37:04 -070025 //gyro.FetchNextBlocking();
26 //buff.Sample(gyro->sent_time, gyro->angle);
Brian Silvermane8ee1e52013-03-29 23:09:37 -070027 if (targets.FetchNext()) {
Brian Silverman68a5a012013-03-29 23:37:04 -070028 /*::aos::time::Time stamp = ::aos::time::Time::InNS(targets->timestamp);
Brian Silvermane8ee1e52013-03-29 23:09:37 -070029 double angle_goal =
30 buff.ValueAt(stamp) -
31 M_PI / 2.0 * targets->percent_azimuth_off_center / 2.0;
32 printf("%g ",angle_goal);
Brian Silverman68a5a012013-03-29 23:37:04 -070033 printf("%g\n",gyro->angle);*/
34
35 double meters = interpolate(
36 sizeof(kPixelsToMeters) / sizeof(kPixelsToMeters[0]),
37 kPixelsToMeters,
38 targets->percent_elevation_off_center);
Brian Silvermane8ee1e52013-03-29 23:09:37 -070039
40 target_angle.MakeWithBuilder()
Brian Silverman68a5a012013-03-29 23:37:04 -070041 .target_angle(/*angle_goal*/0)
42 .shooter_speed(interpolate(
43 sizeof(kMetersToShooterSpeeds) / sizeof(kMetersToShooterSpeeds[0]),
44 kMetersToShooterSpeeds,
45 meters))
46 .shooter_angle(interpolate(
47 sizeof(kMetersToShooterAngles) / sizeof(kMetersToShooterAngles[0]),
48 kMetersToShooterAngles,
49 meters))
50 .Send();
Brian Silverman6ae77dd2013-03-29 22:28:08 -070051 }
52 }
Brian Silvermane8ee1e52013-03-29 23:09:37 -070053 ::aos::Cleanup();
Brian Silverman6ae77dd2013-03-29 22:28:08 -070054}