use std::error::Error;
use crate::{builder::SpyderBuilder, gait::Trigait};
mod bezier;
mod builder;
mod gait;
mod ik;
mod leg;
mod spyder;
fn main() -> Result<(), Box<dyn Error>> {
let mut spyder = SpyderBuilder::default()
.leg_params(42.25, 120.0, 180.0)
.home(160.0, 0.0, -100.0)
.azimuth_angle(60.0)
.cw_ang_resolution(10)
.build()
.unwrap();
let lut = spyder.generate_lut(&Trigait::new(160.0, 180.0, 35))?;
let _ = spyder.get_standing_pose();
println!("{:?}", lut);
Ok(())
}
#[cfg(test)]
mod tests {
use crate::{builder::SpyderBuilder, gait::Trigait};
#[test]
fn test_get_standing_pose() {
let spyder = SpyderBuilder::default()
.leg_params(42.25, 120.0, 180.0)
.home(160.0, 0.0, -100.0)
.azimuth_angle(60.0)
.cw_ang_resolution(60)
.build()
.unwrap();
let pose = spyder.get_standing_pose().unwrap();
assert_eq!(
pose,
[
0.0,
0.7078761251016318,
-2.1304601389264617,
0.0,
0.7078761251016318,
-2.1304601389264617,
0.0,
0.7078761251016318,
-2.1304601389264617,
0.0,
0.7078761251016318,
-2.1304601389264617,
0.0,
0.7078761251016318,
-2.1304601389264617,
0.0,
0.7078761251016318,
-2.1304601389264617
]
);
}
#[test]
fn test_generate_lut() {
let mut spyder = SpyderBuilder::default()
.leg_params(42.25, 120.0, 180.0)
.home(160.0, 0.0, -100.0)
.azimuth_angle(60.0)
.cw_ang_resolution(60)
.build()
.unwrap();
let lut = spyder
.generate_lut(&Trigait::new(160.0, 180.0, 35))
.unwrap();
assert_eq!(
lut[0][0],
[
0.0,
2.1012205327122304,
-2.2322120713457885,
0.0,
0.7078761251016318,
-2.1304601389264617,
0.0,
2.1012205327122304,
-2.2322120713457885,
0.0,
0.7078761251016318,
-2.1304601389264617,
0.0,
2.1012205327122304,
-2.2322120713457885,
0.0,
0.7078761251016318,
-2.1304601389264617
]
)
}
}