ROSGPT is a framework that connects Large Language Models (LLMs) with Robot Operating System (ROS) to enable natural language control of robotic systems.
The project consists of several components:
- ROSGPT Framework: Core framework that provides LLM integration with ROS tools and capabilities
- TurtleSim Agent: A demonstration agent that controls a turtle in the ROS TurtleSim environment
- PincherX-100 Agent: An agent that controls a PincherX-100 robotic arm
- Docker
- Docker Compose
- X11 for GUI (not needed for headless mode)
- Groq API key
-
Clone this repository:
git clone https://github.com/uefroboticsclub/rosgpt.git cd rosgpt
-
Copy the environment example file and set your Groq API key:
cp .env.example .env # Edit .env to add your Groq API key and other settings
-
Choose which agent to run:
./demo.sh
This will set up the Docker environment for the TurtleSim. Once inside the container, build and start the turtle agent:
start
You can enable streaming mode by passing the streaming argument:
start streaming:=true
./pincherx_demo.sh
This will start the Docker container for the PincherX-100 and connect you to the agent.
You can customize the agent behavior by setting these variables in your .env
file:
GROQ_API_KEY
: Your API key for GroqGROQ_MODEL
: The model to use (default: "mixtral-8x7b-32768")LLM_TEMPERATURE
: Temperature for model sampling (default: 0.7)LLM_MAX_TOKENS
: Maximum tokens for model response (default: 8192)
Both agents support the following basic commands:
help
: Display help and usage informationexamples
: Show and select from example commandsclear
: Clear the chat historyexit
: Exit the agent
The TurtleSim agent can understand natural language instructions to:
- Draw shapes
- Move the turtle in specific directions
- Change colors
- Teleport the turtle to specific coordinates
The PincherX-100 agent has these additional commands:
home
: Move the arm to home positionsleep
: Move the arm to sleep position
The agent can understand natural language instructions to:
- Move to specific joint positions
- Move the end-effector to specific poses
- Open and close the gripper
- Pick and place objects
- Execute complex trajectories
The project uses two separate Docker environments:
- TurtleSim: Uses ROS1 (Noetic) for the TurtleSim agent
- PincherX-100: Uses ROS2 (Humble) for the PincherX-100 agent
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.