use nalgebra::{self as na, UnitQuaternion};
use rerun::RecordingStreamBuilder;
use rerun_urdf::RerunUrdfLoader;
use std::collections::HashMap;
fn main() -> anyhow::Result<()> {
let rec = RecordingStreamBuilder::new("urdf_rust").spawn()?;
let urdf_path = "E:\\yixing\\code\\Robot-Exp\\drives\\asserts\\jaka\\jaka_minicobo.urdf";
let mesh_path = "E:\\yixing\\code\\Robot-Exp\\drives\\asserts\\";
let loader = RerunUrdfLoader::from_urdf(urdf_path, Some(mesh_path), "world/robots/r1")?;
loader.register_statics(&rec, na::Isometry3::identity())?;
let mut frame: i64 = 0;
loop {
let mut poses: HashMap<String, na::Isometry3<f64>> = HashMap::new();
for (i, link) in loader.link_names().enumerate() {
let pose = if link == "base_link" {
na::Isometry3::identity()
} else {
na::Isometry3::from_parts(
[0.0, 0.0, 0.0].into(),
UnitQuaternion::from_axis_angle(
&na::Vector3::z_axis(),
frame as f64 * i as f64 * 0.03,
),
)
};
poses.insert(link.to_string(), pose);
}
loader.log_frame(&rec, frame, &poses, "frame");
frame += 1;
std::thread::sleep(std::time::Duration::from_millis(30));
}
}