Cube with different side color in RGB

4 次查看(过去 30 天)
I created a cube using rigid body tree (code below). Then I wanted to color different sides of the cube, red, gree, blue, etc... but when I use the command
addVisual(body, 'box', [1 1 1], 'FaceColor', 'r');
for a side to be in red color, the issue is, it is giving me error of too many arguments.
cube = rigidBodyTree;
body1 = rigidBody('body1');
joint1 = rigidBodyJoint('joint1','floating');
body1.Joint = joint1;
addVisual(body1, 'box', [1 1 1], 'FaceColor', 'r');
Error using robotics.manip.internal/RigidBody/validateAddVisualInputs
Too many input arguments.

Error in robotics.manip.internal.RigidBody/addVisual (line 215)
validType = validateAddVisualInputs(obj, type, parameter, varargin{:});

Error in rigidBody/addVisual (line 231)
obj.BodyInternal.addVisual(Inputs{:});
addVisual(body1, 'box', [1 1 1]);
%addVisual(body1, 'box', [1 1 1], 'FaceColor', colors{i});
addBody(cube,body1,cube.BaseName);

回答(1 个)

Karsh Tharyani
Karsh Tharyani 2024-5-3
编辑:Karsh Tharyani 2024-5-3
The addVisual function on a rigidBody doesn't support the additional name-value arguments that you are trying to pass i.e., "FaceColor". I have conveyed this enhancement request to the development team at MathWorks for a future release of MATLAB.
As a workaround, you can try to use findobj and set to modify the patch colors.
Here are some code snippets to illustrate:
rbt=loadrobot('kinovagen3');
ax=show(rbt);
% All the visual mesh patches on the rigid body tree visualization
patches=findobj(ax.Children,'-regexp','DisplayName','_mesh');
patches =
8x1 Patch array: Patch (DO_NOT_EDIT_CTQxT) Patch (DO_NOT_EDIT_CTQxT) Patch (DO_NOT_EDIT_CTQxT) Patch (DO_NOT_EDIT_CTQxT) Patch (DO_NOT_EDIT_CTQxT) Patch (DO_NOT_EDIT_CTQxT) Patch (DO_NOT_EDIT_CTQxT) Patch (DO_NOT_EDIT_CTQxT)
% Set the ForeArm_Link's visual mesh color to "magenta".
forearmlinkmeshes=findobj(patches,'-regexp','DisplayName','ForeArm_Link_mesh');
set(forearmlinkmeshes,'FaceColor','magenta');
% Set all the visual mesh patches of the robot to the color 'blue'
set(patches,'FaceColor','blue');
Hope this helps,
Karsh

类别

Help CenterFile Exchange 中查找有关 Simscape Multibody 的更多信息

产品


版本

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by