ROS Agents es un marco completamente cargado para crear agentes incorporados interactivos que pueden comprender, recordar y actuar sobre la información contextual de su entorno.
Instrucciones de instalación de caja
Comience con la Guía de inicio rápido
Familiarízate con los conceptos básicos
Sumérgete con ejemplos
ROS Agents está diseñado para usarse con ROS2. Se admiten todas las distribuciones de ROS a partir de Iron . Instale ROS2 siguiendo las instrucciones en el sitio oficial.
El núcleo de ROS Agents es independiente de las plataformas de servicio de modelos. Actualmente es compatible con Ollama y RoboML. Instale cualquiera de estos siguiendo las instrucciones proporcionadas por los respectivos proyectos. Se agregará continuamente soporte para nuevas plataformas. Si desea apoyar una plataforma en particular, abra un problema/PR.
Los paquetes binarios para Ubuntu se lanzarán pronto. Consulta este espacio.
Instalar dependencias de Python
pip install pillow numpy opencv-python-headless ' attrs>=23.2.0 ' jinja2 httpx setproctitle msgpack msgpack-numpy numpy-quaternion
Descargar ROS Azúcar
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
A diferencia de otros paquetes ROS, ROS Agents proporciona una forma pitónica pura de describir el gráfico de nodos utilizando ROS Sugar. Copie el siguiente código en un script de Python y ejecútelo.
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 ()
Y así, tenemos un agente que puede responder preguntas como "¿Qué ves?" . Para interactuar con este agente, ROS Agents incluye un pequeño cliente web. Consulte la Guía de inicio rápido para obtener más información sobre cómo funcionan juntos los componentes y modelos.
El ejemplo de inicio rápido anterior es solo una muestra de lo que es posible con los agentes ROS. En ROS Agents podemos crear gráficos de componentes arbitrariamente sofisticados. Y además nuestro sistema se puede configurar para incluso cambiar o reconfigurarse en función de eventos internos o externos al sistema. Consulte el código del siguiente agente aquí.
El código de esta distribución tiene Copyright (c) 2024 Automatika Robotics a menos que se indique explícitamente lo contrario.
ROS Agents está disponible bajo la licencia MIT. Los detalles se pueden encontrar en el archivo LICENCIA.
ROS Agents ha sido desarrollado en colaboración entre Automatika Robotics e Inria. Las contribuciones de la comunidad son bienvenidas.