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

2 ビュー (過去 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 Center および File ExchangePublishers and Subscribers についてさらに検索

タグ

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by