This project is designed to provide the following features and capabilities:
-
Operate Entirely in Headless Mode
The system is built to function without requiring a graphical user interface, including the server. -
Develop a Custom CLI-Friendly Client
A custom command-line interface (CLI) client. Key functionalities include:- Controlling the spider’s behavior.
- Monitoring system status and logs.
- Retrieving or managing scene recording data.
-
ROS2 for Communication and Control
ROS2 (Robot Operating System 2) is the backbone of the system’s communication. It provides support for:- Node-Based Architecture: The spider, obstacle detection, and data recording each run as independent ROS2 nodes.
- Inter-Node Communication: Nodes use ROS2 topics and services to share data, such as movement commands, obstacle sensor readings, and scene recording updates.
-
Simulate Spider Movements with Obstacle Avoidance and Scene Recording
The focus is to simulate a spider capable of dynamic movement and environment interaction:- Random Walk: A pseudo-random algorithm guides the spider’s movements.
- Obstacle Avoidance: The spider identifies and navigate around obstacles.
- Scene Recording: The system captures and stores environmental data, movement paths, and interaction details using ROS2’s data management tools. This information is used for machine learning.
-
Expand Compatibility to Other Hexapod Robots
While initially focused on the Freenove Hexapod, the goal is to build an adaptable framework that can work with other hexapod robots as well.
- In the root of the project, run the setup script:
python setup.py
- Create a virtual envirnment:
python -m venv venv
- Activate the virtual enviornment:
source venv/bin/activate
- Install the necessary dependencies:
pip install -r requirements.txt
-
If sudo elevation is needed, run:
sudo /path/to/Hexapod-AI/venv/bin/python script.py
This will use the virtual environment's Python interpreter.
-
Follow this tutorial for setup and testing.
-
To calibrate the spider, download the appropriate client from the original repository. It is compatible with the server.