카테고리 없음

윈도우즈10에서 turtlebot3_navigation2 실행하기(Foxy)

Wood Pecker 2023. 11. 28. 21:54

1. 개요

    윈도우즈10 ROS2에서 SLAM 실행으로  작성한 map을 이용하여 네비게이션을 한다. 

    turtlebot3_navigation2를 실행을 하면서 전체적인 흐름을 이해하여 본다.   

    [참고]  https://ms-iot.github.io/ROSOnWindows/ros2/nav2.html

                 https://www.youtube.com/watch?v=idQb2pB-h2Q

2.  workspace 준비하기(ROS2 기본설치는 다른 포스트 참조)
 (0)  작업폴더를 만든다.

          x64 Native Tools Command Prompt for VS2019를  관리자 권한으로 실행한다. 

        > mkdir C:\ros2_ws\src    <= workspace 폴더를 만든다 .

              <== ( C 드라브에 만들지 않으면 Gazebo실행시에 에러가 난다(?). 검증안됨)

        > c:\opt\ros\foxy\x64\setup.bat         <=  ROS2환경을 실행한다. 

        > pushd C:\ROS2_ws

 (1)  기본 사용하는 DDS를 cyclone DDS로 변경한다. 기존 사용하는  DDS는 버그가 있는 것 같다(?).

         foxy는 fastrtps DDS를 기본설정으로 사용한다.  (기타 connext dds(상용), gurum dds(국내업체), opensplice dds가 있다)

         cyclone DDS  윈도우즈에서는 바이너리 설치가 어려워서 소스를 컴파일해서 설치한다. 우분투인 경우 바이너리로 쉽게 설치가 가능하다.   cyclone DDS를 아래와 같이 받아온다.   [참고] https://github.com/eclipse-cyclonedds/cyclonedds

        > cd  C:\ros2_ws\src 

        > git clone https://github.com/eclipse-cyclonedds/cyclonedds.git

        >cd C:\ros2_ws\src\cyclonedds

       > mkdir build           <= 하위  폴더를 만든다.

      > cd build               <= 이곳에서 작업한다.

      >  cmake -G "Visual Studio 16 2019" -DENABLE_SSL=NO -DCMAKE_INSTALL_PREFIX=C:\ros2_ws\src\cyclonedds\install ..

 

      ### > cmake -G "Visual Studio 16 2019" -A x64  -DENABLE_SECURITY=NO -DCMAKE_INSTALL_PREFIX=C:\ros2_ws\src\cyclonedds\install ..

 

     > cmake --build .  <enterKey입력>    <== ' .' 까지 타이핑하고 엔터키를 누른다.

         시간이 소요된다. 

        > cmake --build . --target install       

        

 

 (2)   새로운 터미널을 연다.  ROS 2 environment를 활성화 한다.
        x64 Native Tools Command Prompt for VS2019를  관리자 권한으로 실행한다. 

      ROS_DOMAIN_ID는 0 ~ 232까지 정수를 사용할 수 있다. 

     통신혼선이 없도록 같은 ROS_DOMAIN_ID를 갖도록 설정하자. 

       > setx -m ROS_DOMAIN_ID 0

       > setx -m RMW_IMPLEMENTATION   rmw_cyclonedds_cpp

       ##> setx -m AMENT_PREFIX_PATH  C:\ros2_ws\src\cyclonedds\install

      >  setx -m SDF_PATH  C:\opt\ros\foxy\x64\share\sdformat\1.6

      > c:\opt\ros\foxy\x64\setup.bat; c:\opt\ros\foxy\x64\share\gazebo\setup.bat

      > pushd C:\ROS2_ws   

      > printenv                  <== 환경설정 살펴본다.

         아래와 같이 입력할 때   waffle 단어 다음에 바로 엔터키를 입력하여 공백키가 들어가지 않도록 한다.

         실행시에 경로패스에 영향을 준다.

     >  setx -m TURTLEBOT3_MODEL=waffle<enterKey 입력>   

 > curl -o nav2.repos https://raw.githubusercontent.com/ms-iot/ROSOnWindows/master/docs/ros2/navigation2_foxy.repos
 > vcs import src < nav2.repos       <== 필요한 패키지를 다운로드 한다. 

 

3.   build하고  패키지를  활성화한다. 

     > pushd C:\ROS2_ws

     > colcon build        <== build, install, log 폴더가 생성된다.

     > call install\setup.bat              <== 생성한 패키지를 ROS2환경에 적용한다.

 

  navigation을 위한  2개의 map 파일을 다운로드 받는다!!       map.pgm(이미지파일)      map.yaml(xml파일)

> curl -o map.pgm https://raw.githubusercontent.com/ROBOTIS-GIT/turtlebot3/master/turtlebot3_navigation/maps/map.pgm
> curl -o map.yaml https://raw.githubusercontent.com/ROBOTIS-GIT/turtlebot3/master/turtlebot3_navigation/maps/map.yaml

 

(1) Gazebo를 실행하기 전에 아래의 waffle.yaml 파일을 수정한다. 
     C:\ros2_ws\install\turtlebot3_navigation2\share\turtlebot3_navigation2\param\waffle.yaml
      29번 라인에 다음과 같이 수정한다. 복사해서 사용(타이핑 주의!!)
      ==>       robot_model_type: "differential"

 

     모든 작업이 완료되었다. 이제  아래 그림과  같은 world에  turtlebot3를 배치한다. 

 

> ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

  방화벽 보안경고창이 뜨면 액서스허용 버튼을 클릭한다.  처음에만 시간이 소요되고  이후에는 빠르게 로드된다.

     (=> empty 월드 실행시에는  ros2 launch gazebo_ros gazebo.launch.py)

 

 

(2) 지도를 이용하여 navigation을 한다.

 주어진 지도와 센서정보를 이용하여 네비게이션을 한다.  RViz2 화면에서 초기위치와 목적지를 설정하고 장애물을 피하면서 목적지까지 잘 이동하는지 테스트한다.  이를 위해 아래와 같은 명령어를 실행한다.  

새로운 터미널을 연다( x64 Native Tools Command Prompt for VS2019를  관리자 권한).

 > c:\opt\ros\foxy\x64\setup.bat
 > c:\opt\ros\foxy\x64\share\gazebo\setup.bat

 > set "SDF_PATH=c:\opt\ros\foxy\x64\share\sdformat\1.6"
 > set GAZEBO_MODEL_PATH=C:\ROS2_ws\install\turtlebot3_gazebo\share\turtlebot3_gazebo\models;%GAZEBO_MODEL_PATH%
 > set TURTLEBOT3_MODEL=waffle<EnterKey>

 > pushd C:\ROS2_ws
 > install\setup.bat
 
 > ros2 launch turtlebot3_navigation2 navigation2.launch.py map:=map.yaml

 

4. 설정 이후 재시작할 때는 다음과 같이 하면된다. 

   terminal 공통

        >  c:\opt\ros\foxy\x64\setup.bat; c:\opt\ros\foxy\x64\share\gazebo\setup.bat

        >  cd C:\ROS2_ws

        >  call install\setup.bat 

   terminal #1

        > ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

   terminal #2

       >  ros2 launch turtlebot3_navigation2 navigation2.launch.py map:=map.yaml

 

반응형