여러분들 저와같은 초보자 분들 혹은 특별한 가이드 없이 ROS를 공부하시는 분들은 백프로 이런 일 일어날 거라고 생각하고, 제가 열심히 붙잡고 직접 해결한 솔루션을 이 글에서 보여드리겠습니다.
해결책을 찾으면서 srv , CMakeList.txt , package.xml , build log 에 대해서 공부하게 됐습니다.
에러 메세지:
Traceback (most recent call last): File "/home/wntdev/catkin_ws/src/my_package/src/add_two_ints_client.py", line 4, in <module> from my_package.srv import AddTwoInts ImportError: cannot import name 'AddTwoInts' from 'my_package.srv' (unknown location)
Traceback (most recent call last): File "/home/wntdev/catkin_ws/src/my_package/src/add_two_ints_server.py", line 4, in <module> from my_package.srv import AddTwoInts ModuleNotFoundError: No module named 'my_package'
위 에러 메세지 중 하나라도 나오셨다면 이 글이 매우 유익하실 수 있어요.
제가 해결하려고 노력한 과정들을 쭉 보고 오시는 것도 전체적인 이해를 돕는데 도움이 되실 겁니다.
[dev/Ros] - [ROS] ModuleNotFoundError: No module named 'my_package' 또는 'srv folder name' 해결 과정
[dev/Ros] - [ROS] 패키지 생성 시 만들어지는 CMakeList.txt 파일 의미
[dev/Ros] - [ROS] ModuleNotFoundError: No module named 'my_package' 해결 과정 (2)
해결책 :
먼저, 아래 명령어를 입력하여 편집기로 들어가줍니다.
$ vim ~/.bashrc
그런 다음 다른 코드에 영향을 주지 않는 공간에서 아래 텍스트를 복붙해주세요.
export PYTHONPATH=/home/{user_name}/catkin_ws/devel/lib/{python_version}/dist-packages/{package_name}/:$PYTHONPATH
# Example: export PYTHONPATH=/home/wntdev/catkin_ws/devel/lib/python3/dist-packages/my_package/:$PYTHONPATH
bashrc 를 저장한 후에 아래 명령어를 입력하세요.
$ source ~/.bashrc
이후 다시 rosrun 해보시길 바랍니다. 아마 잘 동작하실 겁니다~!
이유 :
먼저, srv를 사용하려면 CMakeList.txt 및 package.xml 을 수정해주어야 합니다. 파일 안에 직접 설명도 되어 있으니 그 설명대로 쭉 따라서 수정해줍니다. 혹시나 참고하실거면 제 Github 주소 남겨놓겠습니다. https://github.com/wntdev99/RosTutorial
이후 catkin_make 명령어를 통해 빌드를 할 때 srv 파일을 사용해서 python 코드를 생성중이라는 메세지를 볼 수 있습니다. 말 그대로 srv 파일을 사용해서 srv 에 걸맞는 python 코드를 자동으로 생성하는 겁니다.
그런데 이 생성된 코드는 어디로 가냐구요 ?? 바로 위에 저 경로로 간답니다.
저는 현재 작업 디렉토리에 있는 코드를 참고하라고 수도없이 반복하고 있었던 겁니다.
export PYTHONPATH=/home/wntdev/catkin_ws/src/my_package/:$PYTHONPATH
이런 식으로 말이에요.
당연히 생성되는 것은 이 경로가 아니기 때문에 모듈이 없다는 얘기가 나오는 겁니다. 생성된 코드가 없기 때문이죠....하하
이상 ROS 시작한 지 하루된 사람이었습니다...하하
'dev > Ros' 카테고리의 다른 글
[ROS] Robot_state_publisher 패키지 란? (2) | 2024.03.16 |
---|---|
[ROS] How to delete ROS in ubuntu 20.04 (0) | 2024.03.05 |
[ROS] ImportError: cannot import name 'AddTwoInts' from 'my_package.srv' 해결 과정 (2) (0) | 2024.03.03 |
[ROS] 패키지 생성 시 만들어지는 CMakeList.txt 파일 의미 (0) | 2024.03.03 |
[ROS] ModuleNotFoundError: No module named 'my_package' 또는 'srv folder name' 해결 과정 (0) | 2024.03.03 |