How to change the color of a rigidbody visual.
    8 views (last 30 days)
  
       Show older comments
    
    Control Systems Guy
 on 22 Dec 2023
  
    
    
    
    
    Commented: Control Systems Guy
 on 28 Dec 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 Comments
Accepted Answer
  Chunru
      
      
 on 23 Dec 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 Comment
  Control Systems Guy
 on 23 Dec 2023
				
      Edited: Control Systems Guy
 on 23 Dec 2023
  
			
		More Answers (1)
  Chunru
      
      
 on 24 Dec 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
See Also
Categories
				Find more on Manipulator Modeling in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






