- How did you construct the rigid body tree? If you constructed it manually, it's possible that the rigid body tree object and simscape multibody model don't align. In that case, I would recommend that you instead try using importrobot so that you can ensure that the two models are definitely equivalent. You can also spot-check equivalence with your current model by checking the outcomes of getTransform for a few different values.
- What are your weights? In the model above, it's not obvious what the weights are, but it seems like you only care about matching position. If that's the case, the weights input should be something like [0 0 0 1 1 1], i.e. you should place a weight of zero on matching orientation. If you are using the usual default values, ones(1,6), you are likely trying to achieve an infeasible target pose because you'd be weighting orientation equally. See the associated documentation for reference.
- What are the outputs of the info output? Does the IK block think that it's achieving a feasible position? If so, then your models likely don't match. If not, look at the info output to understand why, and check to make sure the result is actually feasible. See the documentation for more info: https://www.mathworks.com/help/robotics/ref/inversekinematics.html#mw_8f6480d5-ccf4-4161-be1b-4647bb763cd8
Robotic System Toolbox's (Get Transform Error) using Sim-Scape Multibody
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I've made an articulated manipulator on simscapae multibody diagram rather than importing form solidworks.
The problem arises in "get transform" block. The link Lengths are: L1 = 0.5; L2 = 1 & L3 = 1m.
As can be seen in [1], At given end-effector positions [0; 2; 0.5] the computed joint angles from Inverse Kinematic Block are [0;0;0]. But when given joint angles are applied to Get Transform (Forward Kinematics) block the xyz co-ordinates are [0;1;0.5] instead of [0; 2 ;0.5]
As you can see from the attached image [2], The problem is the Get transform block selects the same block as BASE and Body 1. The Link 1 is being selected as Body 2 and Link 2 is being selected as Body 3. Is'nt Body 3 should be Link 3.
As showed in [3], the World frame is attached with the Top Face of Base and Bottom Face of Link1 (at Revolute Joint 1). I have also tried by changing the position of world frame by attaching it to the bottom face of Base and using Rigid Transform Block but problem remains there.
Is there any possible solution to this.
PS: [1], [2], [3] are attachments.
0 commentaires
Réponses (1)
Hannes Daepp
le 10 Août 2021
Hi,
It's hard to tell you what's going on without a model that could provide some more detail on the inputs. The following points should give you some avenues within which to look for solutions:
Hopefully this is helpful. However, if that still doesn't help, please provide a model and supporting data (e.g. rigid body tree object) as attachments to aid with debugging. If you're not comfortable providing the model in a public forum, please contact technical support.
Best,
Hannes
1 commentaire
Voir également
Catégories
En savoir plus sur Simulation and Analysis dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!