STOMP and MoveIt! - robot joint limits not respected

197 views
Skip to first unread message

Stefania Pellegrinelli

unread,
Sep 7, 2016, 3:54:54 AM9/7/16
to swri-ros-pkg-dev
Hi,
I'm using STOMP with industrial MoveIt! (https://github.com/ros-industrial/industrial_moveit). Sometimes, the generated trajectories do not respect the joint limits listed in the URDF file. I also added the joint limits to the "joint_limits.yaml" file without any success. I'm using the robot lbr iiwa 14 r820. 

Contents of "joint_limits.yaml":

joint_limits:
  joint_a1:
    min_position: -2.9668
    max_position: 2.9668
    has_velocity_limits: true
    max_velocity: 1.7 
    has_acceleration_limits: true
    max_acceleration: 5. 
  joint_a2:
    min_position: -2.9668
    max_position: 2.9668
    has_velocity_limits: true
    max_velocity: 1.7 
    has_acceleration_limits: true
    max_acceleration: 5. 
  joint_a3:
    min_position: -2.9668
    max_position: 2.9668
    has_velocity_limits: true
    max_velocity: 2.0 
    has_acceleration_limits: true
    max_acceleration: 5. 
  joint_a4:
    min_position: -2.0942
    max_position: 2.0942
    #min_position: -2.0000
    #max_position: 2.0000
    has_velocity_limits: true
    max_velocity: 1.6 
    has_acceleration_limits: true
    max_acceleration: 5. 
  joint_a5:
    min_position: -2.9668
    max_position: 2.9668
    has_velocity_limits: true
    max_velocity: 2.5 
    has_acceleration_limits: true
    max_acceleration: 5. 
  joint_a6:
    min_position: -2.0942
    max_position: 2.0942
    has_velocity_limits: true
    max_velocity: 2.6 
    has_acceleration_limits: true
    max_acceleration: 5. 
  joint_a7:
    min_position: -3.051
    max_position: 3.051
    has_velocity_limits: true   
    max_velocity: 2.6 
    has_acceleration_limits: true
    max_acceleration: 5. 

Do you have any ideas?
Thank you,
Stefania

Jorge Nicho

unread,
Sep 7, 2016, 10:45:26 AM9/7/16
to swri-ros-pkg-dev
Hello Stefania,
The STOMP planner does not take the joint_limits.yaml into account but it can be configured to obey joint limits as defined in the URDF.  The configuration for STOMP is specified in a yaml file , can you provide your stomp_config.yaml file?  Thanks

G.A. vd. Hoorn - 3ME

unread,
Sep 7, 2016, 10:57:25 AM9/7/16
to swri-ros...@googlegroups.com
On 7-9-2016 16:45, Jorge Nicho wrote:
> Hello Stefania,
> The STOMP planner does not take the joint_limits.yaml into account but it
> can be configured to obey joint limits as defined in the URDF. The
> configuration for STOMP is specified in a yaml
> <https://github.com/ros-industrial/industrial_moveit/blob/indigo-devel/stomp_test_kr210_moveit_config/config/stomp_config.yaml#L23>
> file , can you provide your stomp_config.yaml file? Thanks

Jorge,


is that something that you plan on changing/fixing?

I think it's reasonable for users of MoveIt to assume that planners will
use the parameters configured through the various files in a MoveIt
configuration package, so it would be nice if that would be possible for
STOMP as well.


Gijs

Jorge Nicho

unread,
Sep 7, 2016, 11:57:22 AM9/7/16
to swri-ros-pkg-dev
Gijs,
 My understanding is that the joint_limits.yaml overwrites the URDF specified settings for each joint; if this is the case then STOMP (when properly configured) should obey such overwritten joint limits as it gets them from the moveit::core::RobotModel which is available within the planning pipeline.   At the moment, STOMP stores configurations for each planning and custom joint limits should be group specific as well.  This isn't a feature yet but I think it makes sense to add it.

Stefania Pellegrinelli

unread,
Sep 7, 2016, 11:59:57 AM9/7/16
to swri-ros-pkg-dev
Hi Jorge,
thank you for the clarification in relation to the joint_limits.yaml. Attached the stomp_config.yaml file I'm using.

Stefania
stomp_config.yaml

Jorge Nicho

unread,
Sep 7, 2016, 12:06:04 PM9/7/16
to swri-ros-pkg-dev
Stefania,
I just looked at it and it appears to be configured correctly How are you verifying that the joint limits aren't being obeyed?

Stefania Pellegrinelli

unread,
Sep 7, 2016, 12:47:46 PM9/7/16
to swri-ros...@googlegroups.com
Given:
  moveit::planning_interface::MoveGroup group("manipulator");  
moveit
::planning_interface::MoveGroup::Plan plan;

group.plan(plan);

I check for all point_id that:

  plan.trajectory_.joint_trajectory.points.at(point_id).positions.at(joint_id)

is within the joint limits of the joint corresponding to
joint_id. The considered joint limits are those listed in the URDF file.

I noticed the problem for the first time trying to execute the generated trajectory on the real robot. Then, I started checking the joint values of the trajectories as here described.

Stefania





--
You received this message because you are subscribed to a topic in the Google Groups "swri-ros-pkg-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/swri-ros-pkg-dev/poup9tIdM9Y/unsubscribe.
To unsubscribe from this group and all its topics, send an email to swri-ros-pkg-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Jorge Nicho

unread,
Sep 7, 2016, 1:33:42 PM9/7/16
to swri-ros-pkg-dev
Stefania,
If I understand you correctly, the joint values in the planned trajectory are within the joint limits as defined in the urdf but not those that you define in joint_limits.yaml right?  My understanding was that the joint_limits file would override the limits in the URDF, this is steps that should take place regardless of which planner you use as far as I know, but it seems that that isn't happening.  Which joint limit is being exceeded, min max, speed or acceleration?
To unsubscribe from this group and all its topics, send an email to swri-ros-pkg-d...@googlegroups.com.

Stefania Pellegrinelli

unread,
Sep 8, 2016, 3:32:15 AM9/8/16
to swri-ros...@googlegroups.com
Jorge,
I have the same joint limits in the URDF and in the joint_limits.yaml. I'm exceeding the min-max (the joint position).

Thank you a lot for your support


To unsubscribe from this group and all its topics, send an email to swri-ros-pkg-dev+unsubscribe@googlegroups.com.

G.A. vd. Hoorn - 3ME

unread,
Sep 8, 2016, 4:23:28 AM9/8/16
to swri-ros...@googlegroups.com
On 7-9-2016 17:57, Jorge Nicho wrote:
> Gijs,
> My understanding is that the joint_limits.yaml overwrites the URDF
> specified settings for each joint; if this is the case then STOMP (when
> properly configured) should obey such overwritten joint limits as it gets
> them from the moveit::core::RobotModel which is available within the
> planning pipeline. At the moment, STOMP stores configurations for each
> planning and custom joint limits should be group specific as well. This
> isn't a feature yet but I think it makes sense to add it.

I'm not sure I completely understand your before-last sentence, but if
the STOMP infrastructure uses the RobotModel, then I would assume that
the overrides from joint_limits.yaml should be taken into account. As
you say.

Jorge Nicho

unread,
Sep 8, 2016, 11:24:33 AM9/8/16
to swri-ros-pkg-dev
Stefania,
The specs on the iiwa 14 r820 show different joint limits for joint 2 (A2 in the specs).  Could it be that the planner is obeying the URDF/joint_limits.yaml  limits but the values in those files differ from those on the real robot?  Thanks
Reply all
Reply to author
Forward
0 new messages