why does the LWA 4P stop?

asked 2017-07-29 09:32:13 -0500

David_111 gravatar image

Sometimes the LWA 4P stops its movement abruptly. This happens when the robot is in a rather horizontal position. To control the robot, i use the ipa_canopen pkg and the cob_trajectory_controller.
I found that sometimes the following Error is thrown:
Current control error exceeds limit: 1.505518 >= 1.500000 so i tried to raise that value...

which led to a different Error:

[ INFO] [1501330005.922260063]: Calculated 15 splinepoints
[ INFO] [1501330005.922310535]: Starting control of trajectory: 6.826263 s long
[ERROR] [1501330009.420866976]: Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 3.505966 seconds). Stopping trajectory.
[ INFO] [1501330009.420909060]: MoveItSimpleControllerManager: Cancelling execution for lwa4p_controller
[ INFO] [1501330009.420999034]: Execution completed: TIMED_OUT
[ INFO] [1501330009.436837338]: Preempted trajectory action

This makes me wonder: when the trajectory is supposed to be 6.8 s long, why would it stop after 3.5 s? It appears as if these two values are the results of two calculations that use different velocities...

Solved the TIMED_OUT issue with this Answer which also gives some insight on the different times.

But now the robot just stops movement, without Error message. Of course the stop is followed again by a TIMED_OUT Message, but that appears far later than the actual stop of the robot. I tried to find something with with the debug=true option but not luck.
I'm all out of options now :/

I am happy to provide additional information if i left something out. Any Ideas for the cause of/solutions to the Problems?
Help is greatly appreciated!


dirty hack to release the breaks of the LWA 4P

The motor state doesn't change through the usage of the move_device, but since it helped, i wrote a dirty hack, in form of a bash script that moves each joint in both directions for 3 seconds. In Case anyone finds it helpful:

cd "/PATH/TO/WORKSPACE/devel/lib/ipa_canopen_core"

# declaration of parameters
device="/dev/pcan32"
# this might vary in your case, so check for the node ids when running the file 
nodes=(3 4 5 6 7 8 12)
baud="500K"
syncrate=10
t_vel=0.2
acc=0.05
direction=(-1 1)

for i in ${nodes[*]} ; do
    for j in ${direction[*]}; do
        #calc params
        current_vel=$(echo $j*$t_vel | bc)
        current_acc=$(echo $j*$acc | bc)
        ./ipa_canopen_core_move_device ${device} ${i} ${baud} ${syncrate} $current_vel $current_acc  &
        PID=$!
        sleep 3
        kill -9 $PID
    done

edit retag flag offensive close merge delete