MATLAB Answers

matlab 2020b rosgenmsg can't find CMake?

294 views (last 30 days)
Anton Deguet
Anton Deguet on 22 Oct 2020
Commented: Stefanie Schwarz ungefär 3 timmar ago
Hello,
I used rosgenmsg for ROS1 with Matlab 2020a on Ubuntu 18.04 and it worked fine. Now I'm trying the same command on Matlab 2020b on Ubuntu 20.04. It seems there's a whole new build system using Python and a C++ compiler in the backend instead of Java. I now get an error about CMake not found:
Validating message files in folder '/home/anton/catkin_ws/src/crtk'..Done.
[0/1] Generating MATLAB interfaces for custom message packages... 0%Error using ros.internal.utilities.getCMakeBinaryPath (line 24)
Could not find CMake in your system. Please install CMake version 3.15.5 or higher and rerun the command.
Error in ros.internal.CatkinBuilder.getCMakePath (line 82)
[aPath, aVersion] =
ros.internal.utilities.getCMakeBinaryPath(ros.internal.CatkinBuilder.CMAKEMINVERSION);
Meawhile, CMake is installed (using apt):
~$ cmake --version
cmake version 3.16.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
~$ which cmake
/usr/bin/cmake
Any advice on how to proceed to fix this issue? Also, I'm interested in ROS 1 messages (Noetic), not ROS 2.

Accepted Answer

Cam Salzberger
Cam Salzberger on 26 Oct 2020
Hello Anton,
R2020b involved a large replacement of the ROS functionality in MATLAB. As you have found, it supports rosgenmsg natively in the toolbox (no support package required), but does have new dependencies on Python and CMake.
In order to ensure that CMake is available in MATLAB, ensure that it is on the system PATH environment variable. Based on your terminal commands, it seems like it should be. Just to make sure, can you run these from within MATLAB:
!which cmake
!cmake --version
It's possible that the PATH in your terminal and the PATH in the MATLAB environment is different for some reason.
For other requirements (Python, compiler), see the ROS Toolbox System Requirements page.
-Cam
  11 Comments
Xin Xing
Xin Xing ungefär 8 timmar ago
Yes, MATLAB can find Cmake. However rosgenmsg also did not work. Is this issue of MATLAB R2021b? There is also problem in my college's computer.
>> !where cmake
C:\Program Files\CMake\bin\cmake.exe
>> !cmake --version
cmake version 3.20.6
CMake suite maintained and supported by Kitware (kitware.com/cmake).
>> rosgenmsg(folderpath)
Identifying message files in folder 'C:/Users/xinxi/Dokumente/MATLAB/robotiq'..Done.
Validating message files in folder 'C:/Users/xinxi/Dokumente/MATLAB/robotiq'..Done.
[0/2] Generating MATLAB interfaces for custom message packages... 0%Error using ros.internal.utilities.getCMakeBinaryPath (line 24)
Could not find CMake in your system. Please install CMake version 3.15.5 or higher and rerun the command.
Error in ros.internal.CatkinBuilder.getCMakePath (line 83)
[aPath, aVersion] = ros.internal.utilities.getCMakeBinaryPath(ros.internal.CatkinBuilder.CMAKEMINVERSION);
Error in ros.internal.ROSProjectBuilder (line 408)
h.CMakePath = h.getCMakePath();
Error in ros.internal.CatkinBuilder (line 25)
h@ros.internal.ROSProjectBuilder(varargin{:});
Error in rosgenmsg (line 287)
builder = ros.internal.CatkinBuilder(genDir, pkgInfos{iPkg});

Sign in to comment.

More Answers (2)

Jakobus Louw
Jakobus Louw on 12 Jun 2021
Edited: Stefanie Schwarz ungefär 3 timmar ago
I had to use a different solution since the above solution did not solve the problem for me. I am using Matlab R2021a and Ubuntu 18.
Running:
!cmake --version
in MATLAB command window produced the follwing error:
cmake: /usr/local/MATLAB/R2021a/bin/glnxa64/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by cmake)
This is what worked for me:
It seems that the installed cmake version for Ubuntu 18 is v3.10, but Matlab needs version v3.15+ for ROS Toolbox.
Therefore I downloaded version 3.20 from https://cmake.org/download/ and installed it using this answer (NB: without removing the previous cmake).
Remember to add the export lines to your .bashrc
I could then succesfully run:
folderpath = fullfile('~/catkin_ws/src/mavros')
rosgenmsg(folderpath)
to build mavros_msg
  1 Comment
Vincenzo Petrone
Vincenzo Petrone on 22 Jul 2021
I'm sorry, this didn't work for me. I followed the same procedure you mentioned, but when I run
!which cmake
I still get
/usr/bin/cmake
Then, if I run
!cmake --version
I obtain the same output as before:
cmake: /usr/local/MATLAB/R2021a/bin/glnxa64/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by cmake)
Instead, when I run the same commands on the Linux terminal, I get the right path:
/home/<user>/cmake-install/bin/cmake
and the right version I installed:
cmake version 3.21.0
I also added the "export" lines in ".bashrc".
Anyone got the same error and solved?

Sign in to comment.


Neel Bhatt
Neel Bhatt on 24 Jul 2021
Edited: Neel Bhatt on 24 Jul 2021
Jakobus Louw's answer worked for me.
Note:
  • There should be a correction to the cmake version: all the 1.xx versions listed in the answer mean 3.xx - i.e. Matlab 2021a needs cmake version 3.15+ (not 1.15+), but overall the steps outlined in this answer are correct.
To summarize: you can follow the following steps:
  1. Download cmake 3.20.5 from https://cmake.org/download/
  2. Open a terminal and run the following
  3. cd ~/Downloads/cmake-3.20.5/ # or wherever you downloaded cmake
  4. ./bootstrap --prefix=$HOME/cmake-install
  5. make
  6. make install
  7. export PATH=$HOME/cmake-install/bin:$PATH
  8. export CMAKE_PREFIX_PATH=$HOME/cmake-install:$CMAKE_PREFIX_PATH
  9. matlab
  10. !cmake --version # Check cmake version: it should be 3.20.5
You can now generate custom messages. You may need to generate custom messages using:
folderpath = 'PATH_TO_YOUR_MESSAGE_PACKAGE'
rosgenmsg(folderpath)
% Follow the next steps that appear in the command window
% For instance, if you are using ROS1:
% Note you may not have permissions to run the following two commands
% which will lead to a warning. In this case, close MATLAB and in the
% same terminal (where you ran exports), run MATLAB with sudo access: sudo matlab
addpath('PATH_TO_YOUR_MESSAGE_PACKAGE/matlab_msg_gen_ros1/glnxa64/install/m')
savepath
clear classes
rehash toolboxcache
rosmsg list % Confirm you have your custom message show up
  1 Comment
Stefanie Schwarz
Stefanie Schwarz ungefär 3 timmar ago
Thank you, I fixed this in Jacobus' answer to avoid confusion.

Sign in to comment.

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!