computeTimeStamps uses maximum velocity and acceleration values that are different from those used by computeCartesianPath.
bodkal opened this issue · 1 comments
Description
Hi all,
I'm using a UR10e robot (https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver) and trying to control the Cartesian path's velocity and acceleration through code.
When I generate a Cartesian path, it uses the default values from the ur_moveit_config/config/joint_limits.yaml file. To slow it down, I use the computeTimeStamps function with a scale of 1 and 1 (which isn't supposed to change anything), but I end up with a new scale with a maximum acceleration of 1.
Do computeTimeStamps and computeCartesianPath use the same joint_limits.yaml file? Any ideas?
Thanks!
- Here is another file: ur_description/config/ur10e/joint_limits.yaml, but changing its values does not affect the computeCartesianPath at all.
Your environment
- ROS Distro: Humble
- OS Version: e.g. Ubuntu 22.04
- Source or Binary build? Binary
- If binary, which release version?
- If source, which branch?
- Which RMW (Fast DDS or Cyclone DDS)? Humble or Rolling should be using Cyclone.
Steps to reproduce
my snip code:
double fraction = this->move_group_interface.computeCartesianPath(waypoints, eef_step, jump_threshold, trajectory, false);
// The trajectory needs to be modified so it will include velocities as well.
// First to create a RobotTrajectory object
robot_trajectory::RobotTrajectory rt(move_group_interface.getCurrentState()->getRobotModel(), "ur_manipulator");
// Second get a RobotTrajectory from trajectory
rt.setRobotTrajectoryMsg(*move_group_interface.getCurrentState(), trajectory);
this->printRobotTrajectory(trajectory);
// Thrid create a IterativeParabolicTimeParameterization object
trajectory_processing::IterativeParabolicTimeParameterization iptp;
// Fourth compute computeTimeStamps
bool success = iptp.computeTimeStamps(rt,1.0,1.0);
// Get RobotTrajectory_msg from RobotTrajectory
rt.getRobotTrajectoryMsg(trajectory);
this->printRobotTrajectory(trajectory);
Expected behavior:
Scaling the trajectory according to the ur_moveit_config/config/joint_limits.yaml file.
Actual behavior:
Scaling the trajectory with a maximum acceleration of 1.
Backtrace or Console output:
the trajectory from computeCartesianPath:
[hello_moveit_ur-1] [INFO] [1720955358.787508461] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787513947] [UrIntrface]: Joint 1: Pos = -2.066405, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787516961] [UrIntrface]: Joint 2: Pos = -0.904878, Vel = -0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787520392] [UrIntrface]: Joint 3: Pos = -1.741106, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787523321] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787526091] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787528938] [UrIntrface]: Point 1:
[hello_moveit_ur-1] [INFO] [1720955358.787531190] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = -0.000001
[hello_moveit_ur-1] [INFO] [1720955358.787535333] [UrIntrface]: Joint 1: Pos = -2.062843, Vel = 0.067846, Acc = 0.506396
[hello_moveit_ur-1] [INFO] [1720955358.787538609] [UrIntrface]: Joint 2: Pos = -0.929877, Vel = -0.499965, Acc = -4.999757
[hello_moveit_ur-1] [INFO] [1720955358.787541760] [UrIntrface]: Joint 3: Pos = -1.719669, Vel = 0.432119, Acc = 4.493361
[hello_moveit_ur-1] [INFO] [1720955358.787545016] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787548208] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = -0.000001
[hello_moveit_ur-1] [INFO] [1720955358.787551260] [UrIntrface]: Point 2:
[hello_moveit_ur-1] [INFO] [1720955358.787553455] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = -0.000001
[hello_moveit_ur-1] [INFO] [1720955358.787556588] [UrIntrface]: Joint 1: Pos = -2.054714, Vel = 0.079032, Acc = -0.460861
[hello_moveit_ur-1] [INFO] [1720955358.787559765] [UrIntrface]: Joint 2: Pos = -1.004782, Vel = -0.992390, Acc = -4.540463
[hello_moveit_ur-1] [INFO] [1720955358.787563011] [UrIntrface]: Joint 3: Pos = -1.652893, Vel = 0.913358, Acc = 5.001324
[hello_moveit_ur-1] [INFO] [1720955358.787566327] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787569921] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = -0.000001
[hello_moveit_ur-1] [INFO] [1720955358.787573741] [UrIntrface]: Point 3:
[hello_moveit_ur-1] [INFO] [1720955358.787576031] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = -0.000001
[hello_moveit_ur-1] [INFO] [1720955358.787579100] [UrIntrface]: Joint 1: Pos = -2.051780, Vel = -0.050934, Acc = -2.272780
[hello_moveit_ur-1] [INFO] [1720955358.787582048] [UrIntrface]: Joint 2: Pos = -1.124058, Vel = -1.362601, Acc = -2.729476
[hello_moveit_ur-1] [INFO] [1720955358.787585182] [UrIntrface]: Joint 3: Pos = -1.536551, Vel = 1.413535, Acc = 5.002257
[hello_moveit_ur-1] [INFO] [1720955358.787588092] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.787590978] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = -0.000001
the trajectory aftre scaile of 1.0:
[hello_moveit_ur-1] [INFO] [1720955358.789620880] [UrIntrface]: Point 0:
[hello_moveit_ur-1] [INFO] [1720955358.789623938] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789628148] [UrIntrface]: Joint 1: Pos = -2.066405, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789632070] [UrIntrface]: Joint 2: Pos = -0.904878, Vel = -0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789635972] [UrIntrface]: Joint 3: Pos = -1.741106, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789640596] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789644547] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789648407] [UrIntrface]: Point 1:
[hello_moveit_ur-1] [INFO] [1720955358.789651061] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = -0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789655013] [UrIntrface]: Joint 1: Pos = -2.062843, Vel = 0.027366, Acc = 0.071435
[hello_moveit_ur-1] [INFO] [1720955358.789659172] [UrIntrface]: Joint 2: Pos = -0.929877, Vel = -0.230203, Acc = -0.871461
[hello_moveit_ur-1] [INFO] [1720955358.789663338] [UrIntrface]: Joint 3: Pos = -1.719669, Vel = 0.202837, Acc = 0.800026
[hello_moveit_ur-1] [INFO] [1720955358.789667227] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789674011] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = -0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789678018] [UrIntrface]: Point 2:
[hello_moveit_ur-1] [INFO] [1720955358.789680875] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = -0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789684632] [UrIntrface]: Joint 1: Pos = -2.054714, Vel = 0.023265, Acc = -0.094984
[hello_moveit_ur-1] [INFO] [1720955358.789688727] [UrIntrface]: Joint 2: Pos = -1.004782, Vel = -0.399931, Acc = -0.662526
[hello_moveit_ur-1] [INFO] [1720955358.789692781] [UrIntrface]: Joint 3: Pos = -1.652893, Vel = 0.376665, Acc = 0.757510
[hello_moveit_ur-1] [INFO] [1720955358.789696868] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789700483] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = -0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789704390] [UrIntrface]: Point 3:
[hello_moveit_ur-1] [INFO] [1720955358.789707210] [UrIntrface]: Joint 0: Pos = -2.179356, Vel = -0.000000, Acc = -0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789711358] [UrIntrface]: Joint 1: Pos = -2.051780, Vel = -0.037939, Acc = -0.411608
[hello_moveit_ur-1] [INFO] [1720955358.789715236] [UrIntrface]: Joint 2: Pos = -1.124058, Vel = -0.550285, Acc = -0.582638
[hello_moveit_ur-1] [INFO] [1720955358.789719092] [UrIntrface]: Joint 3: Pos = -1.536551, Vel = 0.588224, Acc = 0.994246
[hello_moveit_ur-1] [INFO] [1720955358.789723151] [UrIntrface]: Joint 4: Pos = 1.570796, Vel = 0.000000, Acc = 0.000000
[hello_moveit_ur-1] [INFO] [1720955358.789727116] [UrIntrface]: Joint 5: Pos = -3.750153, Vel = -0.000000, Acc = -0.000000
ur_moveit_config/config/joint_limits.yaml
joint_limits:
shoulder_pan_joint:
has_acceleration_limits: true
max_acceleration: 5.0
shoulder_lift_joint:
has_acceleration_limits: true
max_acceleration: 5.0
elbow_joint:
has_acceleration_limits: true
max_acceleration: 5.0
wrist_1_joint:
has_acceleration_limits: true
max_acceleration: 5.0
wrist_2_joint:
has_acceleration_limits: true
max_acceleration: 5.0
wrist_3_joint:
has_acceleration_limits: true
max_acceleration: 5.0
ur_description/config/ur10e:
# Joints limits
#
# Sources:
#
# - Universal Robots e-Series, User Manual, UR10e, Version 5.8
# https://s3-eu-west-1.amazonaws.com/ur-support-site/69139/99405_UR10e_User_Manual_en_Global.pdf
# - Support > Articles > UR articles > Max. joint torques
# https://www.universal-robots.com/articles/ur-articles/max-joint-torques
# retrieved: 2020-06-16, last modified: 2020-06-09
joint_limits:
shoulder_pan_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
has_effort_limits: true
has_position_limits: true
has_velocity_limits: true
max_effort: 330.0
max_position: !degrees 360.0
max_velocity: !degrees 120.0
min_position: !degrees -360.0
shoulder_lift_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
has_effort_limits: true
has_position_limits: true
has_velocity_limits: true
max_effort: 330.0
max_position: !degrees 360.0
max_velocity: !degrees 120.0
min_position: !degrees -360.0
elbow_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
has_effort_limits: true
has_position_limits: true
has_velocity_limits: true
max_effort: 150.0
# we artificially limit this joint to half its actual joint position limit
# to avoid (MoveIt/OMPL) planning problems, as due to the physical
# construction of the robot, it's impossible to rotate the 'elbow_joint'
# over more than approx +- 1 pi (the shoulder lift joint gets in the way).
#
# This leads to planning problems as the search space will be divided into
# two sections, with no connections from one to the other.
#
# Refer to https://github.com/ros-industrial/universal_robot/issues/265 for
# more information.
max_position: !degrees 180.0
max_velocity: !degrees 180.0
min_position: !degrees -180.0
wrist_1_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
has_effort_limits: true
has_position_limits: true
has_velocity_limits: true
max_effort: 56.0
max_position: !degrees 360.0
max_velocity: !degrees 180.0
min_position: !degrees -360.0
wrist_2_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
has_effort_limits: true
has_position_limits: true
has_velocity_limits: true
max_effort: 56.0
max_position: !degrees 360.0
max_velocity: !degrees 180.0
min_position: !degrees -360.0
wrist_3_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
has_effort_limits: true
has_position_limits: true
has_velocity_limits: true
max_effort: 56.0
max_position: !degrees 360.0
max_velocity: !degrees 180.0
min_position: !degrees -360.0