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

Switching between forward_joint_traj_controller and pose_based_cartesian_traj_controller produces unexpected results in URSim #539

Open
Makuh17 opened this issue Jun 2, 2022 · 2 comments
Assignees
Labels
bug Something isn't working

Comments

@Makuh17
Copy link

Makuh17 commented Jun 2, 2022

Summary

I created a small script to have a service that brings my robot to a fixed joint configuration. To do so, I first switch to forward_joint_traj_controller, send a trajectory goal with a single point, wait for the goal to be reached and then switch back to the previously used Cartesian controller, pose_based_cartesian_traj_controller. I observe that for larger joint space movements, the robot will quickly jump back to the previous pose when triggering the controller switch. See animation below.
UR_driver_joint

Versions

  • ROS Driver version: 1.0
  • Affected Robot Software Version(s): URSim 3.15.7
  • Affected Robot Hardware Version(s): Not tested
  • URCaps Software version(s): externalcontrol-1.0.5

Impact

Using the two above mentioned controllers in sequence is not possible as potentially dangerous robot behavior can be encountered.

Issue details

The issue seems to primarily happen when commanding larger movements in joint space. Smaller movements seem to not trigger the issue. The issue also does not seem to happen when switching between forward_joint_traj_controller -> forward_cartesian_traj_controller or scaled_pos_joint_traj_controller->pose_based_cartesian_traj_controller.
I have not tested the issue on real hardware, only in URSim. The workaround is also rather straight forward, so I would give the issue low priority.

Use Case and Setup

To briefly command the robot to a certain joint pose in between Cartesian trajectories. E.g. to move to a safe position/configuration before next movement.

Project status at point of discovered

  • In first couple of tries

Steps to Reproduce

  1. Launch URSim 3.15.7 (UR10 with externalcontrol)
  2. Launch ROS driver (with only the passive controllers started.)
roslaunch ur_robot_driver ur10_bringup.launch robot_ip:=192.168.56.101 controllers:="joint_state_controller speed_scaling_state_controller force_torque_sensor_controller"
  1. Move (e.g. manually) robot to "far away" configuration, e.g. [0, -40, -100, -60, 40, -80]
  2. Run the provided node and call the service /move_away
    move_away.py.txt

Expected Behavior

Robot moves to desired joint configuration and stays there.

Actual Behavior

Robot moves to desired joint configuration and then rapidly moves back.

Workaround Suggestion

Use either forward_joint_traj_controller with forward_cartesian_traj_controller or scaled_pos_joint_traj_controller with pose_based_cartesian_traj_controller.

@gavanderhoorn
Copy link
Contributor

Could be (related to) ros-controls/ros_controllers#593.

@fmauch fmauch self-assigned this Jun 28, 2022
@fmauch fmauch added the bug Something isn't working label Jun 28, 2022
@fmauch
Copy link
Collaborator

fmauch commented Jun 28, 2022

Thanks for reporting this. We'll have to dig into that a bit...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants