-
Notifications
You must be signed in to change notification settings - Fork 319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
End-effector Force Control behaviour Issue #411
Comments
Hi @jaygnu, Have you tried applying a force against the gripper to see if the arm is "pushing" at the requested force? For the first case, where the cartesian_force is bigger then the force applied on the arm (which is your case), the arm should accelerate in Z. So joint torques should increase, trying to reach their target force. However, this will stop once the arm reaches its velocity limit. Once the arm reaches its limit, the velocity of the arm should become constant and tool_wrench should drop to almost 0, because there is no more acceleration on the arm. I am not a wizard on this, so I might be wrong, but I am pretty sure what you are seeing is normal behaviour. Also, the Jaco2 arm is not very precise, so you might notice a small movement (couple cm) on x and y axis even if your command is only on the z axis Best, |
Thanks very much for the reply. As you suggested, we performed some tests and it appears the arm is pushing close (though not exact) to the requested force value. Details in pdf attached. The payload value is 3.2N. If the requested force is greater than the payload, then the arm goes up and if it is less, it won't, as expected. However, the main question is if the requested force is greater than the payload, why would the velocity (and acceleration) drop to zero ? e.g., at time step 40, for forces 4.0N & 4.9N in the graphs. In both cases the wrench does show that there is an applied force that is close to the requested force, but the velocity has dropped to zero (and the position is constant). It also appears from the graph that the velocity and acceleration limits are not reached, since a slightly larger force leads to larger velocity and acceleration, hence the question. As you suggested, we were expecting "the velocity of the arm should become constant" too. But instead it drops to zero and the arm is motionless in floating mode although there is an upward force as per the /tool_wrench While digging a bit more on the reasons for behaviour, we also noticed that even when no payload is applied (and no force is requested), the end effector (/tool_wrench) still shows values around 1 to 3N (on all axis) usually and it varies based on the position/orientation of the arm. Shouldn't it be close to zero ? In addition, we noted that X-Y cartesian coordinates are not as per what is listed below, it seems to be interchanged. Would that have an impact ? Line 171 in a9e3c80
Thanks |
If your arm reaches its force limit (4.0N and 4.9N), I expect it to stop moving, like your graphs show. This is something I would expect to happen when your payload is too heavy. I don't think your axis are inverted, the readme file is confusing (it might also be wrong, I will have to check), but even if your axis were inverted, I don't think it would have an impact. |
Hi @felixmaisonneuve, Thanks once again for your patient answers. Would you be able to elaborate a bit on your statement "If your arm reaches its force limit (4.0N and 4.9N), I expect it to stop moving. .... payload is too heavy.". The suspended weight is just 320gms. Prior to our tests, we had tried re-calibration of the torque sensors using the ROS/README a few times. What we had observed is that in candle position, the torques can be made pretty close to zero, but on moving the arm to different positions, the values change to 1N to 3N even without any payload. Though, we want to try using the Development Center you suggested for re-calibration, which might be helpful to check the axis as well. In the portal Resources/Software I can see Gen 2 SDK v1.5.1 and the Gen2 SDK user guide. Is that the right option for Kinova Jaco2 j2n6s300 arm ? Also it appears SDK latest integration is with Ubuntu 16.04. Does it work on later versions of ubuntu ? Cheers |
Can you compare Keep in mind the Jaco2 arm is not precise in any way and it was not designed to do some advanced torque control movements. The torque readings and tracking (when the arm is in movement) might not be accurate. Because of that, it is normal to see tool_wrench.force and motion in all direction even if your command is only in +z. Altough it should not be moving forward, it should only be a relatively small offset on x and y axis. You have to make sure the cartesian_force you send is big enough to compensate for that if you want the arm to move. Also, when the arm is not in a candle position, it is normal to see torque values on joints, because they apply a torque to keep the arm in place. It is also possible to see a small force/wrench on the end-effector even no force is applied because of the sensors imprecision. Development Center comes with the Gen 2 SDK v1.5.1. It can be used for any configuratio of Jaco arm and it is also working with later versions of Ubuntu as well (I have not tried it on Ubuntu22.04 yet). The installation procedure is the same, whatever you Ubuntu version. Gen 2 SDK v1.5.1 also comes with the TorqueConsole. You can use this application to execute some features related to torque. You can use deveopmenet center to monitor quite a few things while your are playing with the arm. Be carefull however, you cannot use ROS at the same time as DevCenter or Torque |
Hi, I face the problem that the robot does not move using publishForceCmd(force_cmds, duration_sec, prefix) by setting the force_cmds to even 20N without playload. I have calibrated the torque sensors using gravity_compensated_mode.py (but the robot can not be manually moved through this code) and then moved the robot to the home position. The robot arm can not be moved using the admittance control (rosservice call /...._driver/in/start_force_control) either. It seems that force/torque control does not work on my robot. I succeed in connecting the robot by setting the robotType=j2n6s300, so I think the robot is Jaco 2 instead of Jaco 1, right? |
Indeed, this means you have a Jaco2 robot. Very old units may not have force control enabled. You can validate this by trying to run the Torque Console which is included with the Kinova SDK. |
Hi Martin, Thank you for your reply! I have tried the Torque Console but nothing happened after I clicked 'Switch Torque Control'. The robot stays stiff. I can get "Good connection", does this indicate that the robot has force control enabled? If not, how could I check wether the robot supports this function? What should I supposed to see in the interface to indicate the robot has succeeded in turning into torque control mode? And in the terminal console, I got the same results as Mik in the terminal where I started the Torque Console here.
Also, when I launched the demo in the Admittance module in the Development Center, the robot can not move either. |
Hi Leong, This may suggest that your robot is in assistive mode instead of service mode, so torque control may very well be disabled. Please contact us at [email protected], we will share with you a procedure to enable it. To go faster through triage, in your e-mail you can mention discussing with me (Martin) on Github and add a link to this issue. I will get back to you as quickly as possible. Cheers, |
Description
We have a question about End-effector Force Control behaviour on our Kinova Jaco2 j2n6s300 arm & noetic-devel kinova-ros.
Our experiment set up is quite simple, we have a small box (180gms) gripped by the arm. We apply a constant end-effector force in the +z direction by continuously pumping kinova_msgs.msg.CartesianForce messages into the *_driver/in/cartesian_force topic in torque_control mode. Our expectation was that the box would be lifted up with a constant acceleration/linearly increasing velocity with position changes only in +z axis all the way till the arm periphery is reached as long as the applied force is larger than what is required to overcome weight of the box 1.8N.
However we found the behaviour different in the following ways and was wondering if you could provide some guidance. Attached pdfs a few graphs of expected (from a basic simulation) and actual trajectories with the arm
Just wondering if you could help us understand this behaviour or if it is a bug; perhaps it is something basic that we are overlooking ?
The code we use is very similar to the publishForceCmd method from
kinova-ros/kinova_demo/nodes/kinova_demo/robot_control_modules.py
Line 166 in 7b5cd2f
Expected Vs Actual Behaviour
Please refer the pdf
expected_vs_actual_behaviour.pdf
Thanks in advance
Version
ROS distribution : noetic-devel
Branch and commit you are using : https://github.com/Kinovarobotics/kinova-ros/tree/noetic-devel
The text was updated successfully, but these errors were encountered: