SLAM 네비게이션


OMO-R1 PRO 버전은 G2 라이다가 설치되어 공급됩니다. 이 센서를 가지고 SLAM 네비게이션을 수행하는 방법을 정리하였습니다. 






[Dependency package 설치]



SLAM에 필요한 패키지들을 설치합니다.



          

          $ sudo apt-get install ros-melodic-tf ros-melodic-joy \ 

          ros-melodic-teleop-twist-joy \ 

          ros-melodic-teleop-twist-keyboard \ 

          ros-melodic-laser-proc ros-melodic-rgbd-launch \ 

          ros-melodic-depthimage-to-laserscan \ 

          ros-melodic-rosserial-arduino ros-melodic-rosserial-python \ 

          ros-melodic-rosserial-server ros-melodic-rosserial-client \ 

          ros-melodic-rosserial-msgs ros-melodic-amcl \ 

          ros-melodic-map-server ros-melodic-move-base \ 

          ros-melodic-urdf ros-melodic-xacro ros-melodic-usb-cam \ 

          ros-melodic-compressed-image-transport \ 

          ros-melodic-rqt-image-view ros-melodic-gmapping \ 

          ros-melodic-navigation ros-melodic-interactive-markers \ 

          ros-melodic-ar-track-alvar ros-melodic-ar-track-alvar-msgs  





[OMO_R1 패키지 설치]



catkin_ws의 src 폴더로 이동한 다음 https://github.com/omorobot/omo_r1.git 의 코드를 git clone하여 복사합니다. 만약 기존에 다운로드하였다면 git pull 로 다시한번 최신버전으로 업데이트합니다. 



          

          $ cd ~/catkin_ws/src $ git clone https://github.com/omorobot/omo_r1.git 



  • 빌드하기


          

          $ cd .. 

          $ catkin_make 또는 catkin build  





[G2 Lidar 패키지 설치]



catkin_ws의 src 폴더 안에 기존에 설치된 YD라이다 패키지가 있으면 삭제하고 YDLIDAR 공식 ROS지원 페이지에서 패키지를 다운로드하고 빌드합니다.


https://github.com/YDLIDAR/ydlidar_ros

 


          

          $ cd ~/catkin_ws/src 

          $ git clone https://github.com/YDLIDAR/ydlidar_ros.git 

          $ cd .. $ catkin_make 또는 catkin build 





[ROS SLAM으로 맵 만들기]



이제 좌측 상단의 roscore만 남기고 ctrl+c 키를 눌러 실행중인 패키지를 모두 종료합니다.

터미널을 하나 더 띄워서 ROBOT PC에 접속합니다.




  • 좌측 상단부터 HOST PC의 roscore 우측 상단: ROBOT PC먼저 ROBOT PC터미널(우측 상단)에서 로봇을 G2라이다와 함께 실행하기 위해 다음을 입력합니다.


          

          $ roslaunch omo_r1_bringup omo_r1_robot_G2.launch 



  • 다른 ROBOT PC 터미널(우측 하단)에서 ROS SLAM 을 실행합니다.


          

          $ ssh r1@192.168.1.24 



  • 다음 명령어를 입력하여 motor를 기동합니다.


          

          $ roslaunch omo_r1_slam omo_r1_slam_G2.launch 



  • 이제 HOST PC 터미널에서 (좌측 하단) ROS SLAM rviz를 엽니다.


          

          $ roslaunch omo_r1_slam omo_r1_slam_rviz.launch 




  • 이제 터미널은 다음과 같은 상태가 되고



  • RVIZ 환경에서 로봇이 나타난다.



  • HOST PC 터미널을 하나 더 띄우고 다음을 입력하여 키보드로 조작합니다.


          

          $ roslaunch omo_r1_teleop omo_r1_teleop_key.launch 



  • 이제 키보드 명령으로 천천히 움직이면서 맵을 생성합니다.
  • 너무 빠르게 움직이는 경우 아래 그림과 같이 맵이 이상하게 그려지거나 로봇의 위치가 엉뚱한곳으로 이동하게 되므로 주의하여 조작합니다.



  • 어느정도 맵이 완성되면 HOST PC에서 teleop keyboard를 중단시키고 아래 명령어를 입력하여 map 파일을 저장합니다.


          

          $ rosrun map_server map_saver -f map 



  • 그러면 내 PC에 map.pgm 파일과 map.yaml 파일이 생성됩니다.
  • 이제 이렇게 생성된 파일을 omo_r1/omo_r1_navigation/maps 에 복사합니다.


          

          $ cp map.pgm map.yaml catkin_ws/src/omo_r1/omo_r1_navigation/maps 



  • 터미널에서 모든 패키지를 종료한다. roscore도 다시 시작해봅니다.





[ROS SLAM Navigation 실행]



  • 다시 순서대로 robot을 실행하고


          

          $ roslaunch omo_r1_bringup omo_r1_robot_G2.launch 



  • HOST PC에서 omo_r1_navigation_G2.launch를 엽니다.


          

          $ roslaunch omo_r1_navigation omo_r1_navigation_G2.launch 



  • 또 HOST PC에서 navigation_rviz.launch를 엽니다.


          

          $ roslaunch omo_r1_navigation omo_r1_navigation_rviz.launch 



  • 이제 RVIZ에 로봇과 맵이 나타납니다.



  • 이제 상단 메뉴에서 2D Pose Estimate 버튼을 누르고 맵에서 로봇이 있을것으로 추정되는 위치와 방향으로 커서를 Drag 합니다.



  • 다음으로 2D Nav Goal을 선택하여 로봇의 목표 위치와 방향을 설정합니다. 



  • 맵이 어느정도 일치하고 Planning이 가능하면 로봇이 이동하기 시작합니다.