How to change the color of a rigidbody visual.
29 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Control Systems Guy
le 22 Déc 2023
Commenté : Control Systems Guy
le 28 Déc 2023
Hello,
I am creating a rigid body (robot link) and would like to change the color of the visual. For example:
body1 = rigidBody('body1');
jnt1 = rigidBodyJoint('jnt1','revolute');
tform = trvec2tform([0 1 0]);
setFixedTransform(jnt1,tform);
body1.Joint = jnt1;
robot = rigidBodyTree('DataFormat', 'column');
addVisual(body1, "sphere", 1.2)
addBody(robot,body1,'base')
show(robot,"Visuals", "on", 'Frames', 'off')
It always generates the figure in gray scale. I would like to assign a different color to different bodies. How can I do that? I know that I can also add collision boxes or spheres, but they are similarly of the same color by default (green).
0 commentaires
Réponse acceptée
Chunru
le 23 Déc 2023
body1 = rigidBody('body1');
jnt1 = rigidBodyJoint('jnt1','revolute');
tform = trvec2tform([0 1 0]);
setFixedTransform(jnt1,tform);
body1.Joint = jnt1;
robot = rigidBodyTree('DataFormat', 'column');
addVisual(body1, "sphere", 1.2)
addBody(robot,body1,'base')
g = show(robot,"Visuals", "on", 'Frames', 'off');
% You can change color of individual object
g.Children(1).FaceColor = 'r';
1 commentaire
Control Systems Guy
le 23 Déc 2023
Modifié(e) : Control Systems Guy
le 23 Déc 2023
Plus de réponses (1)
Chunru
le 24 Déc 2023
See below for the question (1). I am not sure the part (2) and you may want to show your current code.
body1 = rigidBody('body1');
jnt1 = rigidBodyJoint('jnt1','revolute');
tform = trvec2tform([0 1 0]);
setFixedTransform(jnt1,tform);
body1.Joint = jnt1;
robot = rigidBodyTree('DataFormat', 'column');
addVisual(body1, "sphere", 1.2)
addBody(robot,body1,'base')
body2 = rigidBody('body2');
jnt2 = rigidBodyJoint('jnt2','revolute');
tform2 = trvec2tform([1, 0, 0]);
setFixedTransform(jnt2,tform2);
body2.Joint = jnt2;
addVisual(body2, "capsule", [.5, 3],[0 0 1 0; 0 1 0 0; -1 0 0 0; 0 0 0 1])
addBody(robot,body2,'body1'); % Add body2 to body1
figure(1)
g = show(robot,"Visuals", "on", 'Frames', 'off');
% Change color for all applicable children
for i=1:length(g.Children)
try
g.Children(i).FaceColor = 'r';
end
end
1 commentaire
Voir également
Catégories
En savoir plus sur Robotics 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!