ROS2 tutorial 중 겪은 문제 및 해결

1 minute read

패키지 빌드 전 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

Tags: ,

Updated: