ROS2 tutorial 중 겪은 문제 및 해결
패키지 빌드 전 rosdep 실행 시 문제
실습 링크(creating a workspace)
문제 발생
~devel_ws$ rosdep install -i --from-path src --rosdistro foxy -y
새로 만든 패키지를 빌드하기 위해 위의 rosdep 명령을 실행하던 중 문제가 발생했다.
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
turtlesim: Unsupported OS [mint]
문제 해결
--os=ubuntu:mint
옵션을 추가하여 실행하였더니 원하는 결과가 나왔다.
~/dev_ws$ rosdep install -i --from-path src --rosdistro foxy -y --os=ubuntu:mint
#All required rosdeps installed successfully
- 참고
시뮬레이션 해 생성한 map 저장 시 문제
실습 링크(1.2.1.4 virtual SLAM with Turtlebot3)
문제 발생
e-manual에서의 방법 그대로 실행했더니 오류가 발생했다.
~$ ros2 run nav2_map_server map_saver -f ~/map
No executable found
문제 해결
map_saver
대신 map_saver_cli
로 실행하였더니 해결되었다.
~$ ros2 run nav2_map_server map_saver_cli -f ~/map
저장한 map을 turtlebot3_navigation navigation.launch.py로 불러올 때 문제
실습 링크(1.2.1.5 Virtual Navigation with Turtlebot3)
문제 발생
e-manual대로 실습 중 ‘2. Execute Navigation’단계의 명령을 실행하다가 오류가 발생했다.
~$ ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=$HOME/map.yaml
...
File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_description_sources/python_launch_file_utilities.py", line 37, in load_python_launch_file_as_module
loader.exec_module(mod)
File "<frozen importlib._bootstrap_external>", line 779, in exec_module
File "<frozen importlib._bootstrap_external>", line 915, in get_code
File "<frozen importlib._bootstrap_external>", line 972, in get_data
FileNotFoundError: [Errno 2] No such file or directory: '/opt/ros/foxy/share/nav2_bringup/launch/nav2_bringup_launch.py'
문제 해결
e-manual의 개발환경은 ROS2의 distro가 dashing이라서 오류가 발생한 것 같다. 그래서 home 디렉토리에서 다른 워크스페이스(turtlebot3_foxy_ws)를 만들어 github에 올라와있는 foxy버전의 파일들을 받아서 사용하였다.
먼저 새로운 워크스페이스를 만든다.
~$ mkdir turtlebot3_foxy_ws/src
~$ cd turtlebot3_foxy_ws
그리고 turtlebot3 패키지를 설치할때 사용했던 turtlebot3.repos
파일을 수정한다.(문제가 생겼던 turtlebot3_navigation2패키지만 foxy버전으로 설치하기 위해 아래처럼 수정했다.)
turtlebot3.repos (turtlebot3 e-manual대로 실행했다면 turtlebot3_ws
폴더에 들어있다.)
repositories:
turtlebot3/turtlebot3:
type: git
url: https://github.com/ROBOTIS-GIT/turtlebot3.git
version: foxy-devel
turtlebot3/turtlebot3_msgs:
type: git
url: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
version: ros2
turtlebot3/turtlebot3_simulations:
type: git
url: https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
version: ros2
utils/DynamixelSDK:
type: git
url: https://github.com/ROBOTIS-GIT/DynamixelSDK.git
version: ros2
utils/hls_lfcd_lds_driver:
type: git
url: https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
version: ros2
이제 이 파일을 새로 만든 워크스페이스(turtlebot3_foxy_ws)폴더에 넣어준다. 아래 명령어로 필요한 파일들을 설치하고 설치한 패키지들을 빌드한다.
~/turtlebot3_foxy_ws$ vcs import src < turtlebot3.repos
~/turtlebot3_foxy_ws$ colcon build --symlink-install
이제 새로운 터미널창을 열어서 빌드한 패키지들을 사용할 수 있도록 아래 명령어를 실행한다.
~/turtlebot3_foxy_ws$. install/setup.bash
Option
~/.bashrc파일에source ~/turtlebot3_foxy_ws/install/setup.bash
를 추가하면 터미널창을 열 때 마다 위의 명령어를 실행시키지 않아도 된다.
다만 그 전에 e-manual에서 추가한source ~/turtlebot3_ws/install/setup.bash
를 지워야 할 것이다.
이제 cartographer로 지도를 생성하고 아래 명령어를 실행하면 문제없이 navigation기능까지 작동된다.
~$ ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=$HOME/map.yaml