generateCode

Сгенерируйте код С, чтобы запустить кинематический анализ на объекте 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 _ mendulum')

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

См. также

|

Введенный в R2019a