use clap::Parser;
use std::path::PathBuf;
use uvt_plot;
#[derive(clap::ValueEnum, Parser, Clone, Default, Debug)]
enum Mode {
#[default]
UVT,
Rosbag,
MCAP,
}
#[derive(Parser, Debug)]
#[clap(author, version, about)]
struct Args {
#[clap(short, long)]
input_file: PathBuf,
#[clap(short, long, default_value_t, value_enum)]
mode: Mode,
#[clap(long, default_value = "/map")]
map_topic: String,
#[clap(long, default_value = "/odom")]
traj_topic: String,
}
fn main() {
let args = Args::parse();
if !args.input_file.exists() {
eprintln!("File does not exist: {}", args.input_file.display());
std::process::exit(1);
}
let uv_traj = match args.mode {
Mode::UVT => uvt::Uvt::read_file(args.input_file),
Mode::Rosbag => uvt::Uvt::read_rosbag(args.input_file, &args.map_topic, &args.traj_topic),
Mode::MCAP => uvt::Uvt::read_mcap(args.input_file, &args.map_topic, &args.traj_topic),
}
.unwrap();
uvt_plot::plot_trajectory(uv_traj);
}