반응형

최종 목표는 터틀봇3를 이용한 지도작성과 네비게이션으로

pc의 원격 제어로 터틀봇을 제어하여 특정 공간의 지도를 작성하고 터틀봇이 지정된 위치로

이동할 수 있게 하는 것이다.

 

우선 원격으로 제어하게 될 PC에는 Ubuntu16.04 Xenial Xerus(LTS)와 ROS(Kinetic Kame)을 설치하였고

터틀봇의 라즈베리파이를 이용하여 리눅스 라즈비안OS를 사용하였다.

 

1. 터틀봇3의 의존성 패키지를 설치하여주고 터틀봇3의 패키지까지 설치하여 준다.

 

2. 앞의 과정과 똑같이 터틀봇에 탑재된 PC(라즈베리파이)에도 의존성 패키지와 터틀봇3의

   패키지들을 설치하여 준다.

 

패키지 설치.txt
0.00MB

3. 네트워크 설정 맞추기

   Remote PC의 IP를 ifconfig  혹은 hostname -I(대문자 알파벳 I)를 통해 알아낸다.

   그리고 ~/.bashrc 파일의 ROS_HOSTNAME 및 ROS_MASTER_URI를 설정해주는데

   gedit ~/.bashrc  를 통해 수정이 가능하고 아니면 nano ~/.bashrc  에서 Alt+/  을 눌러 가장 밑으로 가서

   수정하여 주는 방법이 있다.

   가장 아래의 값에

   export ROS_HOSTNAME=192.168.0.100  (여기의 IP는 위에서 찾은 Remote PC의 IP)

   export ROS_MASTER_URI=http://${ROS_HOSTNAME}:11311

   을 입력해 준다.

 

   다음은 터틀봇PC의 IP값을 확인해준다.(이때 Remote PC와 터틀봇PC는 같은 네트워크에 연결되어있어야 한다.)

   그리고 위와 같은 방법으로 ~/.bashrc를 수정하여 주는데 이때

   export ROS_HOSTNAME=192.168.0.103  

   export ROS_MASTER_URI=http://192.168.0.100:11311

   로 HOSTNAME에는 원래 터틀봇PC의 아이피주소를 적어주고

   MASTER_URI에는 RemotePC의 아이피 주소를 넣어주도록 한다.

 

    -> ~/.bashrc의 수정이 끝났으면

         $ source ~/.bashrc    를 통해 저장하는것을 잊지말자!

 

 

4. 터틀봇 원격 조종하기

   (1) RemotePC에서 명령창을 띄운 후 $ roscore   을 실행시켜준다.

   (2) 터틀봇PC에서 turtlebot3_robot.launch 런치파일 실행

      // $ export TURTLEBOT3_MODEDL=waffle_pi

      $ roslaunch turtlebot3_bringup turtlebot3_robot.launch

   (3) RemotePC에서 turtlebot3_remote.launch  런치파일 실행

      $ roslaunch turtlebot3_bringup turtlebot3_remote.launch

   (4) RemotePC에서 turtlebot3_teleop_key 런치파일 실행

      $ export TURTLEBOT3_MODEL=waffle_pi

      $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

 

  여기까지 완료하면 RemotePC쪽에 w / a s d / x  를 이용하여 터틀봇을 조종할 수 있도록 뜨게된다.

 

(이 과정에서 방화벽이 해지되어있는지 확인하여야하고 이 과정이 잘 진행되지 않는다면

  터틀봇 PC에서   $ sudo ufw disable     을 통해 방화벽을 해지시켜줘야한다.)

   

 

위의 과정들을 진행하면서 터틀봇pc와 remotePC를 모두 사용해야하는 불편함이 있다.

나의 경우 터틀봇pc(라즈베리파이)에 키보드와 마우스, 모니터를 연결하여 사용하면서

동시에 remotePC에서도 조작을 하여야했기에 굉장히 책상 위가 번잡해지는 불편함이 있었는데

SSH통신을 통해 이를 해결할 수 있었다.

 

다음은 RemotePC에서 TurtlebotPC를 원격으로 접속할 수 있는 방법이다.

그러기 위해서 두 PC를 같은 네트워크에 연결하고

RemotePC에서

$ ssh pi@192.168.0.100   을 입력하여 준다.

여기서 pi는 turtlebotPC의 커맨드창에 보면

작업자이름@작업환경 :     이 표시되게 되는데 이 때 작업자 이름을 나타내고

뒤의 IP주소는 TurtlebotPC의 IP 주소이다.

 

 

 

 

반응형

'ROS > TURTLEBOT3' 카테고리의 다른 글

TURTLEBOT3(waffle_pi)를 이용한 SLAM, NVIGATION  (2) 2019.10.03
반응형

PC에서

$ roscore  을 입력시켜주고

 

$ ssh <NAME>@192.168.xx.xxx   을 입력시켜 원격으로 접속할 수 있도록 해준다.

(이 때 Turtlebot PC의 방화벽 설정이 잘 꺼져있는지 확인해주어야한다.)

$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

 

$ export TURTLEBOT3_MODEL=waffle_pi   를 통해 사용할 장비가 와플파이임을 입력시켜주고

$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_method:=gmapping

   위 문장을 통해 gmapping 방식을 통한 SLAM을 시작하면서 RVIZ창을 띄워주도록 한다.

   GMapping 방식은 레이져의 범위에 대한 데이터를 이용하여 지도를 작성하는 방법인데

   자세한 부분은 다음에 다시 올리도록 하겠다.

   gmapping 외에도 cartographer, hector, karto, frontier_exploration 등이 있다.

 

$ export TURTLEBOT3_MODEL=waffle_pi

$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

 

   여기까지 실행하면

다음과 같은 창과 함께 키도르를 이용하여 지도를 만들어 갈 수 있을 것이다.

다 만든 지도는 위와 같았고 이렇게 지도작성을 끝냈으면

 

$ rosrun map_server map_saver -f ~/map

   을  통해 작성된 지도를 저장해준다.

 

지도의 저장이 완료되었으면 SLAM이 작동되고 있는 창을 닫아준 후

 

$ export TURTLEBOT3_MODEL=waffle_pi

$ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

   을 통해 앞에 작성된 지도를 불러와 설정을 해준다.

상단 툴바에 2D Pose Estimate 클릭

  다음으로 2D Pose Estimate를 통해 현재 로봇의 위치를 집어주고 방향또한 집어준다.

  그 다음 로봇을 움직이면서 작동시키다 보면 위의 사진에 보이듯 로봇 주변에 퍼져있는

  Point Cloud가 점차 로봇의 위치에 수렴하는 것을 확인할 수 있다.

 

  그렇게 된다면 2D Pose Estimate 옆의 2D NAV Goal  을 클릭하여 로봇의 도착지점과 방향을

  선택해 줄 수 있다.

반응형

'ROS > TURTLEBOT3' 카테고리의 다른 글

터틀봇3(TURTLEBOT3) 개발환경  (0) 2020.12.29

+ Recent posts