ROS Agents est un cadre complet permettant de créer des agents incarnés interactifs capables de comprendre, de mémoriser et d'agir en fonction des informations contextuelles de leur environnement.
Instructions d'installation de la caisse
Commencez avec le guide de démarrage rapide
Familiarisez-vous avec les concepts de base
Plongez directement avec des exemples
ROS Agents est conçu pour être utilisé avec ROS2. Toutes les distributions ROS à partir d' Iron sont prises en charge. Installez ROS2 en suivant les instructions sur le site officiel.
Le cœur des agents ROS est indépendant de la modélisation des plates-formes de service. Il prend actuellement en charge Ollama et RoboML. Veuillez installer l'un ou l'autre en suivant les instructions fournies par les projets respectifs. La prise en charge de nouvelles plates-formes sera continuellement ajoutée. Si vous souhaitez prendre en charge une plate-forme particulière, veuillez ouvrir un problème/PR.
Les packages binaires pour Ubuntu seront bientôt publiés. Vérifiez cet espace.
Installer les dépendances Python
pip install pillow numpy opencv-python-headless ' attrs>=23.2.0 ' jinja2 httpx setproctitle msgpack msgpack-numpy numpy-quaternion
Télécharger ROS Sucre
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
Contrairement aux autres packages ROS, ROS Agents fournit une manière purement pythonique de décrire le graphe de nœuds à l'aide de ROS Sugar. Copiez le code suivant dans un script python et exécutez-le.
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 ()
Et juste comme ça, nous avons un agent qui peut répondre à des questions telles que « Que voyez-vous ? » . Pour interagir avec cet agent, ROS Agents inclut un petit client Web. Consultez le Guide de démarrage rapide pour en savoir plus sur la manière dont les composants et les modèles fonctionnent ensemble.
L'exemple de démarrage rapide ci-dessus n'est qu'un amuse-bouche de ce qui est possible avec les agents ROS. Dans ROS Agents, nous pouvons créer des graphiques de composants arbitrairement sophistiqués. De plus, notre système peut être configuré pour même changer ou se reconfigurer en fonction d'événements internes ou externes au système. Consultez le code de l’agent suivant ici.
Le code de cette distribution est Copyright (c) 2024 Automatika Robotics, sauf indication contraire explicite.
ROS Agents est mis à disposition sous la licence MIT. Les détails peuvent être trouvés dans le fichier LICENSE.
ROS Agents a été développé en collaboration entre Automatika Robotics et Inria. Les contributions de la communauté sont les bienvenues.