728x90
- 이전에 라즈베리파이에 설치했던 ROS Noetic Image에서 Arduino 설치가 어려워 Ubuntu 20.04로 OS 변경
- SD 카드에 Ubuntu 20.04 Desktop를 설치하였으나 HDMI 신호가 나오지 않음 : Ubuntu Server로 변경
- 설치 후 SD 카드의 system-boot에 있는 network-config를 아래와 같이 변경함
- ' version: 2' 가 가장 아래 줄에 위치해야 함
$ cd /media/$USER/writable/etc/netplan
$ sudo nano 50-cloud-init.yaml
- 라즈베리파이에서 wifi 사용을 위해 network를 아래와 같이 설정
$ sudo netplan generate
$ sudo netplan apply
- 변경사항 적용
- 노트북에서 라즈베리파이에 ssh 통신을 시도하자 위와 같은 오류 발생
$ ssh-keygen -R 192.168.0.18
- 위 명령어를 통해 오류 해결 (계속 연결을 할꺼냐는 질문이 나오면 yes 입력)
- 라즈베리파이의 ssh나 OS가 변경되어 위와 같은 오류가 발생함
- 예전에 인증한 IP 정보를 통해 접속하려 하나 라즈베리파이 쪽에서 해당 정보는 없는 정보라서 오류 발생
- Raspberry Pi에 ROS Noetic 설치
- 노트북에서 ssh를 통해 Rsapberry Pi와 연결
- ROS Noetic 설치
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- packages.ros.org. 로부터의 software 허용
$ sudo apt install curl # if you haven't already installed curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
- Key 설정
$ sudo apt-get update
- Debian package index 가 최신 버전인지 확인
$ sudo apt install ros-noetic-desktop-full
- ROS Noetic 설치 (시간이 다소 소요된다)
- 공식 홈페이지에서 추천하는 Desktop-Full Install로 설치
$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
- bashrc에 "/opt/ros/noetic/setup.bash" source
$ sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
- Dependencies 설치
$ sudo rosdep init
$ rosdep update
- rosdep 설치
- rosdep은 system에 필요한 dependencies을 쉽게 설치할 수 있게 해줌
-PlatformIO 설치
- Ubuntu server에서 Arduino를 쉽게 사용하기 위해 PlatformIO 설치
PlatformIO란?
- Arduino 뿐만 아니라 STM32 series 같은 다양한 환경의 개발을 PlatformIO 단일 개발환경에서 수행할 수 있게 하는 Visual Studio Code의 Extension (500여개 이상의 embedded board와 호환)
- Project별로 각기 다른 library를 설정하여 개발이 가능하며, platformio.in 파일을 통해 통해 한 Project에 여러 보드를 적용할 수 있다
- Arduino IDE의 경우 Project 각기 다른 버전의 library를 사용하기 불편했지만 PlatformIO에서는 Project별로 필요로 하는 library version을 지정할 수 있어 편리함
- 그러나 여러종류의 Device들과 Framework를 통합해 사용하여 사용방법이 복잡하고 시간이 많이 소요된다는 단점 존재
- 아래 게시글을 참고하여 Visual Studio Code 설치 후 진행
- 설치 후, PlatformIO라는 이름의 Extension 설치
- 설치가 완료되면 아래처럼 외계인 모양의 아이콘이 메뉴창에 추가됨
- Visual Studio Code에서 PlatformIO 개발환경을 사용하기 위한 메뉴
- 해당 아이콘 클릭 후 QUICK ACCESS -> PIO Home -> Open 를 통해 Project를 염
- 위와 같은 error가 뜨며 창이 열리지 않는 경우가 있음
- 이는 ubuntu에서 숨겨진 다른 Xcode가 실행중이여서 발생한 오류
$ killall code
- 위 명령어를 통해 다른 모든 Xcode를 종료시킨 후 재실행하면 창이 제대로 뜸
- New Project를 클릭하여 새 Project 실행
- Project Wizard에서 Board 선택 가능 (Framework는 Board 선택시 자동으로 선택됨)
- Finish를 클릭하면 설치, 설정이 잠시 진행됨
- 설치, 설정이 완료되면 아래와 같이 코딩을 진행할 수 있는 창이 뜸
- 실제 작성한 코드는 src folder에 저장됨 (main.cpp가 기본 설정 이름)
- Arduino IDE와 동일하게 코딩 가능
- Arduino IDE와 동일한 메뉴
- platform.ini 파일에 project의 설정 내용이 모두 저장됨
- 'atmelavr'는 core architecture를 의미하고, 'board'는 사용중인 board, 'framework'는 사용하는 툴체인이 “arduino”임을 의미
- 여기에 외부 libraries를 지정하면 build시에 자동으로 download 받아서 설치해줌
- 전에 만들어놓은 sketch를 열려면 'Import Arduino Project' 선택
- Open과 Import가 따로 있는 이유 :
- PIO에서 컴파일을 하기 위해서는 아두이노 스케치인 ". ino" 파일 외에 "platformio.ini"라는 설정 파일이 꼭 필요
- platformio.ini는 compile하고자 하는 platform과 board의 종류, board가 연결된 port 등등을 complier에게 알려줌
- Import 메뉴를 이용해 기존의 Arduino Project를 열면 Project를 가져오기 전에 사용하고자 하는 board를 지정할 수 있고, 그 결과를 반영해서 platformio.ini파일을 만듦
- Import로 불러온 sketch는 기존 sketch와는 별도로 복사본이 생성됨
- 기존에 사용하고 있던 project를 PIO에서 지속적으로 사용하고자 하면 Import가 아니라 Open으로 이용해서 열고 설정 file을 하나 만들어 둬야 함
- PlatformIO.ini파일은 PlatformIO Core 설정을 하는 [platformio] 섹션과 환경설정을 하는 [env] 섹션으로 이루어져 있고, 각 설정 부분은 "키"와 그 "설정값"이 "=" 기호로 연결되어 있는 형태로 작성이 됨
- ";"로 시작하는 줄은 주석으로 처리되고 두 개 이상의 설정값은 ", "로 구분해서 지정 가능
- 한줄 이상 구문이 길어지면 여러 줄 구문을 하나로 인식하게 할 수 있는데, 새로 시작되는 줄은 최소 2개 이상의 빈칸으로 시작되어야 함
- Library는 Library 메뉴나 (해당 project에만 설정하거나 전체적으로 설정 가능), platformio.ini에서 board별로 관리 가능
- Board 메뉴에서 PIO가 지원하는 Board, Platfrom, Framework, Ram/Rom 크기, 인터넷 연결, Unit Test, Debug 를 볼 수 있음
- Platform 메뉴에서 Platform을 관리할 수 있음
- Devices 메뉴에서 연결된 port 확인 가능. 해당 port들은 platformio.ini에서 upload, monitor port를 설정할 때 적용 가능
http://wiki.ros.org/noetic/Installation/Ubuntu
https://epictrave.tistory.com/13
https://kwonkyo.tistory.com/377
'Project > KUSMO' 카테고리의 다른 글
[KUSMO] 11/23 (Raspberry Pi Master-Slave 통신, Hector SLAM, Map 저장) (0) | 2022.11.24 |
---|---|
[KUSMO] 11/22 (ssh-Platform IO) (0) | 2022.11.23 |
[KUSMO] 11/19 (Motor Encoder Data Publisher) (0) | 2022.11.19 |
[KUSMO] 11/18 (IMU, RPLidar 케이블, rosserial-arduino) (0) | 2022.11.18 |
[KUSMO] 11/4 (Navigation Stack 구성법) (0) | 2022.11.04 |