exponenta event banner

generateCode

Создание кода C для выполнения кинематического анализа объекта KinematicsSolver

Синтаксис

Описание

generateCode(ks) создает автономную функцию MATLAB ®, эквивалентную solve функция, но поддерживает генерацию кода. Он также создает каталог с именем ModelName_codegen_kinematics, который содержит все исходные файлы для создания кода в текущем каталоге, где ModelName - выходная строка ks.ModelName.

Созданная функция MATLAB называется ModelName_solveKinematics и имеет ту же подпись, что и solve функция:

[outputs,statusFlag,targetFlags,targets] = ModelName_solveKinematics(targets, initialGuesses)

После создания функция полностью независима от исходного объекта и не отражает никаких изменений объекта. Можно создать функции MEX, статические библиотеки (LIB) и библиотеки динамики (DLL) из кода MATLAB, содержащего ModelName_solveKinematics функция с помощью codegen , для которой требуется лицензия MATLAB Coder™.

Примечание

ModelName_solveKinematics не предполагается вызывать из MATLAB, и при вызове его непосредственно из командной строки MATLAB или файла MATLAB возникает ошибка. Однако эту функцию можно вызвать непосредственно из блока MATLAB Function в модели Simulink.

Примеры

свернуть все

  1. Настройка задачи обратной кинематики для модели двойного маятника.

    mdl = 'sm_double_pendulum';
    open_system(mdl);
    ks = simscape.multibody.KinematicsSolver(mdl);
    addFrameVariables(ks, 'LowerLinkPeg', 'translation',...
                     'sm_double_pendulum/World Frame/W',...
                     'sm_double_pendulum/Lower Link/Right Peg/R');
    targetIds = ["LowerLinkPeg.Translation.x";...
                "LowerLinkPeg.Translation.z"];
    addTargetVariables(ks, targetIds);
    initialGuessIds = "j2.Rz.q";
    addInitialGuessVariables(ks, initialGuessIds);
    outputIds = ["j2.Rz.q"; "j1.Rz.q"];
    addOutputVariables(ks, outputIds);
  2. Создайте автономную функцию решения и каталог с исходными файлами.

    generateCode(ks);
  3. Создайте функцию MEX для функции MATLAB.

    codegen -config:mex sm_double_pendulum_solveKinematics
    
  4. Решите проблему обратной кинематики с помощью функции MEX.

    [outputVals, status, targetSuccess, actTargetVals] =...
     sm_double_pendulum_solveKinematics_mex([0.3, 0], 120)
  5. Продукция

    outputVals =
      124.0477
      -57.1217
    
    status =
      1
    
    targetSuccess =
      2×1 logical array
      1
      1
    
    actTargetVals =
      0.3000
      0

Входные аргументы

свернуть все

A KinematicsSolver объект является представлением модели Simscape Multibody, используемой для кинематического анализа.

Пример: ks = simscape.multibody.KinematicsSolver ('sm _ double _ pendulum')

Типы данных: KinematicsSolver object

См. также

|

Представлен в R2019a