blob: 3155cf7ba98b3874c0d674d8ddb33f3d993281db [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"
Brian Silvermanaf535942013-03-31 19:07:35 -07005#include "aos/common/logging/logging.h"
Brian Silverman5b3e51e2013-03-29 22:53:44 -07006
Brian Silverman6ae77dd2013-03-29 22:28:08 -07007#include "frc971/queues/GyroAngle.q.h"
8#include "frc971/queues/CameraTarget.q.h"
Brian Silverman5b3e51e2013-03-29 22:53:44 -07009
Brian Silverman6ae77dd2013-03-29 22:28:08 -070010#include "vision/RingBuffer.h"
Brian Silverman68a5a012013-03-29 23:37:04 -070011#include "vision/SensorProcessor.h"
Brian Silverman6ae77dd2013-03-29 22:28:08 -070012
Brian Silverman68a5a012013-03-29 23:37:04 -070013using ::frc971::vision::RingBuffer;
14using ::frc971::sensors::gyro;
15using ::frc971::vision::targets;
16using ::frc971::vision::target_angle;
17using ::frc971::kPixelsToMeters;
18using ::frc971::kMetersToShooterSpeeds;
19using ::frc971::kMetersToShooterAngles;
20using ::frc971::interpolate;
Brian Silverman6ae77dd2013-03-29 22:28:08 -070021
Brian Silvermane8ee1e52013-03-29 23:09:37 -070022int main() {
Brian Silverman68a5a012013-03-29 23:37:04 -070023 //RingBuffer< ::aos::time::Time, double> buff;
Brian Silvermane8ee1e52013-03-29 23:09:37 -070024 ::aos::InitNRT();
25 while (true) {
Brian Silverman68a5a012013-03-29 23:37:04 -070026 //gyro.FetchNextBlocking();
27 //buff.Sample(gyro->sent_time, gyro->angle);
Brian Silvermane8ee1e52013-03-29 23:09:37 -070028 if (targets.FetchNext()) {
Brian Silverman68a5a012013-03-29 23:37:04 -070029 /*::aos::time::Time stamp = ::aos::time::Time::InNS(targets->timestamp);
Brian Silvermane8ee1e52013-03-29 23:09:37 -070030 double angle_goal =
31 buff.ValueAt(stamp) -
32 M_PI / 2.0 * targets->percent_azimuth_off_center / 2.0;
33 printf("%g ",angle_goal);
Brian Silverman68a5a012013-03-29 23:37:04 -070034 printf("%g\n",gyro->angle);*/
35
36 double meters = interpolate(
37 sizeof(kPixelsToMeters) / sizeof(kPixelsToMeters[0]),
38 kPixelsToMeters,
39 targets->percent_elevation_off_center);
Austin Schuh86bec782013-04-04 05:50:52 +000040 const double shooter_speed = interpolate(
41 sizeof(kMetersToShooterSpeeds) / sizeof(kMetersToShooterSpeeds[0]),
42 kMetersToShooterSpeeds,
43 meters);
44 const double shooter_angle = interpolate(
45 sizeof(kMetersToShooterAngles) / sizeof(kMetersToShooterAngles[0]),
46 kMetersToShooterAngles,
47 meters);
48
49 LOG(DEBUG, "think target is %f meters away Speed %f Angle %f\n",
50 meters, shooter_speed, shooter_angle);
Brian Silvermane8ee1e52013-03-29 23:09:37 -070051
52 target_angle.MakeWithBuilder()
Brian Silvermanaf535942013-03-31 19:07:35 -070053 /*.target_angle(angle_goal)*/
Austin Schuh86bec782013-04-04 05:50:52 +000054 .shooter_speed(shooter_speed)
55 .shooter_angle(shooter_angle)
Brian Silverman68a5a012013-03-29 23:37:04 -070056 .Send();
Brian Silverman6ae77dd2013-03-29 22:28:08 -070057 }
58 }
Brian Silvermane8ee1e52013-03-29 23:09:37 -070059 ::aos::Cleanup();
Brian Silverman6ae77dd2013-03-29 22:28:08 -070060}