Failed to create a ROS2 publisher
이전 댓글 표시
Hello everyone,
I am trying to follow this example to create custom ROS2 messages: openExample('ros/ROS2CustomMessagesExample')
I ran the code in steps and it is successfully able to create a custom message using the command ros2genmsg.
After this, when I run the part of the code to create a ROS2 publisher, it gives me an error as seen in the image below

I have installed python 3.7 and the cmake version is 3.10.2. Any help is appreciated. Thank you for your time.
Regards,
Abhishek
답변 (1개)
Hari Krishna Kakarla
2021년 1월 18일
0 개 추천
Hi Abhishek,
You will not encounter this issue if use MATLAB R2020b or later. As a workaround, this can be resolved by specifying the LD_LIBRARY_PATH before creating the node:
setenv LD_LIBRARY_PATH <matlabroot>/extern/bin/glnxa64:<matlabroot>/sys/os/glnxa64
It should work fine after doing the above step and should be able to create publisher and subscriber. If you still see the same error, try doing this worksround:
Create a publisher on a default topic :
pub = ros2publisher(node,"/paramete_events")
Then create your publisher:
pub = ros2publisher(node,"/example_topic")
This should work, Hope this helps!
-Hari
댓글 수: 6
Abhishek Bhagwat
2021년 1월 18일
Cam Salzberger
2021년 1월 19일
Hello Abhishek,
Based on Hari's suggestion working for you, it is likely that there is another library on your path that is conflicting with MATLAB's ROS 2 libraries. This is the link to the bug report.
Hari's suggestion was to ensure that the libraries you are using are set to the head of the path (LD_LIBRARY_PATH on Linux), but if you are using custom messages, those libraries will be in a different location. The best solution in R2020a is probably to find the problematic libraries on your path and remove them before running any ROS 2 commands in Linux. Any ROS or ROS 2 "bin" or "lib" directories are the most likely culprit, but there are others.
However, to clarify your issue with R2020b, the custom message support package is no longer supported for R2020b because that functionality has been included with ROS Toolbox. Just like with "ros2genmsg", you do not need to install a support package to use "rosgenmsg" in R2020b+. You will, just like for ROS 2, need Python 2.7, CMake, and a compiler to generate the custom messages. Note that's Python 2.7 for ROS 1, and 3.7 for ROS 2. See the release notes for more information.
-Cam
Abhishek Bhagwat
2021년 2월 8일
Cam Salzberger
2021년 2월 11일
I believe that the issue is not that you don't have the custom message libraries on the path, it's that your path has other libraries on it that are conflicting with libraries that MATLAB's ROS is using. Start up a terminal outside of MATLAB, print your LD_LIBRARY_PATH, and see if there is any directory on it that looks potentially problematic. Then try setting LD_LIBRARY_PATH for that session to be nearly empty (just keep /usr/bin or the usual system binary directories) and start MATLAB from that terminal. Then the only libraries that should be on the path are MATLAB's and some basic system ones.
-Cam
Abhishek Bhagwat
2021년 2월 12일
Cam Salzberger
2021년 2월 12일
You are always welcome to contact Technical Support to get direct assistance. It can certainly help in instances where the issue seems to be specific to your system's setup.
-Cam
카테고리
도움말 센터 및 File Exchange에서 Network Connection and Exploration에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

