Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ Cargo.lock

# for emacs
*~

# JetBrains
.idea
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ serde = ["nalgebra/serde-serialize", "dep:serde"]

# Note: nalgebra, simba, urdf-rs, and serde are public dependencies.
[dependencies]
nalgebra = "0.30"
simba = "0.7"
nalgebra = "0.33"
simba = "0.9"
thiserror = "2.0"
tracing = "0.1"
urdf-rs = "0.9"
Expand Down
2 changes: 1 addition & 1 deletion benches/fk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::<f32>())
+ range.min.clone()
}
None => na::convert::<f64, T>(rand::random::<f64>() - 0.5) * na::convert(2.0 * PI),
Expand Down
34 changes: 26 additions & 8 deletions examples/interactive_ik.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -145,6 +145,24 @@ fn main() {
vec![c_fixed, c0, c1, c2, c3, c4, c5, c6]
}

fn to_kiss3d_transform(
transform: &nalgebra::Isometry3<f32>,
) -> kiss3d::nalgebra::Isometry3<f32> {
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();
let arm = k::SerialChain::new_unchecked(k::Chain::from_root(root));
Expand All @@ -170,8 +188,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 mut solver = JacobianIkSolver::default();
//solver.set_nullspace_function(Box::new(|vec| vec.iter().map(|x| -x).collect()));
Expand Down Expand Up @@ -216,9 +234,9 @@ 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));
}
}
}
Expand Down
34 changes: 26 additions & 8 deletions examples/interactive_ik_scara.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<f32> {
let fixed: k::Node<f32> = NodeBuilder::new()
Expand Down Expand Up @@ -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);
Expand All @@ -108,6 +108,24 @@ fn main() {
vec![c_fixed, c0, c1, c2, c3]
}

fn to_kiss3d_transform(
transform: &nalgebra::Isometry3<f32>,
) -> kiss3d::nalgebra::Isometry3<f32> {
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));

Expand All @@ -132,8 +150,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();
Expand Down Expand Up @@ -192,9 +210,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));
}
}
}
Expand Down
Loading