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

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

KRBIL 2024. 7. 21. 17:10

이번 편에서는 다양한 자연어 명령을 입력해보고서 ROS-LLM 패키지의 코드와 process를 분석하고자 한다. 

 

 

8 자 모양으로 움직여. 

 

아쉽게도 turtlebot은 8자 모양으로 움직이지 않고, 그냥 원을 만들며 빙글빙글 돈다. 

 

move forward

 

느릿느릿하게 앞으로 나아간다. 

 

 reset the turtle

 

reset하지 않고 그냥 제자리에 있는다. 

 

move to the center of the map 

 

갑자기 급발진하며 벽에 부딪쳤다. 

 

 

Go back to where turtle came from 

 

 

그래도 왔던 곳으로 되돌아가는 경향을 보이기도 하지만 안되는 경우도 있음. 

 

 

move forward for 1~5 seconds 

5초간 움직이라하면 "duration" : 5 가 입력된다.

 

이러한 명령어를 주고서 move backward라고 하자 이러한 response가 왔다. 

 

 

몇초간 움직일거냐고 질문이 오며, turtlebot이 움직이지 않았다.

 

 

원래 굉장히 많고 다양하게 테스트를 해봐야 하겠지만, 논문 구현하는 것에 목적이 있으므로 간단하게 테스트하였다. 

 

 

 

테스트를 하면서 얻은 결과 

 

1. User friendly하지 않다. 

 

명령을 입력하는 방식이 불친절하다 이는 Graphic User Interface 의 필요성을 나타내며 gazebo와 LLM+gui를 결합한 논문이 있으므로 이를 참고할 것. 

 

ROS-LLM 패키지에서는 원래 openai whisper 를 활용하여 보이스를 통해 컨트롤 하게끔 설계되어 있지만, 키보드 타이핑으로 turtlesim을 컨트롤하고자 하며 

 

2. Task 에 대한 성공, 실패 여부에 대한 feedback이 없다. 

 

 

3. 다양한 센서와의 조합이 필요하다. 

 

TODO) GAZEBO를 활용하여 광학, LIDAR 센서와의 결합을 통해 LLM 뿐 아니라 VLM을 활용하여 Control 하는 실습을 해보아야 할 것 같다. 

 

4. 연속적인 Task를 정확하게 수행할 수 있는 방법에 대해 강구해야할 것. 

 

  • go straight and turn left and go straight again 
  • go straight and if you hit the wall turn right 180 degrees and go straight

위의 명령어 입력함. 

 

연속적인 task를 주었을 때, 무언가 동작하긴 하지만 정확도가 매우 낮으며, logic 오류가 생기기도 함. 

앞으로 갔다가 turn right 명령어 입력 -> 앞으로 갔다가 회전을 하는 것이 아닌 원을 그림.

 

벽에 부딪혔다는 것을 인지하기 위해선, 지속적으로 robot의 position과 orientation을 관측해야하지만, 이 플랫폼에서는 실시간 측정 데이터가 없다고 함. 그리고 그러한 데이터를 얻기 위해 laser scan data가 필요하다고 gpt에서 답변이 옴. 

 

 

 

 아무래도 정확성을 높였다는 논문인 The Conversation is the Command: Interacting with Real-World Autonomous Robot Through Natural Language (Nwankwo et al. 2024) 와

연속적인 sequence 명령을 수행하는 논문을 찾아서 읽어봐야할 것 같음  

 

 

 

 

 TODO) 코드 분석 후 gpt api와의 상호작용에 대한 비효율적인 프로세스가 있는지 확인해야할 것 같다.