필터 지우기
필터 지우기

"Error while processing" while using codegen in Matlab 2023a

조회 수: 3 (최근 30일)
John Barrus
John Barrus 2023년 6월 13일
답변: Josh Chen 2023년 11월 10일
I have a .m file that calls codegen. If I run this script in the matlab command window, it runs without errors.
However, if I run this script in a terminal window using matlab -batch, while the codegen is running, I receive "Error while processing <current directory>", where <current directory> is the directory I run the matlab -batch command from. However the code generation report does not report any errors and I'm able to use the resulting mex function successfully. I find that this happens if the '-report' flag is included in the codegen call. If not, no error is shown.
This happens with Matlab 2023a, but it didn't happen with 2021a. I think this may be a bug with 2023a
  댓글 수: 3
Jere Knuutinen
Jere Knuutinen 2023년 11월 7일
편집: Jere Knuutinen 2023년 11월 7일
Hi @Mukund Sankaran, I have same error message with my code when trying to generate ROS node. Here is my script that is used to generate the code:
cfg = coder.config("exe");
cfg.Hardware = coder.hardware("Robot Operating System (ROS)");
cfg.Hardware.DeployTo = "Localhost";
cfg.Hardware.BuildAction = "Build and run";
cfg.HardwareImplementation.ProdHWDeviceType = "Intel->x86-64 (Linux 64)";
cfg.HardwareImplementation.ProdLongLongMode = true; % Use 'long long' for Int64 or Uint64 data types
codegen mynode -config cfg
Here is my code that I want to get as a ros node
function mynode
%mynode Receive and display sensor_msgs/JointState messages
%#codegen
% Trajectory points to publish
sub = rossubscriber("/servo","sensor_msgs/JointState","DataFormat","struct");
res = double(1);
if coder.target("MATLAB")
else
coder.cinclude("/home/mpc/Desktop/mba/mba/mba.hpp");
coder.cinclude("myInterpolator.h");
coder.cinclude("intpol_codegen.h");
coder.updateBuildInfo("addSourceFiles", "myInterpolator.cpp");
coder.updateBuildInfo("addSourceFiles", "intpol_codegen.cpp");
res = coder.ceval("int_at", 354489, 6704413);
end
% Display position
state = 10;
while (1)
msg = receive(sub);
%out = d_model(mypersonptr, state)
if ~isempty(msg.Position > 0)
fprintf("Position = %f\n",msg.Position(1))
else
fprintf("Received empty message..\n");
end
end
end
Mukund Sankaran
Mukund Sankaran 2023년 11월 7일
Hi @Jere Knuutinen. The original post mentioned that the error seemed to be tied to the '-report' codegen option when running MATLAB with the '-batch' option, but I see that your reproduction doesn't include any mention of these things. When you say "I have same error message with my code", are you saying you see the error message independent of these options ?
Also, your function 'mynode' calls custom C++ code that you have not shared, so we can't attempt to reproduce the issue on our end. Please share full reproduction steps, as well as information on what release you are using and the exact error message or stack trace you see, so we can attempt to help you further. If you are uncomfortable sharing the full reproduction steps here, please reach out to MathWorks Technical Support so we can assist you better.

댓글을 달려면 로그인하십시오.

답변 (1개)

Josh Chen
Josh Chen 2023년 11월 10일
Hi John,
Thanks for reporting this issue. It would be nice if you could share a script and reproduction step so we can reproduce this on our end and see what is the culprit.
@Jere Knuutinen when you said you have same error message, could you elaborate more about what is the error message and when did you see that message? ROS Toolbox does not support mex code generation, and I also saw you set 'exe' in the coder configuration.
As Mukund suggest, please feel free to reach out to MathWorks Technical Support so we can assist you better.
Thanks,
Josh

카테고리

Help CenterFile Exchange에서 Publishers and Subscribers에 대해 자세히 알아보기

태그

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by