카테고리 없음

자연어를 활용한 로봇 제어(ROS2, OpenAI API, GPT-3.5-Turbo, githhub, rosgpt)

asev 2024. 3. 2. 12:02

오늘은 올해 야심?차게 시작한 나만의 로봇 만들기 스터디가 없는 날입니다. 여러가지 이유로 처음에 했던 생각보다 스터디 준비가 쉽지는 않아서 마음 한켠에 압박이 있습니다만~ 홀가분하게  스터디 참고 자료를 포스팅 해봅니다!! ㅎㅎㅎ
 
우리들이 쓰는 일상언어인 자연어를 이용한 로봇 제어는 많은 로봇 개발자들이 관심을 갖는 주제입니다. 최근 여러곳에서 자주 등장하는 LLM, sLM들의 성능을 생각하면 더욱 신속히 도입되어야 할 것 같습니다. 저도 작년부터 로컬 서버를 활용한 LLM활용에 대해 삽질을 계속하고 있습니다. 오늘은 스터디의 메인 주제인 ROS2와 우수한 성능으로 유명한 OpenAI의 chatgpt API를 활용 해보겠습니다.
*글보며 하나씩 같이 해보시는 것도 재밌을 것 같습니다. 저는 Ubuntu20.04, 아나콘다 환경에서 시작했습니다.
 

1. 시작

콘다 가상환경을 비활성하고 ros2 패키지를 확인했으나, ros가 설치되지 않음을 확인했습니다.

 
 

2. ROS2 Foxy 설치

ROS는 다양한 버전이 있습니다. release 시점에서 보통 1년 지원간 지원(eol, end of life)이 되는데 Foxy Fitzroy, Humble Hawksbill 배포판의 경우 lts(long term support) 버전이므로 추천합니다. 패키지들의 디버그, 개발 상황을 고려하여 보통은 직전 LTS버전을 많이 사용합니다.
 
2-1 ros문서를 참고해서 제일 처음에 있는 Ubuntu (Debian)으로 설치합니다. 
https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html#

 

Ubuntu (Debian) — ROS 2 Documentation: Foxy  documentation

You're reading the documentation for a version of ROS 2 that has reached its EOL (end-of-life), and is no longer officially supported. If you want up-to-date information, please have a look at Iron. Ubuntu (Debian) Table of Contents Debian packages for ROS

docs.ros.org

 
 

 
우분투를 위한 설치법 3가지를 알아봅시다.
 
Ubuntu (Debian) 설치
 우분투의 패키지 관리 시스템을 사용하여 ROS2를 설치합니다. Debian 패키지 (.deb 파일)를 통해 설치하는 방식으로, 우분투 리포지토리에서 직접 설치할 수 있습니다. 가장 쉽고 빠른 설치 방법입니다. 의존성 관리가 자동으로 이루어지며, 시스템에 깊게 통합되어 사용하기 편리합니다.
 
Ubuntu (source) 설치
 소스 코드에서 직접 ROS2를 빌드하여 설치하는 방법입니다. 이는 GitHub 등에서 ROS2의 소스 코드를 다운로드 받아 직접 컴파일하고 설치합니다. 최신 기능이나 수정 사항을 바로 사용할 수 있으며, 사용자 지정이나 실험적인 기능 개발에 유리합니다. 필요한 패키지만 선택적으로 빌드할 수도 있습니다. 그러나 설치 과정이 복잡하고 시간이 많이 소요됩니다. 의존성 문제를 직접 해결해야 하며, 시스템에 여러 버전의 ROS2가 혼재할 가능성이 있습니다.
 
Ubuntu (binary) 설치
 미리 컴파일된 바이너리 파일을 사용하여 ROS2를 설치하는 방법입니다. 이 방법은 소스 코드를 직접 컴파일하지 않고, 미리 빌드된 바이너리 패키지를 다운로드하여 사용합니다. 소스 설치보다는 간단하며, 복잡한 빌드 과정 없이 비교적 빠르게 설치할 수 있습니다. 의존성 문제를 자동으로 해결해 줍니다. 
 
 
2-2 설치과정 에러 해결
저는 설치 중 GPG 키에러가 생겼습니다. NO_PUBKEY F42ED6FBAB17C654

 
위 에러는 APT 패키지 관리 시스템이  http://packages.ros.org/ros2/ubuntu 저장소의 공개된 GPG 키를 식별할 수 없음을 나타냅니다. GPG 키는 패키지의 무결성을 보장하고 신뢰할 수 있는 소스에서 패키지가 제공되었음을 확인하는 데 사용됩니다. 유닉스계열의 OS는 소프트웨어 설치 및 관리를 위해 패키지 관리 시스템들이 있습니다. 소프트웨어의 설치, 업데이트, 구성 및 제거를 단순화하고 자동화하며, 대표적으로 데비안 계열의 apt나 맥OS의 Homebrew가 있습니다. 이야기 나온 김에 패키지 관리 시스템을 좀더 알아봅시다.
 
Debian, Ubuntu, Linux Mint 등 Debian 기반-   APT(Advanced Package Tool)     패키지 포맷: .deb
CentOS, Red Hat Enterprise Linux, Fedora-  YUM(Yellowdog Updater, Modified), DNF (Dandified YUM, YUM의 개선판)      패키지 포맷: .rpm
openSUSE, SUSE Linux Enterprise-  Zypper      패키지 포맷: .rpm
Arch Linux, Manjaro 등 Arch 기반의 배포판-  Pacman    패키지 포맷: .pkg.tar.xz 또는 .pkg.tar.zst
 
 
구글링와 지느님을 통해 누락된 GPG키를 추가하는 명령을 찾습니다.
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
 
위 명령은 keyserver.ubuntu.com에서 F42ED6FBAB17C654 ID를 가진 키를 요청하고, 이를 시스템의 APT 키 링에 추가합니다. 추가한 후, APT 패키지 데이터베이스를 업데이트하는 sudo apt update를 진행합니다만 에러가 다시 이어집니다.

 
결국 키를 먼저 지우고 다시 설치를 진행하며 에러를 해결합니다.

설치 후 홈디렉터리에 숨겨져있는 .bashrc 환경변수에 ros2foxy를 등록하는 것을 추천합니다. 

 
 
 

3. rosgpt 소개

오늘의 흥미로운 주인공 rosgpt입니다. chatgpt인터페이스를 이용해 사람, 로봇을 상호작용시킨다고 합니다.

 
https://github.com/aniskoubaa/rosgpt

 

GitHub - aniskoubaa/rosgpt: ROSGPT is a pioneering approach that combines the power of ChatGPT and ROS (Robot Operating System)

ROSGPT is a pioneering approach that combines the power of ChatGPT and ROS (Robot Operating System) to redefine human-robot interaction. By leveraging large language models like ChatGPT, ROSGPT ena...

github.com

 
깃허브 레포와 유툽영상입니다.
https://youtu.be/urkQD-hB5Hg?si=M2_uOP95-dRGpmlI

 
 

4. rosgpt 설치

4-1 home폴더에 워크스페이스 폴더를 만듭니다. 저는 ros2_ws로 만들었습니다.

 
4-2. git 명령으로 깃허브 레포지터리를 복제합니다

 
4-3. 파일을 ros2_ws/src 속에 넣어 ros2_ws/src/rosgpt 가 되도록 디렉토리를 구성합니다.
 
4-4. 워크스페이스 디렉터리로 가서 rosgpt를 빌드합니다.
저는 단축어로 cb라고 했지만, 소스 안에 여러 패키지가 있는 경우에는 터미널 창에 $ colcon build --symlink-install --packages-select rosgpt 로 빌드합니다.

 
4-5. 설치패키지를 업데이트하는 소싱하기
$ source ./install/local_setup.bash
이제 설치된 ros 패키지를 확인하면 rosgpt가 보입니다.

 
 

5. rosgpt  환경구성

5-1.  오픈ai api키 입력
 
참고: https://velog.io/@yule/OpenAI-API-%EB%B0%9C%EA%B8%89

 

[ChatGPT] ChatGPT API 사용하기

ChatGPT API 는 2023년 3월에 출시된 OpenAI의 새로운 서비스이다. ChatGPT 애플리케이션에 직접 접속해서 사용할 수 있지만, API를 사용하면 챗GPT를 앱이나 제품에 쉽게 적용할 수 있다.

velog.io

 
5-2.  영어+일부 언어용 소프트웨어 음성 합성기인 espeak 라이브러리를 설치
$ sudo apt-get install libespeak1

 

 
$ pip install openai
$ pip install flask
$ pip install flask_restful
$ pip install pyttsx3
 
5-3 에러를 띄우며 하나씩 설치했는데 패키지에 보니 requirements.txt가 있습니다.  여러분들은 pip install -r requirements.txt 로 환경을 구성합시다~
 
 
 
 

6. rosgpt  실행

$ ros2 run rosgpt rosgpt

 
rosgpt 실행을 하니 플라스크서버가 생겼습니다. 웹브라우저로 http://127.0.0.1:5000/를 들어가면 아래의 사이트가 열립니다.

권한을 허용하고 스타트 리코딩을 누르면 신기하게도 내가 하는 말들이 영어로 쓰여집니다. 인식률은 음.,,,?

하고 싶었던 말은 ros2 run turtlesim... 인데 재밌게 가지고 놀아봐야겠습니다~