From bd435caa335ae388bf6749cfc02fa10947ae78a0 Mon Sep 17 00:00:00 2001 From: Jom Preechayasomboon Date: Thu, 3 Jul 2025 10:11:32 -0700 Subject: [PATCH 1/3] update dependencies --- .gitignore | 3 +++ Cargo.toml | 10 +++++----- benches/fk.rs | 2 +- examples/interactive_ik.rs | 34 +++++++++++++++++++++----------- examples/interactive_ik_scara.rs | 26 ++++++++++++++++-------- 5 files changed, 49 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index fc1280f..ea1273f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ Cargo.lock # for emacs *~ + +# JetBrains +.idea diff --git a/Cargo.toml b/Cargo.toml index e291b0f..be058c4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,11 +19,11 @@ serde = ["nalgebra/serde-serialize", "dep:serde"] # Note: nalgebra, simba, urdf-rs, and serde are public dependencies. [dependencies] -nalgebra = "0.30" -simba = "0.7" -thiserror = "2.0" -tracing = "0.1" -urdf-rs = "0.9" +nalgebra = "0.33.2" +simba = "0.9.0" +thiserror = "2.0.12" +tracing = "0.1.41" +urdf-rs = "0.9.0" serde = { version = "1.0", features = ["derive"], optional = true } diff --git a/benches/fk.rs b/benches/fk.rs index c407921..d38a9b5 100644 --- a/benches/fk.rs +++ b/benches/fk.rs @@ -99,7 +99,7 @@ where .iter() .map(|range| match range { Some(range) => { - (range.max.clone() - range.min.clone()) * na::convert(rand::random()) + (range.max.clone() - range.min.clone()) * na::convert(rand::random::()) + range.min.clone() } None => na::convert::(rand::random::() - 0.5) * na::convert(2.0 * PI), diff --git a/examples/interactive_ik.rs b/examples/interactive_ik.rs index ce49532..bc24008 100644 --- a/examples/interactive_ik.rs +++ b/examples/interactive_ik.rs @@ -26,7 +26,7 @@ fn main() { use kiss3d::light::Light; use kiss3d::scene::SceneNode; use kiss3d::window::Window; - use na::{Isometry3, Point3, Translation3, UnitQuaternion, Vector3}; + use na::{Isometry3, Translation3, UnitQuaternion, Vector3}; #[derive(Debug, Parser)] struct Opt { @@ -114,9 +114,9 @@ fn main() { } let x_ind = j as f32 - 2.5; let y_ind = i as f32 - 2.5; - let trans = Isometry3::from_parts( - Translation3::new(size * x_ind, 0.0, size * y_ind), - UnitQuaternion::from_euler_angles(0.0, -1.57, -1.57), + let trans = kiss3d::nalgebra::Isometry3::from_parts( + kiss3d::nalgebra::Translation3::new(size * x_ind, 0.0, size * y_ind), + kiss3d::nalgebra::UnitQuaternion::from_euler_angles(0.0, -1.57, -1.57), ); c0.set_local_transformation(trans); panels.push(c0); @@ -144,6 +144,16 @@ fn main() { c6.set_color(0.0, 0.5, 0.2); vec![c_fixed, c0, c1, c2, c3, c4, c5, c6] } + + fn to_kiss3d_transform(transform: &nalgebra::Isometry3) -> kiss3d::nalgebra::Isometry3 { + let target_translation = kiss3d::nalgebra::Translation3::new(transform.translation.x, transform.translation.y, transform.translation.z); + let target_rotation = kiss3d::nalgebra::Quaternion::new(transform.rotation.w, transform.rotation.i, transform.rotation.j, transform.rotation.k); + let target_rotation = kiss3d::nalgebra::UnitQuaternion::from_quaternion(target_rotation); + kiss3d::nalgebra::Isometry3::from_parts( + target_translation, + target_rotation + ) + } let opt = Opt::parse(); let root = create_joint_with_link_array(); @@ -161,17 +171,17 @@ fn main() { arm.iter().next().unwrap().set_origin( base_rot * Isometry3::from_parts( - Translation3::new(0.0, 0.0, 0.6), - UnitQuaternion::from_euler_angles(0.0, 0.0, 0.0), - ), + Translation3::new(0.0, 0.0, 0.6), + UnitQuaternion::from_euler_angles(0.0, 0.0, 0.0), + ), ); arm.update_transforms(); let end = arm.find("wrist_roll").unwrap(); let mut target = end.world_transform().unwrap(); let mut c_t = window.add_sphere(0.05); c_t.set_color(1.0, 0.2, 0.2); - let eye = Point3::new(0.5f32, 1.0, 2.0); - let at = Point3::new(0.0f32, 0.0, 0.0); + let eye = kiss3d::nalgebra::Point3::new(0.5f32, 1.0, 2.0); + let at = kiss3d::nalgebra::Point3::new(0.0f32, 0.0, 0.0); let mut arc_ball = ArcBall::new(eye, at); let mut solver = JacobianIkSolver::default(); //solver.set_nullspace_function(Box::new(|vec| vec.iter().map(|x| -x).collect())); @@ -216,12 +226,12 @@ fn main() { .unwrap_or_else(|err| { println!("Err: {err}"); }); - c_t.set_local_transformation(target); + c_t.set_local_transformation(to_kiss3d_transform(&target)); for (i, trans) in arm.update_transforms().iter().enumerate() { - cubes[i].set_local_transformation(*trans); + cubes[i].set_local_transformation(to_kiss3d_transform(trans)); } } } #[cfg(target_family = "wasm")] -fn main() {} +fn main() {} \ No newline at end of file diff --git a/examples/interactive_ik_scara.rs b/examples/interactive_ik_scara.rs index f85e3de..b590217 100644 --- a/examples/interactive_ik_scara.rs +++ b/examples/interactive_ik_scara.rs @@ -25,7 +25,7 @@ fn main() { use kiss3d::light::Light; use kiss3d::scene::SceneNode; use kiss3d::window::Window; - use na::{Isometry3, Point3, Translation3, UnitQuaternion, Vector3}; + use na::{Isometry3, Translation3, UnitQuaternion, Vector3}; fn create_joint_with_link_array() -> k::Node { let fixed: k::Node = NodeBuilder::new() @@ -83,9 +83,9 @@ fn main() { } let x_ind = j as f32 - 2.5; let y_ind = i as f32 - 2.5; - let trans = Isometry3::from_parts( - Translation3::new(size * x_ind, 0.0, size * y_ind), - UnitQuaternion::from_euler_angles(0.0, -1.57, -1.57), + let trans = kiss3d::nalgebra::Isometry3::from_parts( + kiss3d::nalgebra::Translation3::new(size * x_ind, 0.0, size * y_ind), + kiss3d::nalgebra::UnitQuaternion::from_euler_angles(0.0, -1.57, -1.57), ); c0.set_local_transformation(trans); panels.push(c0); @@ -108,6 +108,16 @@ fn main() { vec![c_fixed, c0, c1, c2, c3] } + fn to_kiss3d_transform(transform: &nalgebra::Isometry3) -> kiss3d::nalgebra::Isometry3 { + let target_translation = kiss3d::nalgebra::Translation3::new(transform.translation.x, transform.translation.y, transform.translation.z); + let target_rotation = kiss3d::nalgebra::Quaternion::new(transform.rotation.w, transform.rotation.i, transform.rotation.j, transform.rotation.k); + let target_rotation = kiss3d::nalgebra::UnitQuaternion::from_quaternion(target_rotation); + kiss3d::nalgebra::Isometry3::from_parts( + target_translation, + target_rotation + ) + } + let root = create_joint_with_link_array(); let arm = k::SerialChain::new_unchecked(k::Chain::from_root(root)); @@ -132,8 +142,8 @@ fn main() { let mut target = end.world_transform().unwrap(); let mut c_t = window.add_sphere(0.05); c_t.set_color(1.0, 0.2, 0.2); - let eye = Point3::new(0.5f32, 1.0, 2.0); - let at = Point3::new(0.0f32, 0.0, 0.0); + let eye = kiss3d::nalgebra::Point3::new(0.5f32, 1.0, 2.0); + let at = kiss3d::nalgebra::Point3::new(0.0f32, 0.0, 0.0); let mut arc_ball = ArcBall::new(eye, at); let solver = JacobianIkSolver::default(); @@ -192,9 +202,9 @@ fn main() { println!("Err: {err}"); }); } - c_t.set_local_transformation(target); + c_t.set_local_transformation(to_kiss3d_transform(&target)); for (i, trans) in arm.update_transforms().iter().enumerate() { - cubes[i].set_local_transformation(*trans); + cubes[i].set_local_transformation(to_kiss3d_transform(trans)); } } } From 64177e2ffe340bd23bb7d033c20794561491c1ce Mon Sep 17 00:00:00 2001 From: Jom Preechayasomboon Date: Thu, 3 Jul 2025 10:31:41 -0700 Subject: [PATCH 2/3] use proper semantic versioning --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index be058c4..ddb71a6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,11 +19,11 @@ serde = ["nalgebra/serde-serialize", "dep:serde"] # Note: nalgebra, simba, urdf-rs, and serde are public dependencies. [dependencies] -nalgebra = "0.33.2" -simba = "0.9.0" -thiserror = "2.0.12" -tracing = "0.1.41" -urdf-rs = "0.9.0" +nalgebra = "0.33" +simba = "0.9" +thiserror = "2.0" +tracing = "0.1" +urdf-rs = "0.9" serde = { version = "1.0", features = ["derive"], optional = true } From f06b504c563a4763dbf2d47366b868f67d5c9dd2 Mon Sep 17 00:00:00 2001 From: Jom Preechayasomboon Date: Thu, 3 Jul 2025 10:39:45 -0700 Subject: [PATCH 3/3] cargo fmt --- examples/interactive_ik.rs | 34 ++++++++++++++++++++------------ examples/interactive_ik_scara.rs | 24 ++++++++++++++-------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/examples/interactive_ik.rs b/examples/interactive_ik.rs index bc24008..d1e204a 100644 --- a/examples/interactive_ik.rs +++ b/examples/interactive_ik.rs @@ -144,15 +144,23 @@ fn main() { c6.set_color(0.0, 0.5, 0.2); vec![c_fixed, c0, c1, c2, c3, c4, c5, c6] } - - fn to_kiss3d_transform(transform: &nalgebra::Isometry3) -> kiss3d::nalgebra::Isometry3 { - let target_translation = kiss3d::nalgebra::Translation3::new(transform.translation.x, transform.translation.y, transform.translation.z); - let target_rotation = kiss3d::nalgebra::Quaternion::new(transform.rotation.w, transform.rotation.i, transform.rotation.j, transform.rotation.k); + + fn to_kiss3d_transform( + transform: &nalgebra::Isometry3, + ) -> kiss3d::nalgebra::Isometry3 { + let target_translation = kiss3d::nalgebra::Translation3::new( + transform.translation.x, + transform.translation.y, + transform.translation.z, + ); + let target_rotation = kiss3d::nalgebra::Quaternion::new( + transform.rotation.w, + transform.rotation.i, + transform.rotation.j, + transform.rotation.k, + ); let target_rotation = kiss3d::nalgebra::UnitQuaternion::from_quaternion(target_rotation); - kiss3d::nalgebra::Isometry3::from_parts( - target_translation, - target_rotation - ) + kiss3d::nalgebra::Isometry3::from_parts(target_translation, target_rotation) } let opt = Opt::parse(); @@ -171,9 +179,9 @@ fn main() { arm.iter().next().unwrap().set_origin( base_rot * Isometry3::from_parts( - Translation3::new(0.0, 0.0, 0.6), - UnitQuaternion::from_euler_angles(0.0, 0.0, 0.0), - ), + Translation3::new(0.0, 0.0, 0.6), + UnitQuaternion::from_euler_angles(0.0, 0.0, 0.0), + ), ); arm.update_transforms(); let end = arm.find("wrist_roll").unwrap(); @@ -181,7 +189,7 @@ fn main() { let mut c_t = window.add_sphere(0.05); c_t.set_color(1.0, 0.2, 0.2); let eye = kiss3d::nalgebra::Point3::new(0.5f32, 1.0, 2.0); - let at = kiss3d::nalgebra::Point3::new(0.0f32, 0.0, 0.0); + let at = kiss3d::nalgebra::Point3::new(0.0f32, 0.0, 0.0); let mut arc_ball = ArcBall::new(eye, at); let mut solver = JacobianIkSolver::default(); //solver.set_nullspace_function(Box::new(|vec| vec.iter().map(|x| -x).collect())); @@ -234,4 +242,4 @@ fn main() { } #[cfg(target_family = "wasm")] -fn main() {} \ No newline at end of file +fn main() {} diff --git a/examples/interactive_ik_scara.rs b/examples/interactive_ik_scara.rs index b590217..a7dd456 100644 --- a/examples/interactive_ik_scara.rs +++ b/examples/interactive_ik_scara.rs @@ -108,14 +108,22 @@ fn main() { vec![c_fixed, c0, c1, c2, c3] } - fn to_kiss3d_transform(transform: &nalgebra::Isometry3) -> kiss3d::nalgebra::Isometry3 { - let target_translation = kiss3d::nalgebra::Translation3::new(transform.translation.x, transform.translation.y, transform.translation.z); - let target_rotation = kiss3d::nalgebra::Quaternion::new(transform.rotation.w, transform.rotation.i, transform.rotation.j, transform.rotation.k); + fn to_kiss3d_transform( + transform: &nalgebra::Isometry3, + ) -> kiss3d::nalgebra::Isometry3 { + let target_translation = kiss3d::nalgebra::Translation3::new( + transform.translation.x, + transform.translation.y, + transform.translation.z, + ); + let target_rotation = kiss3d::nalgebra::Quaternion::new( + transform.rotation.w, + transform.rotation.i, + transform.rotation.j, + transform.rotation.k, + ); let target_rotation = kiss3d::nalgebra::UnitQuaternion::from_quaternion(target_rotation); - kiss3d::nalgebra::Isometry3::from_parts( - target_translation, - target_rotation - ) + kiss3d::nalgebra::Isometry3::from_parts(target_translation, target_rotation) } let root = create_joint_with_link_array(); @@ -143,7 +151,7 @@ fn main() { let mut c_t = window.add_sphere(0.05); c_t.set_color(1.0, 0.2, 0.2); let eye = kiss3d::nalgebra::Point3::new(0.5f32, 1.0, 2.0); - let at = kiss3d::nalgebra::Point3::new(0.0f32, 0.0, 0.0); + let at = kiss3d::nalgebra::Point3::new(0.0f32, 0.0, 0.0); let mut arc_ball = ArcBall::new(eye, at); let solver = JacobianIkSolver::default();