Scale problem when importing an .stl file with addVisual for adding a mesh corresponding to a rigidBody
11 views (last 30 days)
Show older comments
Johan Poccard
on 9 Sep 2020
Commented: Christopher Bitikofer
on 22 Nov 2022
kin = loadrobot('kinovaJacoJ2S6S300');
removeBody(kin,'j2s6s300_link_finger_1');
removeBody(kin,'j2s6s300_link_finger_2');
removeBody(kin,'j2s6s300_link_finger_3');
dhparams = [0 pi/2 0.290 0];
bodyTest= rigidBody('bodyTest');
jointTest= rigidBodyJoint('jointTest','revolute');
setFixedTransform(jointTest,dhparams(1,:),'dh');
bodyTest.Joint=jointTest;
addVisual(bodyTest,"Mesh",'arm.stl');
addBody(kin,bodyTest,'j2s6s300_end_effector');
show(kin)
I imported a robot from an existing library, removed some bodies and then I added a new rigidBody (bodyTest) to the rigidBodyTree (kin), all of this worked fine. But I also want to add a visual for this bodyTest in the form of arm.stl. The addVisual function works but there's a units problem, Matlab reads the [mm] values of the stl file as [m] values.
I looked at multiple topics on this problem but none of them offered a real answer for me. I can't use another stl file reader besides addVisual as it is the only function (I think) that specifies the stl file as being the geometrical representation of a rigidBody object.
Thanks in advance.
1 Comment
Christopher Bitikofer
on 22 Nov 2022
Just an fyi you can scale stl meshes using the transform argument in the add visual command. It's a bit sneaky since you need to recall that you can use matricies to rotate, translate and scale.
tForm = [eye(3).*0.001,[0 0 0]';[0 0 0 1]]; % scale units of stl from mm to m
addVisual(rb1,"Mesh","mymesh.STL",tForm)
Accepted Answer
More Answers (0)
See Also
Categories
Find more on Manipulator Modeling in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!