본문 바로가기

Project/KUSMO

[KUSMO] 7/29 ~ 31 (노트북, Raspberry PI 초기 설정)

728x90

- 터미널을 통한 여러 프로그램 설치와 실행

 

- Shell : 명령어 처리기로써, OS 상에서 사용자가 입력한 명령을 읽고 해석하여 대신 실행시키는, 사용자와 커널 사이의 매개체 역할을 하는 프로그램으로써 사용자가 커널에 직접 명령을 내릴 수 있게 함

bash, sh, csh, ksh등의 종류가 있다

  • sh(Bourne Shell) : shell의 한 종류로 초기의 unix shell로 태어났다는 의미 (프롬프트 : $)
    • Prompt : 사용자의 입력을 받아들일 준비가 됐음을 나타내는 것
  • bash(Bourne Again Shell)는 shell의 한 종류. 가장 대표적으로 사용 (프롬프트 : #)
  • shell script : shell을 통해 컴퓨터에 시킬 명령을 텍스트 형식으로 저장하여 한줄씩 순차적으로 읽어 실행되도록 작성된 프로그램
    • script : interpreter방식으로 동작하는, compile되지 않는 프로그램

7/29

$ sudo apt install net-tools
  • ifconfig 사용을 위해 net-tools 패키지 설치
  • apt는 Advanced Package Tool의 약자로써 
  • apt-get은 apt에 비해 더 많은 옵션들을 가지고 있고 안정적이다
  • apt에서는 사용자의 편리를 위해 자주 사용하는 기능들을 추출함. 사용시 하단에 진행바가 표시됨
$ ifconfig

 

현재 PC의 IP주소 확인

  • ifconfig는 interface configuration(네트워크 인터페이스 구성)의 약자로 네트워크 인터페이스 관련 정보를 조회 및 수정할 수 있는 명령어

 

$ apt-get install gedit		// gedit 설치
$ gedit ~/.bashrc
  • gedit을 활용한 bashrc파일 수정
  • bashrc파일은 bash를 사용할 때 참고할 사항을 정의해놓은 파일로써, bash가 실행될 때 마다, 즉 새로운 terminal 창이 열릴 때 마다 수행되는 shell script임
  • '~' 은 사용자의 home directory를 의미
    • 또한 프롬프트 옆에 '~'표시가 있으면 이는 현재 사용자가 자신의 home directory에 있음을 알림
  • '~/' 은 현재 사용자의 home folder를 의미 ex) User name이 'LIM'인 경우 /home/LIM
  • CTRL + O, CTRL + X 

PC의 IP주소를 입력

  • Master_URI : roscore를 실행시킬 컴퓨터의 주소
  • ROS_HOSTNAME : 현재 사용중인 컴퓨터의 주소

 

$ source ~/.bashrc
  • 수정 후 변경사항 저장
  • bashrc 파일 수정 후 터미널을 다시 열어야 변경사항이 적용됨
  • 대신 script 파일을 수정한 후에 변경사항을 바로 적용시키는 source명령어를 사용

 

$ roscore
  • roscore는 ROS의 기본 실행 명령으로써 패키지에서 하나의 node를 실행하는데 사용함
  • Node란 ROS에서 실행되는 최소 단위의 프로세스를 의미
  • 각 node들은 변수의 형태를 가지는 message를 통해 다른 node들과 데이터를 주고 받음
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  • 터틀봇3에서 기본 패키지 실행
  • roslaunch는 여러 nodes를 실행하고 실행 옵션을 결정함
  • turtlebot3_bringup은 turtlebot3의 기본 기능을 시작하기 위한 roslaunch scripts를 제공

  • 위 과정에서 패키지가 실행되지 않는 오류 발생

 

라즈베리파이4가 방열이 심해 쿨러 사용

 

 

7/30 

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
  • 의존 패키지 설치

 

$ source /opt/ros/melodic/setup.bash
$ sudo apt-get install ros-melodic-turtlebot3-msgs

 

$ sudo apt-get install ros-melodic-turtlebot3
  • 터틀봇3 패키지 설치

 

$ echo "export TURTLEBOT3_MODEL=waffle_pi" >> ~/.bashrc
  • 터틀봇 모델 설정

 

  • ifconfig ~ source ~/.bashrc 부분은 전과 동일

 

2) SBC(Single Board Computer) 설정

 

 

  • OS로 Raspbian(Raspberry PI OS) 선택 후 저장소에서 SD카드 선택 후 쓰기 시작
  • 쓰기 완료 후 SD card를 라즈베리파이에 삽입 후 모니터, 키보드 등을 연결한 후 전원 인가
  • 초기 설정 진행 (이름 : kusmo)
  • 노트북과 같은 네트워크(와이파이)에 연결한 후 터미널 실행
$ ifconfig
  • 노트북에서와 마찬가지로 IP 확인 = 192.168.0.25

 

  • 노트북에서 터미널 실행 후 아래 명령어를 통해 라즈베리파이와 연결
$ ssh kusmo@192.168.0.25

 

$ sudo apt-get install ntpdate
$ sudo ntpdate ntp.ubuntu.com
  • NTP 시간 동기화
  • NTP(Network Time Protocol) : Network로 연결되어 있는 컴퓨터들끼리의 Clock시간을 동기화 시킬 때 사용하는 프로토콜

 

$ sudo raspi-config
  • 환경설정 진행
  • Advanced Options -> Expand Filesystem 선택 후 종료(사진 첨부)

 

$ gedit ~/.bashrc
export ROS_MASTER_URI=http://{192.168.0.3}:11311
export ROS_HOSTNAME={192.168.0.25}
  • gedit을 통해 bashrc파일을 연 후 맨 아랫줄에 위 두 줄 추가
  • 첫번째 IP는 노트북의 IP, 두번째 IP는 라즈베리파이의 IP

 

$ source ~/.bashrc
  • 수정사항 적용

 

3) OpenCR 설정

  • OpenCR을 노트북에 연결

 

$ sudo dpkg --add-architecture armhf
$ sudo apt-get update
$ sudo apt-get install libc6:armhf
  • 라즈베리파이에 OpenCR 펌웨어를 올리기 위해 필요한 패키지 설치

 

$ 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
  • 펌웨어 다운로드
  • wget은 웹에서 파일 다운로드를 도와주는 Linux Command Line Utility

 

$ cd ./opencr_update
$ ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr
  • OpenCR에 펌웨어를 올림

 

 

4) Bring Up

  • 노트북에서 roscore 실행
$ roscore

 

$ ssh kusmo@192.168.0.25
  • 라즈베리파이에 연결

 

$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  • 터틀봇3 application 시작을 위한 기본 패키지 bring up
  • 이 과정에서 roslaunch 명령어를 인식하지 못하는 오류 발생

 

 

7/31

  • 컴퓨터에서 16GB크기의 SD카드의 전체 공간이 MB단위로 작게 표시가 되어 이를 해결하고자 함

 

  • Window key + R 에서 diskpart를 실행

  • 실행 후 list disk를 통해 현재 컴퓨터에 설치된 저장공간 리스트 확인
  • SD 카드에 해당하는 디스크 선택 ex) 4번 disk에 SD카드가 있으면 'select disk 4' 입력
  • clean을 통해 디스크 포맷. 이제 파일 탐색기에서 용량이 표시되지 않는 드라이브로 변경 됨

 

  • 이후 아래 명령어들을 실행했어야 하나 하지 않아서 컴퓨터가 SD카드를 표시하지 않게 됨
create partition primary	// 새로운 파티션 생성
list partition			// 생성된 파티션의 번호 확인. 기본적으로는 1번으로 표시됨
select partiion1		// 1번 파티션 선택
active				// 해당 파티션 활성화
format fs=ntfs quick		// ntfs 파일시스템으로 포맷
exit				// diskpart를 빠져나옴
  • format fs=ntfs quick에서 ntfs를 fat32로 바꾸면 FAT32 파일시스템으로 포맷됨
  • FAT32는 NTFS이전의 파일시스템

 


참고 자료 :

https://www.notion.so/2-5-324b0c03317640cea18601c889b1515e

 

2.5 움직이기

터틀봇3을 움직이기 위해서는 리모트 PC와 터틀봇3에 IP 셋팅을 적당하게 해 주어야 합니다.

www.notion.so

https://jihnli.tistory.com/3

 

터틀봇3 연결하기 (Ubuntu 18.04, ROS Melodic)

Remote PC에 Ubuntu 18.04, ROS1(Melodic)을 설치한 후 로보티즈 e매뉴얼을 따라 세팅했다. emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/ ROBOTIS e-Manual emanual.robotis.com 1. Remote PC..

jihnli.tistory.com

https://psychoria.tistory.com/752

 

diskpart 명령어로 USB 드라이브 포맷하는 방법

USB나 SD카드에 리눅스 등을 설치하면 여러 파티션으로 나눠집니다. 라즈베리파이 OS를 설치한 USB는 다음과 같이 표시됩니다. 64GB USB인데 전체 공간이 252MB로 표시가 되고 있습니다. 이런 경우 disk

psychoria.tistory.com

https://robertchoi.gitbook.io/ros/build

 

3장 ROS 구조 및 빌드 시스템 - ROS 하루에 입문하기

Message : 메시지를 통해 노드 간의 데이터를 주고 받게 된다. 메시지는 integer, floating point, boolean와 같은 변수 형태이다. 또한, 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들의

robertchoi.gitbook.io