- JetPack
- ROS Melodic 설치
- PC 세팅
- PC에 터틀봇 패키지 설치
- 터틀봇 세팅
- OpenCR SETUP
- OpenCR 터틀봇 펌웨어 세팅
- 환경변수 세팅
- PC bashrc
- Turtlebot bashrc
- 이기종 통신이 아닐 때
- 편의를 위한 alias 등록
- 전체 코드
- 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