Filter löschen
Filter löschen

Cube with different side color in RGB

1 Ansicht (letzte 30 Tage)
jari jafri
jari jafri am 25 Apr. 2024
Bearbeitet: Karsh Tharyani am 3 Mai 2024
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);
  2 Kommentare
DGM
DGM am 26 Apr. 2024
I don't have that toolbox, but I think you might just have to set those properties after calling addVisual(). That's what other examples seem to do.
jari jafri
jari jafri am 26 Apr. 2024
Thanks

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Karsh Tharyani
Karsh Tharyani am 3 Mai 2024
Bearbeitet: Karsh Tharyani am 3 Mai 2024
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

Kategorien

Mehr zu Robotics finden Sie in Help Center und File Exchange

Produkte


Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by