move_group_commander trajectory velocities not even close to set max_velocity

72 views
Skip to first unread message

joshuama...@u.northwestern.edu

unread,
Dec 7, 2016, 11:51:19 AM12/7/16
to MoveIt! Users
Hello,

I have overwritten the joint_velocity in my URDF with joint_limits.yaml using the following for each joint:
    has_velocity_limits: true
    max_velocity: 3.14
    has_acceleration_limits: false
    max_acceleration: 0

My joints will be representing Dynamixel motors for a quadruped robot with a no-load speed of 63 rpm, which is roughly 2*pi rad/s. I have scaled this down for now using a factor of 1/2.

In my Python code, I set a random joint target, create a plan, and inspect the velocities at each waypoint in the trajectory. The maximum velocity for the trajectory for all the joints never goes above 1.5 rad/sec. I even tried setting the max_velocity in joint_limits.yaml to a large value (100 rad/s), but the inspected maximum velocity for the trajectory still never goes above 1.5 rad/s. Is there something I am missing?

Not sure if it matters, but my transmission elements in URDF for each actuated joint are:
<transmission name="femur_transmission_${side}${position}">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="femur_joint_${side}${position}">
        <hardwareInterface>PositionJointInterface</hardwareInterface>
    </joint>
    <actuator name="femur_motor_${side}${position}">
        <mechanicalReduction>1</mechanicalReduction>
    </actuator>
</transmission>

and ros_control controllers look like:
        type: position_controllers/JointTrajectoryController
        joints:
            - femur_joint_LF
            - tibia_joint_LF
            - tarsus_joint_LF
        constraints:
            goal_time: 0.6
            stopped_velocity_tolerance: 0.05
            femur_joint_LF: {trajectory: 0.1, goal: 0.1}
            tibia_joint_LF: {trajectory: 0.1, goal: 0.1}
            tarsus_joint_LF: {trajectory: 0.1, goal: 0.1}
        state_publish_rate:  25
        action_monitor_rate: 10



Thanks,
Josh

Ruben Burger

unread,
Dec 10, 2016, 11:04:21 AM12/10/16
to MoveIt! Users
Hi Josh,

When the acceleration limits are not set, it defaults to 1.0, as can be seen here: line 358 of iterative_time_parameterization.cpp
Perhaps not the most logical thing, but something needs to be chosen as a completely unlimited acceleration would lead to other problems and probably to "unsafe" trajectories in many cases. With the acceleration limit set to 1.0 and that putting an upper bound on the max velocity, it makes sense that increasing the velocity limit doesn't affect the maximum velocity. Try setting the acceleration limit to some other value. I don't know what a decent value would be for a dynamixel, but I would expect it to be fine with something >1.0

Ruben

PS: I believe ROS Answers is currently the best place for these kinds of questions and you would have a better chance of getting a timely response.



Op woensdag 7 december 2016 17:51:19 UTC+1 schreef joshuama...@u.northwestern.edu:

joshuama...@u.northwestern.edu

unread,
Dec 12, 2016, 5:01:58 PM12/12/16
to MoveIt! Users
Hello Ruben,

Thank for you answering the question. I was not aware that it defaults to 1.0. Changing this value did the trick.


Thanks,
Josh
Reply all
Reply to author
Forward
0 new messages