이 저장소에는 로봇 제어에서 생성적 AI 방법을 활용하기 위한 실험적인 개인 정보 보호 설정이 포함되어 있습니다. 여기에 제시된 솔루션을 사용하면 사용자는 카메라로 관찰되는 개방형 환경에서 로봇 청소기가 실행할 수 있는 계획으로 변환되는 작업을 음성으로 자유롭게 정의할 수 있습니다.
여기에 제시된 방법의 근본적인 장점은 다음과 같습니다.
이 시스템은 현대 AI 도구가 로봇 제어 솔루션의 개발 시간을 크게 단축할 수 있다는 학습 연습 및 개념 증명으로 3일간의 해커톤을 통해 개발되었습니다.
이 저장소의 모든 기능을 사용하려면 다음이 필요합니다.
시작하려면 다음 단계를 따르세요.
requirements.txt
의 요구 사항을 Python 환경에 설치합니다(Python 3.11로 테스트).src/config.template.toml
파일의 이름을 config.toml
로 바꿉니다. 아래의 모든 단계에서 획득한 자격 증명을 config.toml
에 삽입하세요.python-roborock
라이브러리 문서에서 이 작업을 수행하는 방법에 대해 자세히 알아볼 수 있습니다.src/run.py
실행하여 워크플로를 실행합니다. 이 저장소가 수행하는 작업과 요소가 상호 작용하는 방식을 이해하는 가장 좋은 방법은 아키텍처 다이어그램을 사용하는 것입니다.
위에서 설명한 대로 run.py
파일을 실행하면 다음과 같은 일이 발생하고 어떻게 작동합니다.
시스템은 오디오 메시지로 사용자에게 인사하고 사용자가 원하는 작업을 시스템에 알려줄 것으로 기대합니다. 예를 들어, 사용자는 로봇이 노란색 의자에 앉아 있는 사람에게서 커피를 집어 검은색 소파에 앉아 있는 다른 사람에게 전달하기를 원할 수 있습니다. 그런 다음 시스템은 이러한 작업을 실행하기 위한 계획을 만듭니다.
사용자가 원하는 것을 어떻게 달성할 수 있는지 시스템이 이해하려면 무엇이 필요합니까? 시스템은 해당 환경과 이 환경에서 실행될 수 있는 작업을 인식해야 합니다. 여기서는 객체 감지 기능이 있는 컴퓨터 비전 모델을 사용하여 환경에 대한 정보를 시스템에 제공합니다. 진공 청소기 자체는 3가지 간단한 작업, 즉 앞으로 이동, 회전, 아무것도 하지 않을 수 있습니다. 환경의 또 다른 작업은 사용자가 특정 작업을 수행하기를 기다리는 것입니다.
사용자 측의 혼란을 피하기 위해서는 AI가 환경을 어떻게 인식하는지 사용자가 아는 것이 중요합니다. 예를 들어, 컴퓨터 비전 모델에서 객체를 인식하지 못하는 경우 AI는 해당 객체를 계획에 포함할 수 없습니다. 모델 인식과 관련하여 불확실성이 있다는 점을 사용자가 인식하는 것도 중요합니다. 설명 프롬프트가 포함된 OpenAI의 GPT-4o 대형 언어 모델을 사용하여 시스템은 환경에 대한 설명을 제시하고 사용자에게 시스템에서 원하는 작업을 묻기 직전에 이를 읽어줍니다.
환경 정보와 원하는 작업에 대한 사용자 입력이 주어지면 시스템은 계획을 세울 수 있습니다. 여기서 우리는 LLM에게 사용자의 입력과 환경에 대한 설명을 바탕으로 계획을 세우도록 요청합니다. controller
디렉터리에서 프롬프트 템플릿을 찾을 수 있습니다. 여기서 흥미로운 점은 LLM이 컴퓨터 비전 모델의 출력에서 생성된 두 개의 테이블을 통해서만 환경을 인식한다는 것입니다. 예는 다음과 같습니다.
Item locations:
| id | label | position | confidence | color_rgb |
|-----:|:-------------|:----------------|-------------:|:----------------|
| 0 | robot vacuum | (122.0, 140.0) | 0.23 | [205, 206, 210] |
| 1 | blanket | (1697.0, 923.0) | 0.59 | [60, 72, 90] |
| 2 | chair | (532.5, 210.0) | 0.39 | [177, 177, 171] |
| 3 | chair | (160.0, 521.5) | 0.24 | [99, 99, 98] |
| 4 | book | (1216.5, 601.0) | 0.2 | [137, 141, 155] |
Distances:
| id | 0 | 1 | 2 | 3 | 4 |
|-----:|-----:|-----:|-----:|-----:|-----:|
| 0 | 0 | 1758 | 416 | 383 | 1187 |
| 1 | 1758 | 0 | 1365 | 1588 | 578 |
| 2 | 416 | 1365 | 0 | 485 | 787 |
| 3 | 383 | 1588 | 485 | 0 | 1059 |
| 4 | 1187 | 578 | 787 | 1059 | 0 |
LLM이 계획 프롬프트를 처리하면 추론과 계획이라는 두 가지 항목이 출력됩니다. 시스템이 계획 실행을 진행하기 전에 계획이 사용자가 요청한 것과 일치하는지 확인하기 위해 설명 프롬프트를 사용하여 계획에 대한 간단한 요약을 생성합니다. 이는 실제 개방형 물리적 환경에서 사람들이 AI의 행동으로 인해 잠재적으로 피해를 입을 수 있다는 관점에서 운영하는 인간 참여형(Human-In-The-Loop) 접근 방식의 정신입니다. AI가 스스로 생각해낸 계획을 실행하기 전에 피드백을 제공합니다.
사용자가 확인하면 시스템은 계획 실행을 진행합니다. LLM이 생성한 계획은 다음과 같습니다.
[
{ "action" : " MOVE " , "location" : [ 1216.5 , 601.0 ]},
{ "action" : " WAIT_UNTIL " , "task_fulfilled" : " Please place the book on the robot vacuum so that the robot can transport it to the chair. " },
{ "action" : " MOVE " , "location" : [ 532.5 , 210.0 ]},
{ "action" : " END " }
]
executor
사용하여 시스템은 계획을 단계별로 실행합니다. 필요한 설정 시간을 줄이기 위해 로봇 제어는 간단하고 부정확하지만 효과적인 알고리즘을 따릅니다.
컴퓨터 비전 시스템은 로봇의 위치를 평가합니다. navigator
모듈의 코드를 통해 대상 위치와 마지막으로 알려진 위치를 기준으로 한 로봇 위치를 분석하고 비교합니다. 이 접근 방식은 카메라의 위치와 렌즈 왜곡이 고려되지 않기 때문에 불완전합니다. 이 접근 방식을 통해 측정된 각도는 정확하지 않습니다. 그러나 시스템이 반복적이기 때문에 오류가 자주 보상됩니다. 그러나 이것이 속도를 희생한다는 점은 주목할 가치가 있습니다. 이미지를 분석하고, 경로를 계산하고, 로봇에게 다음 단계를 알리는 데 시간이 걸리기 때문에 시스템이 느립니다.
로봇이 목표 위치에 도달하면 실행기는 계획의 다음 단계를 진행합니다. 사용자 입력이 포함된 작업의 경우 실행 프로그램은 텍스트 음성 변환 및 음성 텍스트 변환 기능을 사용하여 사용자와 상호 작용합니다.
이 시스템에서는 주로 로컬 컴퓨터나 네트워크에서 실행되는 서비스를 사용합니다. 예외는 GPT-4o입니다. 우리는 인터넷을 통해 OpenAI 모델에 텍스트 데이터를 보냅니다. 텍스트 데이터에는 기록된 사용자 입력과 인식된 개체 테이블이 포함됩니다. 여기서 GPT-4o를 사용하는 유일한 이유는 이것이 해커톤 당시 사용할 수 있는 최고의 모델 중 하나이기 때문입니다. 또한 로컬 LLM을 실행한 다음 인터넷에 연결하지 않고도 완전히 작업할 수 있어 전체 작업 흐름에서 개인 정보를 보호할 수 있습니다. 운영.
이 저장소에 포함된 컴퓨터 비전 모델은 chair, book, candle, blanket, vase, bulb, robot vacuum, mug, glass, human
이라는 프롬프트를 사용하여 HuggingFace 공간에서 YOLO-World 모델로 생성되었습니다. 추가 개체를 인식하려면 프롬프트를 조정하고 이 공간을 통해 ONNX 모델을 다운로드하세요. 그런 다음 src/yoloworld/models/rev0
디렉터리에서 모델을 바꿀 수 있습니다.
모델을 올바르게 추출하려면 모델을 내보내기 전에 HuggingFace 공간에서 최대 상자 수 및 점수 임계값 매개변수를 수동으로 변경해야 합니다.
YOLO-World 웹사이트에서 비전 언어 모델링의 최근 발전을 바탕으로 구축된 흥미로운 YOLO-World 모델에 대해 자세히 알아볼 수 있습니다.
이 프로젝트는 MIT 라이선스에 따라 게시됩니다.
이 저장소는 적극적으로 모니터링되지 않으며 확장할 의도도 없습니다. 이는 무엇보다도 학습 활동입니다. 하지만 영감을 얻으셨다면 GitHub 이슈를 열거나 끌어오기 요청을 통해 프로젝트에 자유롭게 기여해 주세요.