raisimTech / raisimLib

Visit www.raisim.com
http://www.raisim.com
Other
338 stars 91 forks source link

simulink crashed using s function #502

Open MrCCaesar opened 1 year ago

MrCCaesar commented 1 year ago

when i am trying to using raisimMatlab in matlab simulink s-function to simulate robot dynamics, it crashed.My s-function is

function [sys,x0,str,ts,simStateCompliance] = wlr4p_sim(t,x,u,flag, param)

switch flag,

  %%%%%%%%%%%%%%%%%%
  % Initialization %
  %%%%%%%%%%%%%%%%%%
  case 0,
    [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(param);

  %%%%%%%%%%%%%%%
  % Derivatives %
  %%%%%%%%%%%%%%%
  case 1,
    sys=mdlDerivatives(t,x,u);

  %%%%%%%%%%
  % Update %
  %%%%%%%%%%
  case 2,
    sys=mdlUpdate(t,x,u,param);

  %%%%%%%%%%%
  % Outputs %
  %%%%%%%%%%%
  case 3,
    sys=mdlOutputs(t,x,u);

  %%%%%%%%%%%%%%%%%%%%%%%
  % GetTimeOfNextVarHit %
  %%%%%%%%%%%%%%%%%%%%%%%
  case 4,
    sys=mdlGetTimeOfNextVarHit(t,x,u);

  %%%%%%%%%%%%%
  % Terminate %
  %%%%%%%%%%%%%
  case 9,
    sys=mdlTerminate(t,x,u);

  %%%%%%%%%%%%%%%%%%%%
  % Unexpected flags %
  %%%%%%%%%%%%%%%%%%%%
  otherwise
    DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));

end

% end sfuntmpl

%
%=============================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=============================================================================
%
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(param)

%
% call simsizes for a sizes structure, fill it in and convert it to a
% sizes array.
%
% Note that in this example, the values are hard coded.  This is not a
% recommended practice as the characteristics of the block are typically
% defined by the S-function parameters.
%
sizes = simsizes;

sizes.NumContStates  = 0;
sizes.NumDiscStates  = 27;
sizes.NumOutputs     = 4;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;   % at least one sample time is needed

sys = simsizes(sizes);

%initialize raisim
addpath('/home/mr/raisim_ws/raisim/raisimLib/raisim/linux/lib');
raisim('license',   '/home/mr/.raisim/activation.raisim');
raisim('init', '/home/mr/raisim_ws/world.xml', 8080);
raisim('addArticulatedSystem', 'wlr4p', strcat(pwd, '/../rsc/wlr4p/urdf/wlr4p.urdf'));

%
% initialize the initial conditions
%
q0 = [0.0, 0.0, 0.72, 1.0, 0.0, 0.0, 0.0, 0.0, 0.87, -1.54, 0.0, 0.87, -1.54, 0.0]';
v0 = zeros(13, 1);
x0  = [q0;v0];
raisim('setGeneralizedCoordinate','wlr4p',q0);
raisim('setGeneralizedVelocity','wlr4p',v0);

%set pd gains for raisim
raisim('setPGains','wlr4p',param.pGains);
raisim('setDGains','wlr4p',param.dGains);

%
% str is always an empty matrix
%
str = [];

%
% initialize the array of sample times
%
ts  = [param.dt 0];

% Specify the block simStateCompliance. The allowed values are:
%    'UnknownSimState', < The default setting; warn and assume DefaultSimState
%    'DefaultSimState', < Same sim state as a built-in block
%    'HasNoSimState',   < No sim state
%    'DisallowSimState' < Error out when saving or restoring the model sim state
simStateCompliance = 'UnknownSimState';

% end mdlInitializeSizes

%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys=mdlDerivatives(t,x,u)

sys = [];

% end mdlDerivatives

%
%=============================================================================
% mdlUpdate
% Handle discrete state updates, sample time hits, and major time step
% requirements.
%=============================================================================
%
function sys=mdlUpdate(t,x,u,param)

%lw velocity target
param.dTarget(10) = u(1);
%rw velocity target
param.dTarget(13) = u(2);
%set pd target
raisim('setPTarget','wlr4p',param.pTarget);
raisim('setDTarget','wlr4p',param.dTarget);

raisim('integrate1'); 
raisim('integrate2');

q1 = raisim('getGeneralizedCoordinate', 'wlr4p');
v1 = raisim('getGeneralizedVelocity', 'wlr4p');
sys = [q1;v1];

% end mdlUpdate

%
%=============================================================================
% mdlOutputs
% Return the block outputs.
%=============================================================================
%
function sys=mdlOutputs(t,x,u)

%output is Wz,Vx,pitch in body frame
R = raisim('getFrameOrientation','wlr4p','pelvic');
w = raisim('getFrameAngularVelocity','wlr4p','pelvic');
v = raisim('getFrameVelocity','wlr4p','pelvic');
w_B = R'*w;
v_B = R'*v;
pitch = getEulerYPR(R)
sys = [w_B(2);w_B(3);v_B(1);pitch];

% end mdlOutputs

%
%=============================================================================
% mdlGetTimeOfNextVarHit
% Return the time of the next hit for this block.  Note that the result is
% absolute time.  Note that this function is only used when you specify a
% variable discrete-time sample time [-2 0] in the sample time array in
% mdlInitializeSizes.
%=============================================================================
%
function sys=mdlGetTimeOfNextVarHit(t,x,u)

sampleTime = 1;    %  Example, set the next hit to be one second later.
sys = t + sampleTime;

% end mdlGetTimeOfNextVarHit

%
%=============================================================================
% mdlTerminate
% Perform any end of simulation tasks.
%=============================================================================
%
function sys=mdlTerminate(t,x,u)
raisim('quit');
sys = [];

% end mdlTerminate

And this is crash logs

MATLAB Log File: /home/mr/matlab_crash_dump.42361-1

------------------------------------------------
MATLAB Log File
------------------------------------------------ 

--------------------------------------------------------------------------------
          Segmentation violation detected at 2023-07-25 11:56:52 +0800
--------------------------------------------------------------------------------

Configuration:
  Crash Decoding           : Disabled - No sandbox or build area path
  Crash Mode               : continue (default)
  Default Encoding         : UTF-8
  Deployed                 : false
  Desktop Environment      : ubuntu:GNOME
  GNU C Library            : 2.35 stable
  Graphics Driver          : NVIDIA Corporation NVIDIA GeForce RTX 3070/PCIe/SSE2 Version 4.6.0 NVIDIA 530.41.03
  Graphics Text Issue Info : xmin=-10.500000, ymin=-5.250000, xmax=0.000000, ymax=5.250000
  Graphics card 1          : 0x10de ( 0x10de ) 0x2484 Version 530.41.3.0 (0-0-0)
  Java Version             : Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
  MATLAB Architecture      : glnxa64
  MATLAB Entitlement ID    : 6257193
  MATLAB Root              : /home/mr/MATLAB/R2021b
  MATLAB Version           : 9.11.0.1769968 (R2021b)
  OpenGL                   : hardware
  Operating System         : Ubuntu 22.04.2 LTS
  Process ID               : 42361
  Processor ID             : x86 Family 6 Model 165 Stepping 5, GenuineIntel
  Session Key              : 7d691ea9-6b05-4340-827c-200b0c73c7c3
  Static TLS mitigation    : Enabled: Full
  Window System            : The X.Org Foundation (12101004), display :0

Fault Count: 1

Abnormal termination:
Segmentation violation

Current Thread: 'MCR 0 interpret' id 139895286789696

Register State (from fault):
  RAX = ffffffffffffff28  RBX = 00007f38fde98b10
  RCX = 00007f38fde9c890  RDX = 00007f3be8df9ff0
  RSP = 00007f3be8df9a58  RBP = 00007f3be8dfa380
  RSI = 00007f38fde9af40  RDI = 00047900ed793720

   R8 = 00007f38fdf10620   R9 = 0000000000000000
  R10 = 0000000000000000  R11 = 00007f3bdfb33fd0
  R12 = 00007f3be8dfac60  R13 = 00007f3be8dfa660
  R14 = 0000000000000003  R15 = 00007f3be8dfac48

  RIP = 00007f390d619e7e  EFL = 0000000000010286

   CS = 0033   FS = 0000   GS = 0000

Stack Trace (from fault):
[  0] 0x00007f390d619e7e /home/mr/raisim_ws/raisim/raisimLib/raisim/linux/lib/libraisim.so.1.1.7+00327294 _ZNK6raisim17ArticulatedSystem19getFrameOrientationEmRNS_3MatILm3ELm3EEE+00000030
[  1] 0x00007f390d8c669b /home/mr/raisim_ws/raisim/raisimLib/raisim/linux/lib/raisim.mexa64+00611995 mexFunction+00024779
[  2] 0x00007f3cb42b5d1f       /home/mr/MATLAB/R2021b/bin/glnxa64/libmex.so+00859423
[  3] 0x00007f3cb42b5e25       /home/mr/MATLAB/R2021b/bin/glnxa64/libmex.so+00859685
[  4] 0x00007f3cb42b61f7       /home/mr/MATLAB/R2021b/bin/glnxa64/libmex.so+00860663
[  5] 0x00007f3cb42b6cb4       /home/mr/MATLAB/R2021b/bin/glnxa64/libmex.so+00863412
[  6] 0x00007f3cb42a37bc       /home/mr/MATLAB/R2021b/bin/glnxa64/libmex.so+00784316
[  7] 0x00007f3cbc21ddf0 /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_dispatcher.so+01236464 _ZN8Mfh_file20dispatch_file_commonEMS_FviPP11mxArray_tagiS2_EiS2_iS2_+00000208
[  8] 0x00007f3cbc21f3f3 /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_dispatcher.so+01242099
[  9] 0x00007f3cbc21f8c1 /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_dispatcher.so+01243329 _ZN8Mfh_file8dispatchEiPSt10unique_ptrI11mxArray_tagN6matrix6detail17mxDestroy_deleterEEiPPS1_+00000033
[ 10] 0x00007f3c01206f54   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+12611412
[ 11] 0x00007f3c012095f2   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+12621298
[ 12] 0x00007f3c0136326d   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+14037613
[ 13] 0x00007f3c01354e6b   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+13979243
[ 14] 0x00007f3c012e3e6d   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+13516397
[ 15] 0x00007f3c012e3ef0   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+13516528
[ 16] 0x00007f3c00dabd40   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+08043840
[ 17] 0x00007f3c00dadd64   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+08052068
[ 18] 0x00007f3c00daadf1   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+08039921
[ 19] 0x00007f3c00da0ca5   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+07998629
[ 20] 0x00007f3c00da1191   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+07999889
[ 21] 0x00007f3c00daa63a   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+08037946
[ 22] 0x00007f3c00daa736   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+08038198
[ 23] 0x00007f3c00ed8d7b   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+09276795
[ 24] 0x00007f3c00edbca0   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+09288864
[ 25] 0x00007f3c0110b836   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+11581494
[ 26] 0x00007f3c011f5d22   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+12541218
[ 27] 0x00007f3c011f62e5   /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_lxe.so+12542693
[ 28] 0x00007f3cbc21ddf0 /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_dispatcher.so+01236464 _ZN8Mfh_file20dispatch_file_commonEMS_FviPP11mxArray_tagiS2_EiS2_iS2_+00000208
[ 29] 0x00007f3cbc220112 /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_dispatcher.so+01245458 _ZN8Mfh_file8dispatchEiPP11mxArray_tagiS2_+00000306
[ 30] 0x00007f3cbc1d1d43 /home/mr/MATLAB/R2021b/bin/glnxa64/libmwm_dispatcher.so+00924995 mdDoMatlabFcnCall+00000083
[ 31] 0x00007f39bd8831fb /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/simulink_sid/../../../../bin/glnxa64/libmwsl_services.so+02634235 _ZN25CMatlabCommandNoWatermark7executeEbN6matrix9ErrorModeE+00000043
[ 32] 0x00007f39c6bb45fd /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_utility/../../../../bin/glnxa64/libmwsl_utility.so+00517629 _Z17slDoMatlabFcnCalliPP11mxArray_tagiPPKS_P13Mfh_MATLAB_fnbN6matrix9ErrorModeE+00000061
[ 33] 0x00007f3973d81338 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+24646456
[ 34] 0x00007f3973d6a6e9 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+24553193
[ 35] 0x00007f397109df55 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsl_engine_classes.so+02744149
[ 36] 0x00007f397366f171 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+17232241
[ 37] 0x00007f3973663736 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+17184566
[ 38] 0x00007f3973e2c34d /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+25346893
[ 39] 0x00007f3973de6a3a /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+25061946
[ 40] 0x00007f398a9b12e9 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_graphical_classes/../../../../bin/glnxa64/libmwslexec_runtime.so+00836329
[ 41] 0x00007f398a98f072 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_graphical_classes/../../../../bin/glnxa64/libmwslexec_runtime.so+00696434 _ZN6slexec7runtime6engine15ExecutionEngine4stepEv+00000018
[ 42] 0x00007f3973ddd4b4 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+25023668
[ 43] 0x00007f3973de6c2a /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+25062442
[ 44] 0x00007f3973dc22b0 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+24912560
[ 45] 0x00007f3973dbab4b /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+24881995
[ 46] 0x00007f3973dbadf1 /home/mr/MATLAB/R2021b/bin/glnxa64/builtins/sl_main/../../../../bin/glnxa64/libmwsimulink.so+24882673
[ 47] 0x00007f3ccc4b1be0     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmvm.so+02825184 _ZNK7mwboost9function0IvEclEv+00000032
[ 48] 0x00007f3ccc4b9740     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmvm.so+02856768 _ZN14cmddistributor15PackagedTaskIIP10invokeFuncIN7mwboost8functionIFvvEEEEENS2_10shared_ptrINS2_13unique_futureIDTclfp_EEEEEERKT_+00000048
[ 49] 0x00007f3ccc4b97e8     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmvm.so+02856936 _ZNSt17_Function_handlerIFN7mwboost3anyEvEZN14cmddistributor15PackagedTaskIIP10createFuncINS0_8functionIFvvEEEEESt8functionIS2_ET_EUlvE_E9_M_invokeERKSt9_Any_data+00000024
[ 50] 0x00007f3cc1faf8bb     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwiqm.so+00960699 _ZN3iqm18PackagedTaskPlugin7executeEP15inWorkSpace_tag+00000091
[ 51] 0x00007f3cbc368695     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmcr.so+00931477
[ 52] 0x00007f3cc1f8f3af     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwiqm.so+00828335
[ 53] 0x00007f3cc1f5f26b     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwiqm.so+00631403
[ 54] 0x00007f3cc1e91c02  /home/mr/MATLAB/R2021b/bin/glnxa64/libmwbridge.so+00302082
[ 55] 0x00007f3cc1e92543  /home/mr/MATLAB/R2021b/bin/glnxa64/libmwbridge.so+00304451
[ 56] 0x00007f3cc1e987f2  /home/mr/MATLAB/R2021b/bin/glnxa64/libmwbridge.so+00329714 _Z22mnGetCommandLineBufferbRbN7mwboost8optionalIKP15inWorkSpace_tagEEbRKNS0_9function2IN6mlutil14cmddistributor17inExecutionStatusERKNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEES4_EE+00000274
[ 57] 0x00007f3cc1e98a92  /home/mr/MATLAB/R2021b/bin/glnxa64/libmwbridge.so+00330386 _Z8mnParserv+00000482
[ 58] 0x00007f3cbc36a9d7     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmcr.so+00940503
[ 59] 0x00007f3ccc4b1be0     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmvm.so+02825184 _ZNK7mwboost9function0IvEclEv+00000032
[ 60] 0x00007f3ccc4b9740     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmvm.so+02856768 _ZN14cmddistributor15PackagedTaskIIP10invokeFuncIN7mwboost8functionIFvvEEEEENS2_10shared_ptrINS2_13unique_futureIDTclfp_EEEEEERKT_+00000048
[ 61] 0x00007f3ccc4b97e8     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmvm.so+02856936 _ZNSt17_Function_handlerIFN7mwboost3anyEvEZN14cmddistributor15PackagedTaskIIP10createFuncINS0_8functionIFvvEEEEESt8functionIS2_ET_EUlvE_E9_M_invokeERKSt9_Any_data+00000024
[ 62] 0x00007f3cc1faf8bb     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwiqm.so+00960699 _ZN3iqm18PackagedTaskPlugin7executeEP15inWorkSpace_tag+00000091
[ 63] 0x00007f3cbc368695     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmcr.so+00931477
[ 64] 0x00007f3cc1f8f3af     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwiqm.so+00828335
[ 65] 0x00007f3cc1f5d5bc     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwiqm.so+00624060
[ 66] 0x00007f3cc1f5e050     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwiqm.so+00626768
[ 67] 0x00007f3cbc352ace     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmcr.so+00842446
[ 68] 0x00007f3cbc3530ec     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmcr.so+00844012
[ 69] 0x00007f3cbc353362     /home/mr/MATLAB/R2021b/bin/glnxa64/libmwmcr.so+00844642
[ 70] 0x00007f3cca80f8a7 /home/mr/MATLAB/R2021b/bin/glnxa64/libmwboost_thread.so.1.72.0+00063655
[ 71] 0x00007f3ccb494b43                    /lib/x86_64-linux-gnu/libc.so.6+00609091
[ 72] 0x00007f3ccb526a00                    /lib/x86_64-linux-gnu/libc.so.6+01206784

This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.

Is there anything wrong, or any way to use raisim in simulink properly? Thanks