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

Входные параметры

свернуть все

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

Пример: ks = simscape.multibody.KinematicsSolver ('sm_double_pendulum')

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

Смотрите также

|

Введенный в R2019a