Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cartesian_pose_example_controller Issue #61

Open
ALICEYZ5 opened this issue May 8, 2024 · 9 comments
Open

cartesian_pose_example_controller Issue #61

ALICEYZ5 opened this issue May 8, 2024 · 9 comments

Comments

@ALICEYZ5
Copy link

ALICEYZ5 commented May 8, 2024

Hi franka scientist,
I was running cartesian_pose_example_controller in franka_example_controllers (just ros2 launch franka_bringup cartesian_pose_example_controller.launch.py robot_ip:=, without changing any code), but got the error:
libfranka: Move command aborted: motion aborted by reflex! ["cartesian_motion_generator_velocity_discontinuity", "cartesian_motion_generator_acceleration_discontinuity", "cartesian_motion_generator_joint_acceleration_discontinuity"]
os: Ubuntu 22.04
ROS2 humble
franka_ros2 branch: humble, tag: v0.1.13
libfranka branch: fr3-develop, tag: 0.13.3
I was also trying to reduce the radius of motion, but no matter how much I reduced, the same error still show up, unless I set the radius - 0. besides, I tried to set cartesian_pose_command_rate_limit_active_ = true, does not help either.
Please advise.
Thanks,

@olaghattas
Copy link

Any help with this issue? cartesian_pose_example_controller always gives "motion aborted by reflex!" . When I run the example in libfranka (./examples/generate_cartesian_pose_motion ) it works but when I use ros2 it gives me the error. Is there a condition or anything that needs changing?

this is the command I am using "ros2 launch franka_bringup cartesian_pose_example_controller.launch.py arm_id:=fr3 robot_ip:="

@AndreasKuhner
Copy link
Member

Hi @olaghattas ,
what version of libfranka/franka_ros2 do you use?

Cheers,
Andreas

@ALICEYZ5
Copy link
Author

ALICEYZ5 commented Nov 7, 2024

Check your internet card. Franka website has requirement on the latency of
the card.

@olaghattas
Copy link

Hey @AndreasKuhner, the libfranka version is 0.13.3 and franka_ros2 is v0.1.15. The compatibility sections show that they are compatible https://frankaemika.github.io/docs/compatibility.html

@olaghattas
Copy link

Hey @ALICEYZ5, wouldnt the internet card issue cause the cartesian_pose_example_controller not to work with ros2 and libfranka example. My network card is RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (by Realtek Semiconductor Co., Ltd.) which meets the minimum requirement 100BASE-TX.

@ALICEYZ5
Copy link
Author

ALICEYZ5 commented Nov 7, 2024

Please refer to this link for trouble shooting: https://frankaemika.github.io/docs/troubleshooting.html#network-bandwidth-delay-and-jitter-test

@olaghattas
Copy link

@ALICEYZ5 Thanks for the suggestion, but I have already checked those steps before.

I have included a more detailed description of what I am facing.

with ros2 running the communication_test command was successfully
COMMAND: communication_test 172.16.0.2
OUTPUT:
WARNING: This example will move the robot! Please make sure to have the user stop button at hand!
Press Enter to continue...

Finished moving to initial joint configuration.

Starting communication test.
Starting communication test.
#100 Current success rate: 1.00
#200 Current success rate: 1.00
#300 Current success rate: 1.00
#400 Current success rate: 1.00
#500 Current success rate: 1.00
#600 Current success rate: 1.00
#700 Current success rate: 1.00
#800 Current success rate: 1.00
#900 Current success rate: 1.00
#1000 Current success rate: 1.00
#1100 Current success rate: 1.00
#1200 Current success rate: 1.00
#1300 Current success rate: 1.00
#1400 Current success rate: 1.00
#1500 Current success rate: 0.98
#1600 Current success rate: 1.00

Also running it with libfranka was successful too
COMMAND: ~/libfranka/build$ ./examples/communication_test 172.16.0.2
OUTPUT:
WARNING: This example will move the robot! Please make sure to have the user stop button at hand!
Press Enter to continue...

Finished moving to initial joint configuration.

Starting communication test.
#100 Current success rate: 1.00
#200 Current success rate: 1.00
#300 Current success rate: 1.00
#400 Current success rate: 1.00
#500 Current success rate: 1.00
#600 Current success rate: 1.00
#700 Current success rate: 1.00
#800 Current success rate: 1.00
#900 Current success rate: 1.00

When I run generate_cartesian_pose_motion from the libfranka repository it works fine and it moves the robot

COMMAND: ~/libfranka/build$ ./examples/generate_cartesian_pose_motion 172.16.0.2
OUTPUT:

WARNING: This example will move the robot! Please make sure to have the user stop button at hand!
Press Enter to continue...

Finished moving to initial joint configuration.

Finished motion, shutting down example

My problem is that when I try to run the same example but using the launch file in ros2 it generates an error however ros2 launch franka_bringup joint_velocity_example_controller.launch.py arm_id:=fr3 robot_ip:=172.16.0.2 doesn't

COMMAND: ros2 launch franka_bringup cartesian_pose_example_controller.launch.py arm_id:=fr3 robot_ip:=172.16.0.2

OUTPUT:
[ros2_control_node-3] terminate called after throwing an instance of 'franka::ControlException'
[ros2_control_node-3] what(): libfranka: Move command aborted: motion aborted by reflex! ["cartesian_motion_generator_velocity_discontinuity", "cartesian_motion_generator_acceleration_discontinuity"]
[ros2_control_node-3] Stack trace (most recent call last) in thread 9216:
[ros2_control_node-3] #19 Object "", at 0xffffffffffffffff, in
[ros2_control_node-3] #18 Source "../sysdeps/unix/sysv/linux/x86_64/clone3.S", line 81, in clone3 [0x7f16e7bf984f]
[ros2_control_node-3] #17 Source "./nptl/pthread_create.c", line 442, in start_thread [0x7f16e7b67ac2]
[ros2_control_node-3] #16 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f16e7df8252, in
[ros2_control_node-3] #15 Object "/opt/ros/humble/lib/controller_manager/ros2_control_node", at 0x560d57942800, in
[ros2_control_node-3] #14 Object "/opt/ros/humble/lib/libcontroller_manager.so", at 0x7f16e8dc12d4, in controller_manager::ControllerManager::read(rclcpp::Time const&, rclcpp::Duration const&)
[ros2_control_node-3] #13 Object "/opt/ros/humble/lib/libhardware_interface.so", at 0x7f16e7a0669c, in hardware_interface::ResourceManager::read(rclcpp::Time const&, rclcpp::Duration const&)
[ros2_control_node-3] #12 Object "/opt/ros/humble/lib/libhardware_interface.so", at 0x7f16e7a23e8f, in hardware_interface::System::read(rclcpp::Time const&, rclcpp::Duration const&)
[ros2_control_node-3] #11 Source "/home/olagh/franka_ros2_ws/src/franka_ros2/franka_hardware/src/franka_hardware_interface.cpp", line 171, in read [0x7f16e09d4076]
[ros2_control_node-3] 168: if (hw_franka_model_ptr
== nullptr) {
[ros2_control_node-3] 169: hw_franka_model_ptr
= robot_->getModel();
[ros2_control_node-3] 170: }
[ros2_control_node-3] > 171: hw_franka_robot_state_ = robot_->readOnce();
[ros2_control_node-3] 172:
[ros2_control_node-3] 173: initializePositionCommands(hw_franka_robot_state_);
[ros2_control_node-3] #10 Source "/home/olagh/franka_ros2_ws/src/franka_ros2/franka_hardware/src/robot.cpp", line 55, in readOnce [0x7f16e09f0cb0]
[ros2_control_node-3] 52: if (!active_control_) {
[ros2_control_node-3] 53: current_state_ = robot_->readOnce();
[ros2_control_node-3] 54: } else {
[ros2_control_node-3] > 55: current_state_ = readOnceActiveControl();
[ros2_control_node-3] 56: }
[ros2_control_node-3] 57: return current_state_;
[ros2_control_node-3] 58: }
[ros2_control_node-3] #9 Source "/home/olagh/franka_ros2_ws/src/franka_ros2/franka_hardware/src/robot.cpp", line 237, in readOnceActiveControl [0x7f16e09f208b]
[ros2_control_node-3] 235: franka::RobotState Robot::readOnceActiveControl() {
[ros2_control_node-3] 236: // When controller is active use active control to read the robot state
[ros2_control_node-3] > 237: const auto [current_state, ] = active_control->readOnce();
[ros2_control_node-3] 238: return current_state;
[ros2_control_node-3] 239: }
[ros2_control_node-3] #8 Object "/home/olagh/libfranka/build/libfranka.so.0.13.3", at 0x7f16e065b4d7, in franka::ActiveControl::readOnce()
[ros2_control_node-3] #7 Object "/home/olagh/libfranka/build/libfranka.so.0.13.3", at 0x7f16e0659d98, in franka::Robot::Impl::throwOnMotionError(franka::RobotState const&, unsigned int) [clone .cold]
[ros2_control_node-3] #6 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f16e7dca4d7, in __cxa_throw
[ros2_control_node-3] #5 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f16e7dca276, in std::terminate()
[ros2_control_node-3] #4 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f16e7dca20b, in
[ros2_control_node-3] #3 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f16e7dbeb9d, in
[ros2_control_node-3] #2 Source "./stdlib/abort.c", line 79, in abort [0x7f16e7afb7f2]
[ros2_control_node-3] #1 Source "../sysdeps/posix/raise.c", line 26, in raise [0x7f16e7b15475]
[ros2_control_node-3] #0 | Source "./nptl/pthread_kill.c", line 89, in __pthread_kill_internal
[ros2_control_node-3] | Source "./nptl/pthread_kill.c", line 78, in __pthread_kill_implementation
[ros2_control_node-3] Source "./nptl/pthread_kill.c", line 44, in __pthread_kill [0x7f16e7b699fc]
[ros2_control_node-3] Aborted (Signal sent by tkill() 9083 1000)
[ERROR] [ros2_control_node-3]: process has died [pid 9083, exit code -6, cmd '/opt/ros/humble/lib/controller_manager/ros2_control_node --ros-args --params-file /home/olagh/franka_ros2_ws/install/franka_bringup/share/franka_bringup/config/controllers.yaml --params-file /tmp/launch_params_fpog1o5n --params-file /tmp/launch_params_29mqhx8s -r joint_states:=franka/joint_states'].
[INFO] [launch]: process[ros2_control_node-3] was required: shutting down launched system
[INFO] [franka_gripper_node-6]: sending signal 'SIGINT' to process[franka_gripper_node-6]
[INFO] [robot_state_publisher-2]: sending signal 'SIGINT' to process[robot_state_publisher-2]
[INFO] [joint_state_publisher-1]: sending signal 'SIGINT' to process[joint_state_publisher-1]
[franka_gripper_node-6] [INFO] [1731001848.586929687] [rclcpp]: signal_handler(signum=2)
[robot_state_publisher-2] [INFO] [1731001848.587340321] [rclcpp]: signal_handler(signum=2)
[INFO] [robot_state_publisher-2]: process has finished cleanly [pid 9081]
[INFO] [joint_state_publisher-1]: process has finished cleanly [pid 9079]
[INFO] [franka_gripper_node-6]: process has finished cleanly [pid 9089]

@AndreasKuhner
Copy link
Member

AndreasKuhner commented Nov 8, 2024

If you use libfranka 0.13.3 (I guess you use the master controller version 5.5.0 or 5.6.0?) then you can get the newest compatible version for you: 0.13.6 -> this has some juicy fixes for franka_ros2 on board 😄

Otherwise, you could also upgrade the master controller version to 5.7.x and check out libfranka 0.14.2 - this also has the fixes.

If you are able to run the same example with libfranka, there is a good chance that the new versions fix the problem.

@olaghattas
Copy link

olaghattas commented Nov 8, 2024

That fixed the issue.

Thanks @AndreasKuhner !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants