코딩일지(2024-06-30)
ROS공부를 다시 시작하다!(2)
현재 내가 하고 있는 프로젝트를 진행하기 위해서는 자율주행기술이 일부 들어가야 한다. 이를 흉내 내기 위해서는 ROS를 알아야 하는 것이 필수적이다. 그리고 여기서 배운 것들을 추후에 라즈베리파이에 넣을 것이다.
이를 위해 로보틱스 공식 사이트(링크)를 참고하여 PC Setup과정을 살펴보았다.
나같은 경우에는 라즈베리파이 자체에 ros를 설치하는 것을 염두해두고 있기 때문에, 다음과 같이 호환성을 고려하여 ROS Noetic버전을 설치해주기로 하였다.
근데 일단 이 공식사이트에는 ros를 원격용피씨에 설치하는 시나리오로 작업이 나와있어서 나중에 라즈베리파이에 적용할때는 약간의 문제가 있을수도 있지만 근간이 되는 원리는 똑같기에 이 문서로 개념원리만 파악하려고 한다.
1.원격PC에 ROS와 관련 패키지 설치하기
$ sudo apt update
$ sudo apt upgrade
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic.sh
$ chmod 755 ./install_ros_noetic.sh
$ bash ./install_ros_noetic.sh
install_ros_noetic.sh: 로스 노에틱 설치와 관련 패키지 설치를 도와주는 쉘 파일이다. 이거 실행하고 관련패키지를 설치하면 연결 및 동기화를 도와주는 것 같다.
wget: 파일을 다운받는 유틸리티 도구이다.
chmod: 해당 파일의 읽기/쓰기/실행 권한을 755로 높여주었다
bash: 해당 쉘파일을 실행시키기 위한 배시쉘 명령어인데,
이게 디폴트라서 bash ./install_ros_noetic.sh
라고 안하고 그냥 $ ./install_ros_noetic.sh
라고 해도 똑같이 실행이 되는 것 같다.
$ sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \
ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc \
ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \
ros-noetic-rosserial-python ros-noetic-rosserial-client \
ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server \
ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro \
ros-noetic-compressed-image-transport ros-noetic-rqt* ros-noetic-rviz \
ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers
2.터틀봇 전용 패키지 설치하기
$ sudo apt install ros-noetic-dynamixel-sdk
$ sudo apt install ros-noetic-turtlebot3-msgs
$ sudo apt install ros-noetic-turtlebot3
한가지 알고 넘어가야 할것이
위에서는 이미 빌드과 완료된 패키지를 다운받는 작업을 진행하는 것이다.
하지만 만약 위 패키지들을 수정하고 싶다면 어떻게 해야할까? 바로 소스코드를 받아야 한다.
#기존에 빌드되어 있는 패키지들을 삭제한다.
$ sudo apt remove ros-noetic-dynamixel-sdk
$ sudo apt remove ros-noetic-turtlebot3-msgs
$ sudo apt remove ros-noetic-turtlebot3
# src디렉토리를 만들고 거기에 패키지 소스코드를 클론해온다.
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src/
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
# src에서 상위디렉토리로 올라가 소스코드를 빌드해준다.(catkin_make)
$ cd ~/catkin_ws
$ catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
(정리하자면 빌드된 패키지를 받는 것은 터틀봇을 사용하는 일반 사용자를 위한 설치방식인 것이고, 소스코드를 받는 것은 터틀봇의 성능을 커스터마이징하기 위한 개발자를 위한 설치방식 것이라고 이해할 수 있겠다.)
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
에 대해 알아보자면,만약에 홈디렉토리 바로 아래에
mydiary.txt
파일을 만들고 그 파일에 들어가서 “today is rainy”라는 내용을 한줄 더 추가할려면 다음과 같이 하면 된다. echo “today is rainy” » ~/mydiary.txt이와 같은 맥락으로 현재 내가 홈디렉토리에 있다면, 홈디렉토리 바로 아래에 있는
.bashrc
파일에다가~/catkin_ws/devel/setup.bash
라는 배쉬파일을 실행하려면 어떻게 하면 될까? 위 예제와 같은 맥락으로 echo 명령어를 앞에 붙이고 그 뒤에 추가할 텍스트, 그 뒤에 파일과 파일의 위치정보를 기입하면 된다. 다음과 같다. echo “source ~/catkin_we/devel/setup.bash” » ~/.bashrc
3.네트워크 구성하기
원격용 pc도 하나의 컴퓨터이고 turtlebot3 또한 하나의 작은 컴퓨터이다. 따라서 네트워크에 물림으로써 고유한 IP주소를 할당받는다.
아래 그림과 같이 두 IP주소를 알고있어야 설정을 통해 원격통신이 가능해진다.
예를 들어서보자. ifconfig
명령어를 통해 컴퓨터의 아이피 주소가 192.168.0.100
이라는 것을 알게 되었다고 치자.
그러면 sudo nano ~/.bashrc
를 통해 편집모드로 들어가 아래 내용을 추가해준다.
export ROS_MASTER_URI=http://192.168.0.100:11311
export ROS_HOSTNAME=192.168.0.100
마지막으로 bashrc의 설정정보를 즉시 적용하기 위해 아래 source명령을 내려준다.
source ~/.bashrc
댓글남기기