antaeus 0.3.7

A Versatile Framework for Vexide
Documentation
use antaeus::{
    motion::{
        odom::{self, devices::Pose},
        pursuit::{control, geo},
        *,
    },
    to_mutex,
};
use measurements::Length;

use crate::hardware::Robot;
pub async fn main_auton(robot: &mut Robot) {
    let mut path = pursuit::geo::Path::origin();
    path.add(geo::Point::new(Length::from_inches(20.0), Length::from_inches(20.0)));
    path.add(geo::Point::new(Length::from_inches(-20.0), Length::from_inches(20.0)));
    path.add(geo::Point::origin());

    let basic_ctrl = control::basic::BasicControl {
        track_width: Length::from_inches(13.9),
        tolerance:   Length::from_inches(0.5),
    };

    let vertical = odom::devices::Tracker {
        sensor:         odom::devices::TrackingSensor::RotationSensor(robot.v_tracker.clone()),
        offset:         0.0,
        wheel_diameter: 3.25,
        driven_gear:    1.0,
        driving_gear:   1.0,
    };

    let horizontal = odom::devices::Tracker {
        sensor:         odom::devices::TrackingSensor::RotationSensor(robot.h_tracker.clone()),
        offset:         0.0,
        wheel_diameter: 3.25,
        driven_gear:    1.0,
        driving_gear:   1.0,
    };

    let trackers = odom::devices::TrackerMech::new(vertical, horizontal, robot.imu.clone());

    let odomtrack = odom::tracker::OdomTracker {
        trackermech: trackers,
        global_pose: to_mutex(Pose::origin()),
    };
    let pursuit = pursuit::Pursuit {
        lookahead: Length::from_inches(10.0),
    };
    let _ = pursuit.follow(&odomtrack, &robot.dt, &basic_ctrl, path.clone());
}