I'm currently testing moveit on custom hardware using ROS Indigo. I'm finding that the acceleration scaling factor isn't being obeyed for any of my joints.
My joint_limits.yaml looks like this:
joint_limits:
pitch:
has_velocity_limits: true
max_velocity: 0.06
has_acceleration_limits: true
max_acceleration: 0.01
has_jerk_limits: false
max_jerk: 0.005
slew:
has_velocity_limits: true
max_velocity: 0.04
has_acceleration_limits: true
max_acceleration: 0.01
has_jerk_limits: false
max_jerk: 0.005
extension:
has_velocity_limits: true
max_velocity: 0.07 #0.06
has_acceleration_limits: true
max_acceleration: 0.05
has_jerk_limits: false
max_jerk: 0.025
Given an acceleration limit of 0.01 rad/s/s on the slew joint, scaled by 0.3 I'd expect to see an acceleration no higher than 0.003 rad/s/s. Here's the velocity output from rqt;

That's a change in velocity from 0 rad/s to 0.04 rad/s over 1.1 s or 0.0363 rad/s/s acceleration. I'm setting the scaling factor using the text box in the planning section of motion planning in RVIZ. My trajectory is just a more or less linear swing from one position to another across about 2.5m. I plan and execute the trajectory using the GUI in RVIZ and execution is successful aside from these constraint violations.
Am I fundamentally misunderstanding the purpose of the acceleration scaling factor? Surely it should force moveit to obey acceleration constraints? As far as I can tell, moveit doesn't obey my acceleration constraints at all. Velocity constraints are obeyed just fine. My next step is to test IPTP.
I've implemented a hardware controller using ros_control that's checking and enforcing joint limits (position, vel and supposedly accel) at 10Hz. As far as I can tell the hardware controller is behaving as expected.
Thanks for you help!
↧