IFL-CAMP / iiwa_stack

ROS integration for the KUKA LBR IIWA R800/R820 (7/14 Kg).
Other
337 stars 250 forks source link

Fail to execute actions after configuring control mode #244

Open LeeKeyu opened 4 years ago

LeeKeyu commented 4 years ago

Hi community, I am trying to send action goals to iiwa7 using rospy to achieve the same function as this example spline motion demo. When no control mode is specified (by default the Position Control mode is used), the motion can be executed. But when I configured the control mode to be Cartesian Impedance control before executing the spline motion, iiwa simply doesn't move. I have tried the MoveToCartesianPoseAction and the MoveAlongSplineAction, but neither of them worked. No error was reported on my PC or SmartPad, and I receive this traceback after exiting: if not splineMotionClient.get_result().success: AttributeError: 'NoneType' object has no attribute 'success'

I believe it is caused by some conflicts between action and configureControlMode, since even when I configure it to be Postion Control Mode, the robot also cannot execute the actions, whereas when no control mode is speicified, it can execute that goal normally.

Has anyone encountered this problem before and can give me some suggestions? Thanks in advance.

LeeKeyu commented 4 years ago

Still haven't figured it out. I changed the control mode by calling the service /iiwa/configuration/ConfigureControlMode in the python script before executing the action. The control mode is successfully changed, but it cannot execute the spline motion action. As long as I comment the code that calls this service, the action can be completed successfully. I also tried to use the terminal to call the service ConfigureControlMode before running the node, but changed nothing. Can anybody help? Many many thanks!

LeeKeyu commented 4 years ago

I seem to understand a little bit about this problem. It should be caused by different command types. The actions are using the PTP commandtypes, while after configuring control mode, the motions that can be executed seem to be only the smartservo command types such as SMART_SERVO_CARTESIAN_POSE_LIN. I tried to change the type of MoveToCartesianPoseActionGoal to be SMART_SERVO_CARTESIAN_POSE_LIN in the iiwaActionServer.java, and now I am not getting the traceback "AttributeError: 'NoneType' object has no attribute 'success'" anymore, but unfortunately the action still cannot be executed. I think I will just give up using action to send cartesian pose commands, and only use the topic.

ghost commented 3 years ago

HI @LeeKeyu , same problem. Solved?

LeeKeyu commented 3 years ago

HI @LeeKeyu , same problem. Solved?

Not yet.

ghost commented 3 years ago

are you still working on the problem?

I'm having the same issue, when I switch from position control to joint impedance control the first time works, but the second one actionClient stuck on waiting result..

LeeKeyu commented 3 years ago

are you still working on the problem?

I'm having the same issue, when I switch from position control to joint impedance control the first time works, but the second one actionClient stuck on waiting result..

Hi, I'm not working on it any more, and I was only using the topic instead of action and client to send Cartesian commands under the impedence control mode. Hope the maintainers can fix it someday.

RuihanGao commented 3 years ago

are you still working on the problem?

I'm having the same issue, when I switch from position control to joint impedance control the first time works, but the second one actionClient stuck on waiting result..

Hi, I am having a similar issue that swithcing between action client and smart_servo command (topic) does not work after the first time. Did you solve it or have any suggestions? I try to use action to send Goal of tool Frame and get response when the motion is completed. Thanks in advance!

CodingCatMountain commented 2 years ago

@LeeKeyu Hi, May I ask a question about change the control mode ? I use this command rosservice call /iiwa/configuration/ConfigureControlMode in the shall, each time it just return fail. How can I solve this problem??