Skip to content
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

how to get τ = Y ( q , q ˙ , q ¨ ) χ the inertia matrix X? #2

Open
cherishyuan opened this issue Dec 25, 2024 · 3 comments
Open
Labels
question Further information is requested

Comments

@cherishyuan
Copy link

In example :


#Exemple: compute the full regressor matrix 
W = reg.computeFullRegressor(q, qp, qpp)
#Exemple : compute the reduced rgressor matrix
W_ = reg.computeReducedRegressor(q, qp, qpp,1e-6)

How do I get the corresponding inertia matrix X?I don't find the corresponding documentation

THanks!

@wissem01chiha
Copy link
Owner

wissem01chiha commented Dec 25, 2024

Hi @cherishyuan,

Thanks very much for your interest in my work. The $X$ variable is not only the inertial matrix, but rather a $1 \times k$ vector which contains the inertial values of the robot in the first $6 \times n$ elements. Here, $n$ is the number of robot links (since each link’s inertia tensor can be represented by 6 elements: $I_{xx}$, $I_{yy}$, $I_{zz}$, $I_{xz}$, $I_{xy}$, $I_{yz}$). The remaining elements represent other variables related to friction or stiffness parameters of each joint. The general form of $X$ is:

$$ \mathbf{X} = [I_{xx,1}, I_{yy,1}, I_{zz,1}, I_{xz,1}, I_{xy,1}, I_{yz,1}, \dots, I_{xx,n}, I_{yy,n}, I_{zz,n}, I_{xz,n}, I_{xy,n}, I_{yz,n}, f_{c,1}, f_{c,1}, \dots, k_1, k_2, \dots, k_n, \dots] $$

This vector is the scope of the project, which is to extract it from real-world experiments. There are two ways to obtain the inertial parameters:

  1. Referring to the datasheet of your robot and extracting the values directly (note that these values may not be very accurate for your experiments, so use them as an initial guess to start the identification routines and optimization of $X_0$). For example, for Kinova Gen3, you can find them here on page 205.

  2. Setting random initial values and running one of the optimization scripts to find the suitable ones. This will generate the vector $X$ as a .npy file, which can be loaded directly into Python. (I have removed the specific values for the Kinova Gen3.)

For more information about the results (figures, error values, etc.) and experimentation, you can find it here.

@wissem01chiha wissem01chiha added documentation Improvements or additions to documentation question Further information is requested and removed documentation Improvements or additions to documentation labels Dec 25, 2024
@cherishyuan
Copy link
Author

@wissem01chiha commented on Dec 25, 2024, 5:50 PM GMT+8:

Hi @cherishyuan,

Thanks very much for your interest in my work. The X variable is not only the inertial matrix, but rather a 1 × k vector which contains the inertial values of the robot in the first 6 × n elements. Here, n is the number of robot links (since each link’s inertia tensor can be represented by 6 elements: I x x , I y y , I z z , I x z , I x y , I y z ). The remaining elements represent other variables related to friction or stiffness parameters of each joint. The general form of X is:

X = [ I x x , 1 , I y y , 1 , I z z , 1 , I x z , 1 , I x y , 1 , I y z , 1 , … , I x x , n , I y y , n , I z z , n , I x z , n , I x y , n , I y z , n , f c , 1 , f c , 1 , … , k 1 , k 2 , … , k n , … ]

This vector is the scope of the project, which is to extract it from real-world experiments. There are two ways to obtain the inertial parameters:

  1. Referring to the datasheet of your robot and extracting the values directly (note that these values may not be very accurate for your experiments, so use them as an initial guess to start the identification routines and optimization of X 0 ). For example, for Kinova Gen3, you can find them here on page 205.

  2. Setting random initial values and running one of the optimization scripts to find the suitable ones. This will generate the vector X as a .npy file, which can be loaded directly into Python. (I have removed the specific values for the Kinova Gen3.)

For more information about the results (figures, error values, etc.) and experimentation, you can find it here.

Thank you for your reply. I know how to solve the dynamic parameters, but there seems to be a lack of usable demos. I hope to add usable demos for testing. Thank you for your contribution.

@wissem01chiha
Copy link
Owner

Hi @cherishyuan, yes, you're right the current documentation lacks a lot of clarification on how to use the tools. I'm working on updating it whenever I have some free time. thank you so much for your feedback, I really appreciate it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants