How to increase the number of trajectory points come out from move_group interface

1,736 views
Skip to first unread message

wataru yasuda

unread,
Jul 2, 2014, 1:10:36 AM7/2/14
to moveit...@googlegroups.com
Hello, everyone:

I am using MoveIt!(ROS Hydro Python API, Ubuntu 12.04) with the dynamixel_motor package to control my 4-dof robot arm. 

As you can see, when it try to reach the puck, the movement is not smooth.
So I would like to increase the number of trajectory points come out from move_group interface.
(I use set_pose_target function and then go function)

Would you tell me how to increase the number of trajectory points?
Are there any parameter for that?
Or I must use compute_cartesian_path function instead?

Your advices would be appreciated.

Adolfo Rodríguez Tsouroukdissian

unread,
Jul 2, 2014, 3:34:52 AM7/2/14
to wataru yasuda, moveit-users
On Wed, Jul 2, 2014 at 7:10 AM, wataru yasuda <watar...@gmail.com> wrote:
Hello, everyone:

I am using MoveIt!(ROS Hydro Python API, Ubuntu 12.04) with the dynamixel_motor package to control my 4-dof robot arm. 

As you can see, when it try to reach the puck, the movement is not smooth.
So I would like to increase the number of trajectory points come out from move_group interface.
(I use set_pose_target function and then go function)

How many trajectory points were produced for those particular trajectories?. By default, the output of MoveIt! is pretty dense (5-10 points per second). Also, you could check that waypoints have sane velocity and acceleration values, but I think the problem doesn't lie here.

Without additional information, my guess would be that the problem lies in the controller side. How do you execute trajectories?, does your controller take into account waypoint velocities and accelerations or does it set them to zero?, does it sample/interpolate the command trajectory at the (likely higher) control rate?.

Best,

Adolfo.


Would you tell me how to increase the number of trajectory points?
Are there any parameter for that?
Or I must use compute_cartesian_path function instead?

Your advices would be appreciated.




--
Adolfo Rodríguez Tsouroukdissian
Senior robotics engineer
adolfo.r...@pal-robotics.com
http://www.pal-robotics.com

PAL ROBOTICS S.L
c/ Pujades 77-79, 4º4ª
08005 Barcelona, Spain.
Tel. +34.93.414.53.47
Fax.+34.93.209.11.09
Skype: adolfo.pal-robotics
Facebook - Twitter - PAL Robotics YouTube Channel

AVISO DE CONFIDENCIALIDAD: Este mensaje y sus documentos adjuntos, pueden contener información privilegiada y/o confidencial que está dirigida exclusivamente a su destinatario. Si usted recibe este mensaje y no es el destinatario indicado, o el empleado encargado de su entrega a dicha persona, por favor, notifíquelo inmediatamente y remita el mensaje original a la dirección de correo electrónico indicada. Cualquier copia, uso o distribución no autorizados de esta comunicación queda estrictamente prohibida.

CONFIDENTIALITY NOTICE: This e-mail and the accompanying document(s) may contain confidential information which is privileged and intended only for the individual or entity to whom they are addressed.  If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or use of this e-mail and/or accompanying document(s) is strictly prohibited.  If you have received this e-mail in error, please immediately notify the sender at the above e-mail address.

wataru yasuda

unread,
Jul 2, 2014, 10:46:50 AM7/2/14
to moveit...@googlegroups.com, watar...@gmail.com, adolfo.r...@pal-robotics.com
Hi Adolfo:

Thank you for your advice.


How many trajectory points were produced for those particular trajectories?. By default, the output of MoveIt! is pretty dense (5-10 points per second). Also, you could check that waypoints have sane velocity and acceleration values, but I think the problem doesn't lie here.


I have checked output of MoveIt! when my robot try to reach the puck.
There were 14 waypoints in 4.16 sec.
The movement distance of the end effector of my robot was only 3cm. 
All waypoints include velocity and acceleration values.
The max_velocity and max_acceleration defined in joint_limit.yaml file were both 1.571.
So I don't understand why the movement speed is so slow.
Are there any parameters to increase the speed?


Without additional information, my guess would be that the problem lies in the controller side. How do you execute trajectories?, does your controller take into account waypoint velocities and accelerations or does it set them to zero?, does it sample/interpolate the command trajectory at the (likely higher) control rate?.


I just use dynamixel_controllers package to control my robot.
I tried to read the code and as far as I read, the controller doesn't read velocities and accelerations.
It just set position. Also the dynamixel_parms.yaml file says it is a joint_position_controllers.
That is why I thought my robot could move more smoothly if I increase the number of trajectory points.

Would you please give me your ideas?


Sincerely yours,
Wataru Yasuda

Shaun Edwards

unread,
Jul 2, 2014, 11:30:42 AM7/2/14
to moveit-users
Wataru,

The industrial trajectory filters package has a uniform sampler filter that can be used to increase the number of waypoints in a trajectory while adhering to velocity/acceleration constraints.  The filters have been wrapped in a MoveIt Planning Request Adapter.  This tutorial shows how to include an adapter in the MoveIt config.

Shaun

Adolfo Rodríguez Tsouroukdissian

unread,
Jul 3, 2014, 3:11:49 AM7/3/14
to wataru yasuda, moveit-users
On Wed, Jul 2, 2014 at 4:46 PM, wataru yasuda <watar...@gmail.com> wrote:
Hi Adolfo:

Thank you for your advice.


How many trajectory points were produced for those particular trajectories?. By default, the output of MoveIt! is pretty dense (5-10 points per second). Also, you could check that waypoints have sane velocity and acceleration values, but I think the problem doesn't lie here.


I have checked output of MoveIt! when my robot try to reach the puck.
There were 14 waypoints in 4.16 sec.
The movement distance of the end effector of my robot was only 3cm. 
All waypoints include velocity and acceleration values.
The max_velocity and max_acceleration defined in joint_limit.yaml file were both 1.571.
So I don't understand why the movement speed is so slow.
Are there any parameters to increase the speed?

The resulting plan should respect what you specify in joint_limit.yaml. If your hardware can handle it, you can increase some of those values.



Without additional information, my guess would be that the problem lies in the controller side. How do you execute trajectories?, does your controller take into account waypoint velocities and accelerations or does it set them to zero?, does it sample/interpolate the command trajectory at the (likely higher) control rate?.


I just use dynamixel_controllers package to control my robot.
I tried to read the code and as far as I read, the controller doesn't read velocities and accelerations.

I'm not familiar with dynamixel_controllers, but it's possible that if only position information is being used, zero velocity/acceleration constraints are being set when reaching every waypoint, which would explain the constant stops observed in your video.

It just set position. Also the dynamixel_parms.yaml file says it is a joint_position_controllers.
That is why I thought my robot could move more smoothly if I increase the number of trajectory points.

Would you please give me your ideas?


I would either study the code of the controller to understand what it does, and how you can better leverage it; or contact users/developpers of the controller.

Best,

Adolfo.


Sincerely yours,
Wataru Yasuda

wataru yasuda

unread,
Jul 3, 2014, 10:08:28 AM7/3/14
to moveit...@googlegroups.com
Hi, Shaun,

Thank you for your advice.

OK, I would like to try uniform_sample_filter to increase the number of waypoints.
After I increased waypoints, are there any ways to increase speed also?


Sincerely yours,
Wataru Yasuda
 

2014年7月3日木曜日 0時30分42秒 UTC+9 Shaun Edwards:

wataru yasuda

unread,
Jul 3, 2014, 10:14:48 AM7/3/14
to moveit...@googlegroups.com, watar...@gmail.com, adolfo.r...@pal-robotics.com
Hi Adolfo:

Thank you for your advice.

I would either study the code of the controller to understand what it does, and how you can better leverage it; or contact users/developpers of the controller.

 
It will be greatly appreciated.
Thank you in advance.

Sincerely yours,
Wataru Yasuda

Shaun Edwards

unread,
Jul 3, 2014, 10:47:20 AM7/3/14
to moveit-users
Wataru,

Increasing the speed and acceleration limits in joint_limits.yaml should achieve this.  Be sure to increase the acceleration limits since these can be the limiting factor for small moves.

Shaun

wataru yasuda

unread,
Jul 4, 2014, 2:02:03 AM7/4/14
to moveit...@googlegroups.com
Hi, Shaun:

Thank you for your advice.

I set min_velocity of joint_trajectory_action_node to 0.001 in dynamixel_params.yaml file.
So I thought my robot could move even if it was very small movement.

What I don't understand is why the speed varies even the parameter setting is same.
For example,  the movement from the initial position to the approaching position took 4.15 sec with 27 waypoints.
And the movement from the approaching position to the target position took 4.16 sec with 14 waypoints.
The movement distance of the former one is more than 20cm while the latter one is just 3cm.

Are there any parameter I miss?


Sincerely yours,
Wataru Yasuda

2014年7月3日木曜日 23時47分20秒 UTC+9 Shaun Edwards:
Reply all
Reply to author
Forward
0 new messages