ROS2 프로젝트/LLM+ROS2+GAZEBO Control

[프로젝트1] LLM 과 ROS2를 결합한 Turtlesim 컨트롤 (1)

KRBIL 2024. 6. 7. 19:24

 

Intro  

 

 

현재 국방혁신 4.0 에서도 명시하듯,  [유무인 협업] (Manned-Unmanned Teamming) 기술의 중요성을 백분 강조하고 있다. 

 

아직까지 현재 훈련 및 로봇 협업 단계는 인간이 컨트롤러로 조종하는 단계에 불과하다. 

 

블랙 호넷 드론 무인항공기 (출처 : 플리어)

 

 

우크라이나 전투 영상을 보고서 드론을 어떻게 더욱 효과적으로 사용할 수 있을지 생각해 봄. 

 

 LLM 과 결합하여 드론 control 을 하면 전투원의 생존 가능성 및 전투 능력을 더욱 높일 수 있지 않을까 생각이 듬. 

 

요즘, LLM 을 활용하여 Robot control 에 대한 논문이 조금씩 등장하고 있는 추세.

 

다만 복잡한 Task에 대해서는 가능성과 potential에 대해서만 언급하고 있음. 

 

차근차근 Simple task 부터 complex task 까지 차근차근 발전해나가면 결국 실제 전장에 운용가능하지 않을까 싶음.

 

따라서 일단 ROS2 와 openAPI 를 결합하여 ROS2 의 가장 기본 튜토리얼인 turtlesim 을 컨트롤하는 프로젝트를 진행하고자 함. 

 

필자는 ROS2 는 물론, python 코딩 능력에 있어서도 뛰어나진 않지만 claude와 perplexity AI 검색으로 이 프로젝트를 해결하며 모르는 개념들을 공부해가고자 함. 

 

개발환경 (IDE) 

Ubuntu 22.04.4 Jammy

ROS2 Humble

 

프로젝트의 대략적 프로세스 

 

1. User Input

    : 터미널에 명령 입력

2. ROS2 토픽 발행 

    :  입력된 명량 ->  'turtle_command' 토픽에 발행

3. Node 에서 명령 수신 

    :  Node 에서 'turtle_command' 토픽을 구독하고 있다가 메시지를 수신합

4. OpenAI API 호출

     : 수신한 명령을 Open API 로 전송 

       프롬프트를 활용하여 해석을 요청 

5. LLM응답 해석 

    : OpenAI API가 응답을 반환 

      Node 에서 응답을 해석 

6. Twist 메시지 생성 

    : 해석된 명령에 따라 Twist 메시지를 생성 

Twist 메시지란 ? ) ROS 에서 로봇의 속도를 표현하는데 사용되는 표준 메시지 타입. 
 LInear (선속도)
 Angular(각속도) 
Turtlesim 에서는 주로 linear.x (전진, 후진 속도), angular.z (회전 속도) 만 사용. 

     

7. Turtlesim 컨트롤

    :  Twist 메시지를 토픽에 발행 

       노드가 메시지를 수신하여 거북이를 동작하게 함

 

Turtlesim 실행

 

실행한 turtlesim 화면