uwgraphics / relaxed_ik

RelaxedIK Solver
MIT License
194 stars 51 forks source link

relaxed_ik_rust fails #25

Open bomarali opened 3 years ago

bomarali commented 3 years ago

Hi all,

I am trying the dev branch rust version relaxed_ik_rust on ROS Melodic with UR5 robot. I get the following fail: ...bunch of what I assume Rust warnings, then warning: 118 warnings emitted Finished dev [optimized + debuginfo] target(s) in 0.07s Running target/debug/relaxed_ik_node solver initialized! thread 'main' panicked at 'attempted to leave type linked_hash_map::Node<yaml::Yaml, yaml::Yaml> uninitialized, which is invalid', /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/core/src/mem/mod.rs:659:9 [relaxed_ik_node-1] process has finished cleanly all processes on machine have died, roslaunch will exit shutting down processing monitor... ... shutting down processing monitor complete

The python version works as intended, I haven't tested the Julia version yet. Any advice?

hanlinniu commented 3 years ago

I have the same problem mate, have you solved it?

djrakita commented 3 years ago

Could one of you send the info file and urdf that you're using when you get this error? I will hopefully be able to figure it out from there. Thanks!

hanlinniu commented 3 years ago

Could one of you send the info file and urdf that you're using when you get this error? I will hopefully be able to figure it out from there. Thanks!

Hi mate, thank you very much for your reply! now we have problem of installing rust! Several months ago, my old laptops all work for installing rust, but now, rust does not work for two of my new laptops. When I run roslaunch relaxed_ik relaxed_ik_rust.launch, it says: sh: 1: cargo: not found.. After I install rust using: https://www.rust-lang.org/tools/install, I found it have the problem mentioned above: 'thread 'main' panicked at 'attempted to leave type linked_hash_map::Node<yaml::Yaml, yaml::Yaml> uninitialized'

djrakita commented 3 years ago

interesting...I see that rust just released their version 1.50, I wonder if that caused some subtle breaking changes for some other crates (e.g., maybe Yaml in this case). Maybe try reverting to/ installing an older version of rust to see if that makes a difference? https://users.rust-lang.org/t/how-can-i-revert-to-older-version-of-rust/20497

I'm currently using rust 1.46 and everything is working fine, so maybe that's a good version to try first.

hanlinniu commented 3 years ago

interesting...I see that rust just released their version 1.50, I wonder if that caused some subtle breaking changes for some other crates (e.g., maybe Yaml in this case). Maybe try reverting to/ installing an older version of rust to see if that makes a difference? https://users.rust-lang.org/t/how-can-i-revert-to-older-version-of-rust/20497

I'm currently using rust 1.46 and everything is working fine, so maybe that's a good version to try first.

Thank you very much, I finally made it work by using: sudo apt install rustc

bryceikeda commented 2 years ago

@djrakita I too am having this issue but with a slightly different error. Reverting to an older Rust (1.46) did not fix the issue.

I am using the Fetch robot urdf and below is the info file. Do you have any other suggestions? Thank you for the help.

Error Output solver initialized! thread 'main' panicked at 'called Option::unwrap() on a None value', src/bin/lib/utils_rust/yaml_utils.rs:82:66 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

Line 82 seems to be here

let starting_config_arr = doc["starting_config"].as_vec().unwrap();
    for i in 0..starting_config_arr.len() {
    starting_config.push(starting_config_arr[i].as_f64().unwrap());
}
urdf_file_name: "fetch.urdf"
fixed_frame: "base_link"
joint_names: [ [ "torso_lift_joint", "shoulder_pan_joint", "shoulder_lift_joint", "upperarm_roll_joint", "elbow_flex_joint", "forearm_roll_joint", "wrist_flex_joint", "wrist_roll_joint" ] ]
joint_ordering: [ "torso_lift_joint", "shoulder_pan_joint", "shoulder_lift_joint", "upperarm_roll_joint", "elbow_flex_joint", "forearm_roll_joint", "wrist_flex_joint", "wrist_roll_joint" ]
ee_fixed_joints: [ "gripper_axis" ]
starting_config: [ 0, 0, 0, 0, 0, 0, 0, 0 ]
collision_file_name: "fetch_collision.yaml"
collision_nn_file: "fetch_nn"
path_to_src: "/home/bryce/ros_projects/relaxed_ik_repo/src/relaxed_ik/src/"
axis_types: [ [ "z", "z", "y", "x", "y", "x", "y", "x" ] ]
velocity_limits: [ 0.1, 1.256, 1.454, 1.571, 1.521, 1.571, 2.268, 2.268 ]
joint_limits: [ [0.0,0.38615], [-1.6056,1.6056], [-1.221,1.518], [-15.0,15.0], [-2.251,2.251], [-15.0,15.0], [-2.16,2.16], [-15.0,15.0] ]
displacements: [ [ [0.119525,0.0,0.34858], [0.117,0.0,0.06], [0.219,0.0,0.0], [0.133,0.0,0.0], [0.197,0.0,0.0], [0.1245,0.0,0.0], [0.1385,0.0,0.0], [0.16645,0.0,0.0] ] ]
disp_offsets: [ [-0.086875,0.0,0.37743] ]
rot_offsets: [ [ [-6.123e-17,0.0,0.0], [0.0,0.0,0.0], [0.0,0.0,0.0], [0.0,0.0,0.0], [0.0,0.0,0.0], [0.0,0.0,0.0], [0.0,0.0,0.0], [0.0,0.0,0.0], [0.0,0.0,0.0] ] ]
joint_types: [ [ "prismatic", "revolute", "revolute", "continuous", "revolute", "continuous", "revolute", "continuous" ] ]
joint_state_define_func_file: "fetch_joint_state_define"
bryceikeda commented 2 years ago

I was able to fix this by changing starting_config values to be 0 rather than 0.0. Rust works now!

connormbrooks commented 2 years ago

I was able to fix this by changing starting_config values to be 0 rather than 0.0. Rust works now!

Saved me some time, @bryceikeda :D

dashuaip commented 2 months ago

I was able to fix this by changing starting_config values to be 0 rather than 0.0. Rust works now!

This still didn't useful for me.

yepw commented 2 months ago

Hi @dashuaip , did you have a chance to try out relaxed_ik_core? It is a separate repo compatible with newer Rust and Ubuntu versions.

dashuaip commented 2 months ago

Hi @dashuaip , did you have a chance to try out relaxed_ik_core? It is a separate repo compatible with newer Rust and Ubuntu versions.

Actually, I'm using relaxed_ik_ros1. I needed to use the dev branch of relaxed_ik to make the files suitable for my robot, and the process went smoothly. But when I started "roslaunch relaxed_ik_ros1 relaxed_ik_rust.launch", it had the same problem. I've tried downgrading the version of Rust and changing the parameters in the file, but they did't work.

Waiting for ROS param /simulation_time to be set as go...id
ROS param /simulation_time is set up!

Waiting for the keyboard_ikgoal_driver being initialized...
thread '<unnamed>' panicked at src/utils_rust/yaml_utils.rs:85:66:
called `Option::unwrap()` on a `None` value
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
fatal runtime error: failed to initiate panic, error 5
[relaxed_ik-1] process has died [pid 5720, exit code -6, cmd /home/jh/c_ros/src/relaxed_ik_ros1/src/relaxed_ik_rust.py __name:=relaxed_ik __log:=/home/jh/.ros/log/c430946c-6793-11ef-9845-51237c74ab37/relaxed_ik-1.log].
log file: /home/jh/.ros/log/c430946c-6793-11ef-9845-51237c74ab37/relaxed_ik-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
yepw commented 2 months ago

At first glance, the error might occur because the setting file doesn't have axis_types.

dashuaip commented 2 months ago

At first glance, the error might occur because the setting file doesn't have axis_types.

This is the setting file "aubo_i10_info.yaml". It was generated with the dev branch. Is there a problem in the file?

urdf_file_name: "aubo_i10.urdf"
fixed_frame: "base_link"
joint_names: [ [ "shoulder_joint", "upperArm_joint", "foreArm_joint", "wrist1_joint", "wrist2_joint", "wrist3_joint" ] ]
joint_ordering: [ "shoulder_joint", "upperArm_joint", "foreArm_joint", "wrist1_joint", "wrist2_joint", "wrist3_joint" ]
ee_fixed_joints: [ "ee_fixed_joint" ]
starting_config: [ 0, 0, 1.57, 0, 1.57, 0 ]
collision_file_name: "collision_aubo_i10.yaml"
collision_nn_file: "aubo_i10_nn"
path_to_src: "/home/r/collision_ws/src/relaxed_ik-dev/src"
axis_types: [ [ "z", "z", "z", "z", "z", "z" ] ]
velocity_limits: [ 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 ]
joint_limits: [ [-3.04,3.04], [-3.04,3.04], [-3.04,3.04], [-3.04,3.04], [-3.04,3.04], [-3.04,3.04] ]
displacements: [ [ [0.0,0.2013,0.0], [0.647,0.0,0.0], [0.6005,0.0,0.0], [0.0,0.1025,0.0], [0.0,-0.094,0.0], [0.0,0.0,0.0] ] ]
disp_offsets: [ [0.0,0.0,0.1632] ]
rot_offsets: [ [ [0.0,0.0,3.1416], [-1.5708,-1.5708,0.0], [3.1416,0.0,0.0], [-3.1416,0.0,1.5708], [-1.5708,0.0,0.0], [1.5708,0.0,0.0], [0.0,0.0,0.0] ] ]
joint_types: [ [ "revolute", "revolute", "revolute", "revolute", "revolute", "revolute" ] ]
joint_state_define_func_file: "aubo_i10_joint_state_define"
dashuaip commented 2 months ago

I finally fixed it successfully. I changed the value of starting_config, and although it looks the same. It stopped reporting errors.

starting_config: [0.0, 0.0, 1.57, 0.0, 1.57, 0.0]