[ROS] 이기종 디바이스 통신 설정 (PC - turtlebot3)
포스트
취소

[ROS] 이기종 디바이스 통신 설정 (PC - turtlebot3)

  1. JetPack
  2. ROS Melodic 설치
  3. PC 세팅
    • PC에 터틀봇 패키지 설치
  4. 터틀봇 세팅
    • OpenCR SETUP
    • OpenCR 터틀봇 펌웨어 세팅
  5. 환경변수 세팅
    • PC bashrc
    • Turtlebot bashrc
    • 이기종 통신이 아닐 때
    • 편의를 위한 alias 등록
  6. 전체 코드
    • PC에 ROS Melodic 설치부터
    • 터틀봇에 ROS Melodic 설치부터

PC > Ubuntu 18.04 설치 / ROS Melodic 설치

Turtlebot3 > Ubuntu 18.04 설치 / ROS Melodic 설치 / PC와 동일 네트워크 / ssh 원격접속 가능여부 / PC와 Time 동기화 / 인터넷 가능


1. JetPack

Nvidia JetPack SDK는 End-to-End AI Application 빌드를 위해 제공되고,

Ubuntu OS, CUDA, cuDNN, OpenCV 등이 Jetson 모듈에 맞게 최적화 되어있다.

우리 프로젝트에서는 Jetson Nano를 사용하였기 때문에 JetPack을 설치하고,

그 위에 ROS를 설치하였다.

Nvidia JetPack SDK 주소: https://developer.nvidia.com/embedded/jetpack


2. ROS Melodic 설치

Ubuntu 18.04 LTS 버전에 호환되는 ROS는 Melodic Morenia 버전이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo apt-get install -y chrony ntpdate
$ sudo ntpdate -q ntp.ubuntu.com
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt install curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
$ sudo apt update
$ sudo apt install ros-melodic-desktop-full
$ sudo apt-get install python-pip
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
$ sudo rosdep init
$ rosdep update

3. PC 세팅

1
$ sudo apt-get install 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-compressed-image-transport ros-melodic-rqt-image-view ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers

PC에 터틀봇 패키지 설치

1
2
3
4
$ mkdir -p ~/turtlebot3/src && cd ~/turtlebot3/src
$ git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ catkin_init_workspace && cd .. && catkin_make

Python 3 users in ROS Melodic and earlier: note, if you are building ROS from source to achieve Python 3 compatibility, and have setup your system appropriately (ie: have the Python 3 versions of all the required ROS Python packages installed, such as catkin) the first catkin_make command in a clean catkin workspace must be: catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 This will configure catkin_make with Python 3. You may then proceed to use just catkin_make for subsequent builds.


4. 터틀봇 세팅

1
2
3
4
5
6
$ mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
$ git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
$ sudo apt-get install ros-melodic-rosserial-python ros-melodic-tf
$ catkin_init_workspace && cd .. && catkin_make

OpenCR SETUP

roscore 실행 후 다른 터미널에서 다음 실행 후 roscore 종료

1
2
$ source ~/catkin_ws/devel/setup.bash
$ rosrun turtlebot3_bringup create_udev_rules

루트 권한 없이 OpenCR 용 USB 포트를 사용할 수 있도록 설정

OpenCR 터틀봇 펌웨어 세팅

1
2
3
4
5
$ export OPENCR_PORT=/dev/ttyACM0
$ export OPENCR_MODEL=burger
$ rm -rf ./opencr_update.tar.bz2
$ wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS1/latest/opencr_update.tar.bz2 && tar -xvf opencr_update.tar.bz2 && cd ./opencr_update
./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr

오류가 발생한다면 터틀봇은 amr 아키텍처이고 스크립트에서 x86 아키텍처의 스크립트를 실행하려 하므로 강제로 스크립트를 수정해주는 방법을 사용할 수 있겠다. nano, vim, gedit 등을 활용하자.

shell_cmd="" 밑에 라인의 else 부분을 수정하면 된다. "./opencr_ld_shell_x86""./opencr_ld_shell_arm"으로 수정하자. 이후에도 에러가 발생하면 OpenCR 보드를 recovery mode로 진입하자. (사진추가예정)

5. 환경변수 세팅

gedit .bashrc 등의 명령어를 통해 .bashrc를 수정하자.

MASTER PC의 IP는 양쪽에 ROS_MASTER_URI에 언급된다.

PC bashrc

1
2
3
4
5
6
7
8
9
# Set ROS Melodic
source /opt/ros/melodic/setup.bash

# Set Ros Network
export ROS_MASTER_URI=http://{PC_IP}:11311
export ROS_HOSTNAME={PC_IP}

# Set TURTLEBOT3 MODEL
export TURTLEBOT3_MODEL=burger

Turtlebot bashrc

1
2
3
4
5
6
7
8
9
10
# Set ROS Melodic
source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash

# Set Ros Network
export ROS_MASTER_URI=http://{PC_IP}:11311
export ROS_HOSTNAME={Turtlebot_IP}

# Set TURTLEBOT3 MODEL
export TURTLEBOT3_MODEL=burger

이기종 통신이 아닐 때

1
2
3
4
5
6
# Set Ros Network
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311

# Set TURTLEBOT3 MODEL
export TURTLEBOT3_MODEL=burger

편의를 위한 alias 등록

1
2
3
4
# Set ROS alias command
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'

IP 확인

ifconfig 명령어로 확인 가능

설치 명령어 sudo apt-get install net-tools


6. 전체 코드 (복붙 비추천)

PC에 ROS Melodic 설치부터

1
$ sudo apt-get install -y chrony ntpdate && sudo ntpdate -q ntp.ubuntu.com && sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' && sudo apt install -y curl && curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - && sudo apt update && sudo apt install -y ros-melodic-desktop-full && sudo apt-get install -y python-pip && echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc && source ~/.bashrc && sudo apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential && sudo rosdep init && rosdep update && sudo apt-get install -y 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-compressed-image-transport ros-melodic-rqt-image-view ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers && mkdir -p ~/turtlebot3/src && cd ~/turtlebot3/src && git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3.git && git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git && catkin_init_workspace && cd .. && catkin_make

터틀봇에 ROS Melodic 설치부터

1
$ sudo apt-get install -y chrony ntpdate && sudo ntpdate -q ntp.ubuntu.com && sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' && sudo apt install -y curl && curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - && sudo apt update && sudo apt install -y ros-melodic-desktop-full && sudo apt-get install -y python-pip && echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc && source ~/.bashrc && sudo apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential && sudo rosdep init && rosdep update && mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src && git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3.git && git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git && git clone -b melodic-devel --single-branch https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git && sudo apt-get install -y ros-melodic-rosserial-python ros-melodic-tf net-tools terminator && catkin_init_workspace && cd .. && catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

이후 OpenCR SETUP 진행

roscore 실행 후 다른 터미널에서 다음 실행 후 roscore 종료

1
2
$ source ~/catkin_ws/devel/setup.bash
$ rosrun turtlebot3_bringup create_udev_rules

루트 권한 없이 OpenCR 용 USB 포트를 사용할 수 있도록 설정

환경 변수 세팅


참고

ros 공식 wiki

“ROS 로봇 프로그래밍” - (루비페이퍼, 표윤석.조한철.정려운.임태훈 지음)

구선생 로보틱스 - 터틀봇 Ubuntu18.04에서 구동될까?

Nvidia JetPack SDK

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.