MATLAB2020b/ROS interface - Unrecognized function or variable 'pythonPkgSrc'
2 次查看(过去 30 天)
显示 更早的评论
Hi,
I am running a MATLAB2020b on my Ubuntu 18.04 and I am trying to get started on a matlab/ros interface. I am using the Melodic ROS package.
When I run "rosinit" the first time on a freshly installed matlab I get the expected result:
The value of the ROS_MASTER_URI environment variable, http://localhost:11311, will be used to connect to the ROS master.
Launching ROS Core...
Creating a Python virtual environment...Done.
Adding required Python packages to virtual environment....Done.
...................................................Done in 1.9581 seconds.
Initializing ROS master on http://10.0.2.15:11311.
Initializing global node /matlab_global_node_25466 with NodeURI http://juheon-VB:38603/
However, when I try to run "rosgenmsg", I get the following message:
Identifying message files in folder '/home/juheon/catkin_float/src'..Done.
Adding required Python packages to virtual environment..Done.
Unrecognized function or variable 'pythonPkgSrc'.
Error in ros.internal.createOrGetLocalPython (line 204)
cmd2ToRun = ['bash -c ''PATH=$PATH:' fileparts(pyexec) ' ; ' replace(activatePath,' ','\ ') ' ; '
libpathadd ' ' replace(localPythonPath,' ','\ ') ' -m pip install --no-index --force-reinstall
--find-links=' replace(pythonPkgSrc,' ','\ ') packagesToInstall ' netifaces'''];
Error in rosgenmsg (line 86)
ros.internal.createOrGetLocalPython(); %ensure python is available
Error in rosgenmsg_test (line 2)
rosgenmsg(dir)
And then, if I try to run "rosinit" again:
The value of the ROS_MASTER_URI environment variable, http://localhost:11311, will be used to connect to the ROS master.
Launching ROS Core...
Adding required Python packages to virtual environment..Done.
Unrecognized function or variable 'pythonPkgSrc'.
I've tried multiple reinstalls but the problem persists.
I've narrowed the problem down to matlab or python missing "catkin_pkg", but even after I installed it with "sudo apt" or "pip" the error does not go away.
I am literally at the end of my ropes with this problem and I would approciate any help.
0 个评论
回答(6 个)
Stefan Kubica
2020-10-21
Hello all,
I have also the same problem with Matlab2020b on a Windows 10 System.
Any help would be very appreciated, too ;-)
Thanks a lot!
SK
pyenv
ans =
PythonEnvironment with properties:
Version: "2.7"
Executable: "C:\Python27\python.EXE"
Library: "C:\Windows\system32\python27.dll"
Home: "C:\Python27"
Status: NotLoaded
ExecutionMode: InProcess
>> rosgenmsg(folderpath)
Identifying message files in folder 'C:/Users/XXX/OneDrive/Dokumente/MATLAB/custom_msgs/packages'..Done.
Adding required Python packages to virtual environment..Done.
Unrecognized function or variable 'pythonPkgSrc'.
Error in ros.internal.createOrGetLocalPython (line 193)
cmd2ToRun = ['"' activatePath '" && "' localPythonPath '" -m pip install --no-index --force-reinstall
--find-links="' pythonPkgSrc '"' packagesToInstall];
Error in rosgenmsg (line 86)
ros.internal.createOrGetLocalPython(); %ensure python is available
0 个评论
Miguel Pimentel
2020-10-13
编辑:Miguel Pimentel
2020-10-13
Hello,
I have the same problem. I installed the R2020b version because the 'rosgenmsg' function was finally incorporated into ROS toolbox. However, after running 'rosgenmsg' I started having the same output error and now I can't even start a ROS master from matlab. I checked that I have the correct python version '2.7' , as showed below.
I am also using Ubuntu 18.04 with ROS Melodic and Gazebo 9.
Any help would be very appreciated.
Thank you!
>> rosinit
Launching ROS Core...
Adding required Python packages to virtual environment..Done.
Unrecognized function or variable 'pythonPkgSrc'.
>> pyenv
ans =
PythonEnvironment with properties:
Version: "2.7"
Executable: "/usr/bin/python"
Library: "libpython2.7.so.1.0"
Home: "/usr"
Status: NotLoaded
ExecutionMode: InProcess
0 个评论
Gabriel Laupre
2020-10-22
编辑:Gabriel Laupre
2020-10-22
I have exactly the same error..
help please, I'm stuck here..
> rosgenmsg
Identifying message files in folder '/home/...mavros_msgs/msg'..Done.
Adding required Python packages to virtual environment..Done.
Unrecognized function or variable 'pythonPkgSrc'.
Error in ros.internal.createOrGetLocalPython (line 204)
cmd2ToRun = ['bash -c ''PATH=$PATH:' fileparts(pyexec) ' ; ' replace(activatePath,' ','\ ') ' ; ' libpathadd ' ' replace(localPythonPath,' ','\ ') ' -m pip install --no-index
--force-reinstall --find-links=' replace(pythonPkgSrc,' ','\ ') packagesToInstall ' netifaces'''];
Error in rosgenmsg (line 86)
ros.internal.createOrGetLocalPython(); %ensure python is available
0 个评论
Stefanie Schwarz
2020-11-5
编辑:Stefanie Schwarz
2020-11-5
MathWorks is aware of this bug, please bear with us while we are creating an official bug report and try to ship a fix for this ASAP.
1 个评论
Chude Qian
2020-11-7
To fix the issue:
tested on Ubuntu 16.04, edit the following file as sudoer:
/usr/local/MATLAB/R2020b/toolbox/ros/mlroscpp/util/+ros/+internal/createOrGetLocalPython.m
Note at about line 182, before line
if ~foundCatkin
add
pythonPkgSrc = fullfile(matlabroot,'sys','ros1','share','python');
then restart matlab, it should work.
To developer: The issue is that the variable pythonPkgSrc is only declared in the scope of venv, not everywhere. which leads the issue. It seems that we are trying to use a specific wheel for netifaces not sure why...
Cam Salzberger
2020-11-17
Hello all,
Here is the bug report published for this issue. This issue is fixed in R2020b Update 2, so installing that or later versions should resolve the issue.
-Cam
1 个评论
Anton Deguet
2020-11-23
I have mixed feelings about the fix. On one hand it seems the variable pythonPkgSrc is properly defined but now the script to generate custom messages requires CMake 3.15.5. I expect most users of ROS 1 will stick to LTS Ubuntu including 18.04 and maybe be even 16.04. To note, on 18.04, the default CMake is 3.10.2. If there was a true dependency to 3.15.5, I would understand why I would have to force users to install a new version of CMake but I'm not convinced older versions of CMake wouldn't work fine.
As a quick test, I edited the file toolbox/ros/mlroscpp/+ros/+internal/+CatkinBuilder.m and changed the minimum CMake version required to 3.10.0. I was then able to use the command rosgenmsg without any issue.
Bottom line, if possible, it would be nice to lower the minimum CMake requirements so users don't have to go through extra steps.
Anton Deguet
2020-10-28
Same issue on me end, both rosinit and rosgenmesg fail with Ubuntu 2020b on Ubuntu 18.04 with ROS Melodic installed.
The following configurations work:
- 2020a with Ubuntu 18.04 and ROS Melodic
- 2020b with Ubuntu 20.04 and ROS Noetic
See some notes I saved for rosgenmsg:
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Publishers and Subscribers 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!