-
Notifications
You must be signed in to change notification settings - Fork 35
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
Running instruction? #1
Comments
Great to hear about the interest.
However, we provide an example configuration in the readme. My understanding is that this should go here in the Then when starting things up, in lbr_fri_ros.launch these two changes are necessary:
That might be everything that's needed, but take it with a grain of salt since I haven't used that iiwa driver yet. Let me know if there are more questions of issues. I just pushed an update regarding the dependencies. |
hi, very nice contribution.
Can you please help me in this case ? |
We didn't test with The image that you are sharing seems to be from Gazebo. Are there any other messages? E.g. Gazebo complaining about something? It would also be helpful if you could share a diff with the modifications that were made. Which branch/commit of
|
The robot should not fall upon being started. The controller starts with stiffness values of 200 & 20 for translation & rotational stiffness. That is sufficient to keep it from falling. However regarding the dying iiwa_service with
This typically happens if some parts of the software stack have been compiled with The reason why it's falling in your case is that |
Did the instructions work? |
Yes it worked, however I still need to test it on the real KUKA by today, will update soon. |
I assume that you got the FRI library for This is the patch. It can be applied with From cb623f2d6a9baabf6a232a90b5def1939d32326e Mon Sep 17 00:00:00 2001
From: Matthias Mayr <[email protected]>
Date: Mon, 12 Dec 2022 14:37:38 +0100
Subject: [PATCH] Config: Disables SIMD, march=native by default
iiwa_ros does not use it by default anymore
---
wscript | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/wscript b/wscript
index 9978455..d4a8fea 100644
--- a/wscript
+++ b/wscript
@@ -22,6 +22,7 @@ def options(opt):
opt.load('compiler_c')
opt.add_option('--shared', action='store_true', help='build shared library', dest='build_shared')
+ opt.add_option('--native', action='store_true', help='build with march=native', dest='native')
def configure(conf):
@@ -33,19 +34,28 @@ def configure(conf):
if conf.options.build_shared:
conf.env['lib_type'] = 'cxxshlib'
+ native = ''
+ native_icc = ''
+ if conf.options.native:
+ conf.msg('-march=native (AVX support)', 'yes', color='GREEN')
+ native = ' -march=native'
+ native_icc = ' mtune=native'
+ else:
+ conf.msg('-march=native (AVX support)', 'no (optional)', color='YELLOW')
+
if conf.env.CXX_NAME in ["icc", "icpc"]:
common_flags = "-Wall -std=c++11"
- opt_flags = " -O3 -xHost -mtune=native -unroll -g"
+ opt_flags = " -O3 -xHost -unroll -g" + native_icc
elif conf.env.CXX_NAME in ["clang"]:
common_flags = "-Wall -std=c++11"
- opt_flags = " -O3 -march=native -g -faligned-new"
+ opt_flags = " -O3 -g -faligned-new" + native
else:
gcc_version = int(conf.env['CC_VERSION'][0]+conf.env['CC_VERSION'][1])
if gcc_version < 47:
common_flags = "-Wall -std=c++0x"
else:
common_flags = "-Wall -std=c++11"
- opt_flags = " -O3 -march=native -g"
+ opt_flags = " -O3 -g" + native
if gcc_version >= 71:
opt_flags = opt_flags + " -faligned-new"
--
2.17.1 Maybe I should write a gist about this. All the |
Alright thanks for the patch information, I will apply it just for the safe side. As of now, it is working without any change in the FRI module. But before this, I tested the robot, the robot started up with I noticed one thing that when I select the I checked once with selecting the value as 0 and it goes fine, it doesnot oscilate. I want to use the |
Cool. Great to hear. @majstenmark will be interested learning that it would run on the
We never tried that and I am not surprised. There are two things happening here if you select non-zero stiffnesses:
What your seeing sounds mostly like 1.. It's interesting to hear about, I never tried it, because I did not see a point.
I got you covered here since we're working similarly in our research and my research code. Here is a trajectory generator that makes Cartesian linear trajectories. Since this one makes smooth motions, one can turn off the pose filtering of the controller by setting it to 1.0
We typically use
With the Cartesian trajectory generator you can define a velocity in the configuration file. If joint-space trajectories are used, they define the velocity. In both cases, filtering should be turned off. We do not use it in our setup. It's mostly there to provide people a lower entry hurdle without needed to fear about their robot. |
Super ! Thanks for your ideas on this.
I have some more queries, thanks for helping already. :) As I read somewhere in the issues that gravity compensation is already handled by the kuka controller. However, if we launch the TorqueControl mode in
I realized that there is a significant error between the commanded position and the actual position of the end-effector. How do I minimize it? Do I need to increase the stifness values of the joints?
I was trying to use services from the
Thankyou so much for these studies and references, I will surely check them. Can I fork your repo? |
Yes, that can happen if the robot is not perfectly calibrated. You can re-run the KUKA tool calibration and check whether it got better. Our one usually lifts a bit. I talked to some guys from Stanford and they ran an identification using the external torques and added an imaginary mass at the end-effector.
Yes.
Answered here: epfl-lasa/iiwa_ros#34 (comment)
Of course. That's what open source is about. Feel free to send pull requests as well. We implemented what we needed ourselves and found generally useful. I am sure there are new interesting and relevant features that could be integrated. |
Small calibration update: It has been discussed in iiwa_ros again.. I am assuming that this issue is handled. If there are future questions, feel free to open new issues. |
Hi @matthias-mayr, I did a simple experiment to check the problem. Current Stiffness configuration is [1000,1000,800,100,100,100]
At 1: Im changing the nullspace configuration of the robot, and I found that wrench is improving significantly. then it is moved to some random position, and brought back to original position using cartesian_trajectory_generator package you provided. At 5: The nullspace configuration is similar. But first the wrench value is high, Im gently slapping (twice) the end-effector of the robot, it again comes back to a better state. I also recorded end-effector position value along with it. What do you think about this problem? why setpoint is not sticking to the same value even though cartesian stiffness values are same. |
(Unfortunately I missed the notification about your comment in my inbox)
As far as I know about |
Hi @matthias-mayr thank you for your reply, and clearfiying these doubts. but in the code implementation, these are actually ignored, as defined in your paper Is there any specific reason for that? or assuming quasi-static cases only? |
Hi @anubhav-dogra , For the task space torque, the virtual inertia is chosen as the robot inertia to avoid inertia shaping [Ch. 3.2, Ott2008], so that the input force does not require feedback from the external forces. For the null-space torque, the current implementation assumes quasi-static cases as you mentioned. Please note that M(q) is not the only weighting matrix for the pseudo inverse of the Jacobian matrix that would achieve dynamic consistency. An alternative to M(q) was proposed in [Park1996]. Also, as discussed [Dietrich2015], "the differences between static and dynamic consistency are significantly smaller than expected when real hardware is considered." [Ott2008]: Ott, C. (2008). Cartesian impedance control of redundant and flexible-joint robots. Springer. [Park1996]: Park, J. (1999). Analysis and control of kinematically redundant manipulators: An approach based on kinematically decoupled joint space decomposition. PhD Thesis, Pohang University of Science and Technology. [Dietrich2015]: Dietrich, A., Ott, C., & Albu-Schäffer, A. (2015). An overview of null space projections for redundant, torque-controlled robots. The International Journal of Robotics Research, 34(11), 1385-1400. |
Hi Matthias,
Great contribution to the community you have done :)
I followed your suggestion from your comment in another issue and come have a look.
I have some questions regarding running your codes.
-- For example, start lbr_server (what option?), rosrun/roslaunch something something...
Thank you very much!
The text was updated successfully, but these errors were encountered: