rohitParticipantNovember 13, 2018 at 7:02 amPost count: 3
I am trying real time control of the niryo using python API and observed very high dealy of about 2-4 sec for moving a joint by 2-2.5 rad with velocity set to 100%.
Are there any tweaks possible to improve this timing? Is it a hardware limitation?
Edouard RenardKeymasterNovember 14, 2018 at 12:16 pmPost count: 219
- This topic was modified 8 months ago by rohit.
Using the Python API should not add any delay for a move command. (apart from the Python processing which should be quite fast)
Can you give more info about how you are using the Python API ? And is the delay happening between the moment when the Python script asks for a move command, and the moment when the move command starts ?rohitParticipantNovember 14, 2018 at 5:26 pmPost count: 3
Thanks for the reply.
Sorry, for not being super clear. The time delay referred here time taken by joint for angular displacement and the python API returns after that.
Is it limited by maximum RPM of motor for the load attached or there is scope of improvement for software control? http://www.robotis.us/dynamixel-xl430-w250-t/ mentions 61 RPM at no load.
I am using move_joints for joint movement, and moving joint ‘3’ by 2-2.5 rad and the ‘delay’ observed is 2-4 sec.
start = datetime.now()
end = datetime.now()
delay = millis_interval(start,end)
For a real time control, I am looking for delay in order of max. 100 milliseconds for angular displacement of 0.5-1 rad.
Maximum velocity is set to 100% for this. Is there possibility to increase the maximum velocity as well? Quickly going through the source didnt provided much insight (considering I am not familiar with ROS), https://github.com/NiryoRobotics/niryo_one_ros/blob/71ba3f97330e2420469f65aa1a41b17e52899600/niryo_one_commander/scripts/robot_commander.py#L154Edouard RenardKeymasterNovember 15, 2018 at 1:59 pmPost count: 219
Thanks for the explanations, that’s now very clear.
Actually the velocity is limited by the Moveit! library we are using for motion planning. This library will produce a trajectory and send this trajectory to the controller. Some limits are applied to the trajectory, so that’s where the limitation is, not on the motor/hardware level.
The anchor link you provided here (to the robot_commander.py file) is an additional functionality that can reduce the limits previously set. Default is 100%, so you can only reduce max velocity, not increase it. (hence, not useful for what you want to do)
If you want to change the parameters used by Moveit! for the max velocity and max acceleration (note: “max” and not “average”), you’ll need to edit this file.
The current max velocity is 2.0 rad.s-1 , and the acceleration limit is deactivated, so Moveit! will use default 1.0 rad.s-2.
If you want to increase the global velocity you’ll mostly have to increase the acceleration limit. Before you do that, note that increasing the acceleration limit might cause some stepper motors to “drift” on the belt, and it can be quite an overload for the Dynamixel motors. So you do that at your own risks.
I hope this helps!rohitParticipantNovember 15, 2018 at 3:45 pmPost count: 3
Cool, so it is possible.
I guess I can use the config https://github.com/NiryoRobotics/niryo_one_ros/blob/master/niryo_one_moveit_config/config/joint_limits.yaml to increase the velocity and acceleration.
As you mentioned, increasing acceleration increases the “drift” risk but would really appreciate if you can let me know the maximum safe limit based on your experience with niryo. Experimentation to find it by trial and error would be trickier and I only got one niryo! 😛
You must be logged in to reply to this topic.