ROS Agents é uma estrutura totalmente carregada para a criação de agentes interativos incorporados que podem compreender, lembrar e agir de acordo com informações contextuais de seu ambiente.
Confira as instruções de instalação
Comece com o Guia de início rápido
Familiarize-se com os conceitos básicos
Mergulhe direto nos exemplos
ROS Agents foi desenvolvido para ser usado com ROS2. Todas as distribuições ROS a partir do Iron são suportadas. Instale o ROS2 seguindo as instruções do site oficial.
O núcleo dos Agentes ROS é agnóstico em modelar plataformas de atendimento. Atualmente suporta Ollama e RoboML. Instale qualquer um deles seguindo as instruções fornecidas pelos respectivos projetos. O suporte para novas plataformas será adicionado continuamente. Se você gostaria de apoiar uma plataforma específica, abra uma edição/PR.
Pacotes binários para Ubuntu serão lançados em breve. Confira este espaço.
Instale dependências python
pip install pillow numpy opencv-python-headless ' attrs>=23.2.0 ' jinja2 httpx setproctitle msgpack msgpack-numpy numpy-quaternion
Baixar ROS Sugar
git clone https://github.com/automatika-robotics/ros-sugar
git clone https://github.com/automatika-robotics/ros-agents.git
cd ..
colcon build
source install/setup.bash
python your_script.py
Ao contrário de outros pacotes ROS, ROS Agents fornece uma maneira pitônica pura de descrever o gráfico do nó usando ROS Sugar. Copie o código a seguir em um script python e execute-o.
from agents . clients . ollama import OllamaClient
from agents . components import MLLM
from agents . models import Llava
from agents . ros import Topic , Launcher
# Define input and output topics (pay attention to msg_type)
text0 = Topic ( name = "text0" , msg_type = "String" )
image0 = Topic ( name = "image_raw" , msg_type = "Image" )
text1 = Topic ( name = "text1" , msg_type = "String" )
# Define a model client (working with Ollama in this case)
llava = Llava ( name = "llava" )
llava_client = OllamaClient ( llava )
# Define an MLLM component (A component represents a node with a particular functionality)
mllm = MLLM (
inputs = [ text0 , image0 ],
outputs = [ text1 ],
model_client = llava_client ,
trigger = [ text0 ],
component_name = "vqa"
)
# Additional prompt settings
mllm . set_topic_prompt ( text0 , template = """You are an amazing and funny robot.
Answer the following about this image: {{ text0 }}"""
)
# Launch the component
launcher = Launcher ()
launcher . add_pkg ( components = [ mllm ])
launcher . bringup ()
E assim temos um agente que pode responder perguntas como 'O que você vê?' . Para interagir com este agente, ROS Agents inclui um pequeno cliente web. Confira o Guia de início rápido para saber mais sobre como componentes e modelos funcionam juntos.
O exemplo de início rápido acima é apenas uma amostra do que é possível com os Agentes ROS. Nos Agentes ROS podemos criar gráficos de componentes arbitrariamente sofisticados. E além disso nosso sistema pode ser configurado para até mesmo mudar ou se reconfigurar com base em eventos internos ou externos ao sistema. Confira o código do seguinte agente aqui.
O código nesta distribuição é Copyright (c) 2024 Automatika Robotics, salvo indicação explícita em contrário.
ROS Agents é disponibilizado sob a licença do MIT. Detalhes podem ser encontrados no arquivo LICENSE.
ROS Agents foi desenvolvido em colaboração entre Automatika Robotics e Inria. Contribuições da comunidade são muito bem-vindas.