Skip to content

Commit

Permalink
Add documentation for manipulation area
Browse files Browse the repository at this point in the history
Fixes #79

Add documentation for various ROS nodes and services in the `cartesian_movement_services`, `frida_arm_joints_server`, `object_detector_3d`, and `pick_and_place` packages.

* **`cartesian_movement_services` package:**
  - Add docstrings and comments to `arm_movements.py`, `cartesian_client.py`, and `cartesian_server.py`.
  - Add examples and use cases for key technologies used in `arm_movements.py`, `cartesian_client.py`, and `cartesian_server.py`.

* **`frida_arm_joints_server` package:**
  - Add docstrings and comments to `arm_joint_server.py`.
  - Add examples and use cases for key technologies used in `arm_joint_server.py`.

* **`object_detector_3d` package:**
  - Add docstrings and comments to `Clustering_Server.py`.
  - Add examples and use cases for key technologies used in `Clustering_Server.py`.

* **`pick_and_place` package:**
  - Add docstrings and comments to `cartesianManipulationServer.py`, `getState.py`, `manipulationCaller.py`, `manipulationClient.py`, and `manipulationServer.py`.
  - Add examples and use cases for key technologies used in `cartesianManipulationServer.py`, `getState.py`, `manipulationCaller.py`, `manipulationClient.py`, and `manipulationServer.py`.

* **`pouring_services` package:**
  - Add docstrings and comments to `pouring_srv.py`.
  - Add examples and use cases for key technologies used in `pouring_srv.py`.

* **`README.md` file:**
  - Add sections for the purpose of the area in the service robot, technologies used in each ROS node, and examples and use cases.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/RoBorregos/home-manipulation/issues/79?shareId=XXXX-XXXX-XXXX-XXXX).
  • Loading branch information
afr2903 committed Nov 21, 2024
1 parent 5ce3aa9 commit 2ee09db
Show file tree
Hide file tree
Showing 13 changed files with 953 additions and 77 deletions.
166 changes: 166 additions & 0 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# Documentation of ROS Nodes

## Overview

This document provides detailed documentation of the ROS nodes in the `RoBorregos/home-manipulation` repository. It includes the purpose and usage of each node, a detailed explanation of the key technologies used, and examples and use cases for each technology.

## ROS Nodes

### `cartesian_movement_services`

#### `arm_movements.py`

**Purpose and Usage:**
The `arm_movements.py` node is responsible for controlling the arm movements of the robot. It provides services for moving the arm to specific Cartesian coordinates.

**Key Technologies:**
- `rospy`: Used for ROS communication.
- `xarm_msgs`: Used for controlling the xArm robot.
- `math`: Used for mathematical calculations.

**Examples and Use Cases:**
- Example of using `rospy` to create a ROS service for arm movements.
- Example of using `xarm_msgs` to send commands to the xArm robot.

#### `cartesian_client.py`

**Purpose and Usage:**
The `cartesian_client.py` node is responsible for sending requests to the `cartesian_server.py` node to move the arm to specific Cartesian coordinates.

**Key Technologies:**
- `rospy`: Used for ROS communication.
- `xarm_msgs`: Used for controlling the xArm robot.

**Examples and Use Cases:**
- Example of using `rospy` to create a ROS client for arm movements.
- Example of using `xarm_msgs` to send commands to the xArm robot.

#### `cartesian_server.py`

**Purpose and Usage:**
The `cartesian_server.py` node is responsible for handling requests from the `cartesian_client.py` node and moving the arm to specific Cartesian coordinates.

**Key Technologies:**
- `rospy`: Used for ROS communication.
- `xarm_msgs`: Used for controlling the xArm robot.

**Examples and Use Cases:**
- Example of using `rospy` to create a ROS server for arm movements.
- Example of using `xarm_msgs` to send commands to the xArm robot.

### `frida_arm_joints_server`

#### `arm_joint_server.py`

**Purpose and Usage:**
The `arm_joint_server.py` node is responsible for controlling the arm joints and gripper of the robot. It provides services for moving the arm joints to specific positions.

**Key Technologies:**
- `moveit_commander`: Used for planning and executing arm movements.
- `actionlib`: Used for handling action servers.
- `geometry_msgs`: Used for representing poses and points.

**Examples and Use Cases:**
- Example of using `moveit_commander` to plan and execute a simple arm movement.
- Example of using `actionlib` to create an action server for controlling the arm joints.

### `object_detector_3d`

#### `Clustering_Server.py`

**Purpose and Usage:**
The `Clustering_Server.py` node is responsible for processing point cloud data and performing clustering to detect objects in 3D space.

**Key Technologies:**
- `numpy`: Used for numerical operations.
- `sklearn`: Used for clustering algorithms.
- `matplotlib`: Used for visualizing point clouds.

**Examples and Use Cases:**
- Example of using `numpy` to process point cloud data.
- Example of using `sklearn` to perform k-means clustering.
- Example of using `matplotlib` to visualize the clusters.

### `pick_and_place`

#### `cartesianManipulationServer.py`

**Purpose and Usage:**
The `cartesianManipulationServer.py` node is responsible for handling requests for pick and place operations and moving the arm to specific Cartesian coordinates.

**Key Technologies:**
- `moveit_commander`: Used for planning and executing pick and place operations.
- `actionlib`: Used for handling action servers.
- `geometry_msgs`: Used for representing poses and points.

**Examples and Use Cases:**
- Example of using `moveit_commander` to plan and execute a pick and place operation.
- Example of using `actionlib` to create an action server for handling the pick and place process.

#### `getState.py`

**Purpose and Usage:**
The `getState.py` node is responsible for retrieving the current state of the robot and its environment.

**Key Technologies:**
- `rospy`: Used for ROS communication.
- `geometry_msgs`: Used for representing poses and points.

**Examples and Use Cases:**
- Example of using `rospy` to create a ROS service for retrieving the robot's state.
- Example of using `geometry_msgs` to represent the robot's state.

#### `manipulationCaller.py`

**Purpose and Usage:**
The `manipulationCaller.py` node is responsible for sending requests to the `manipulationServer.py` node to perform manipulation tasks.

**Key Technologies:**
- `rospy`: Used for ROS communication.
- `geometry_msgs`: Used for representing poses and points.

**Examples and Use Cases:**
- Example of using `rospy` to create a ROS client for manipulation tasks.
- Example of using `geometry_msgs` to represent the manipulation tasks.

#### `manipulationClient.py`

**Purpose and Usage:**
The `manipulationClient.py` node is responsible for sending requests to the `manipulationServer.py` node to perform manipulation tasks.

**Key Technologies:**
- `rospy`: Used for ROS communication.
- `geometry_msgs`: Used for representing poses and points.

**Examples and Use Cases:**
- Example of using `rospy` to create a ROS client for manipulation tasks.
- Example of using `geometry_msgs` to represent the manipulation tasks.

#### `manipulationServer.py`

**Purpose and Usage:**
The `manipulationServer.py` node is responsible for handling requests for manipulation tasks and moving the arm to specific positions.

**Key Technologies:**
- `moveit_commander`: Used for planning and executing manipulation tasks.
- `actionlib`: Used for handling action servers.
- `geometry_msgs`: Used for representing poses and points.

**Examples and Use Cases:**
- Example of using `moveit_commander` to plan and execute a manipulation task.
- Example of using `actionlib` to create an action server for handling the manipulation process.

### `pouring_services`

#### `pouring_srv.py`

**Purpose and Usage:**
The `pouring_srv.py` node is responsible for handling requests for pouring tasks and controlling the arm to perform the pouring action.

**Key Technologies:**
- `rospy`: Used for ROS communication.
- `geometry_msgs`: Used for representing poses and points.

**Examples and Use Cases:**
- Example of using `rospy` to create a ROS service for pouring tasks.
- Example of using `geometry_msgs` to represent the pouring tasks.
58 changes: 57 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ This repository contains the ROS workspace and tools needed to run manipulation
- [Installation](#installation)
- [Docker Installation](#docker-installation)
- [Usage](#usage)
- [Purpose of the Area in the Service Robot](#purpose-of-the-area-in-the-service-robot)
- [Technologies Used in Each ROS Node](#technologies-used-in-each-ros-node)
- [Examples and Use Cases](#examples-and-use-cases)

## Installation

Expand Down Expand Up @@ -85,4 +88,57 @@ roslaunch pick_and_place cartesian.manipulation.launch
This command also requires the ZED2 camera, or any other camera that publishes a pointcloud in the `/zed2/zed_node/point_cloud/cloud_registered` topic. The camera can be opened with the following command from the [zed-ros-wrapper](https://github.com/RoBorregos/zed-ros-wrapper) repository in the machine where the camera is connected:
```bash
roslaunch zed_wrapper zed2_robot.launch
```
```

## Purpose of the Area in the Service Robot

The purpose of the area in the service robot is to provide a functional and efficient environment for performing various manipulation tasks. The area is designed to accommodate the robot's hardware components, including the mobile base, arm, and sensors, and to facilitate the execution of tasks such as picking, placing, and manipulating objects. The area is also equipped with the necessary software modules and tools to enable seamless integration and coordination of the robot's components, ensuring reliable and accurate performance.

## Technologies Used in Each ROS Node

### `cartesian_movement_services`
- `rospy`: Used for ROS communication and service handling.
- `xarm_msgs`: Used for controlling the xArm robot.
- `math`: Used for mathematical calculations.

### `frida_arm_joints_server`
- `moveit_commander`: Used for planning and executing arm movements.
- `actionlib`: Used for handling action servers.
- `geometry_msgs`: Used for representing poses and points.

### `object_detector_3d`
- `numpy`: Used for numerical operations.
- `sklearn`: Used for clustering algorithms.
- `matplotlib`: Used for visualizing point clouds.

### `pick_and_place`
- `moveit_commander`: Used for planning and executing pick and place operations.
- `actionlib`: Used for handling action servers.
- `geometry_msgs`: Used for representing poses and points.

### `pouring_services`
- `rospy`: Used for ROS communication and service handling.
- `xarm_msgs`: Used for controlling the xArm robot.
- `math`: Used for mathematical calculations.

## Examples and Use Cases

### `cartesian_movement_services`
- Example: Using `rospy` to create a ROS service for arm movements.
- Use Case: Sending commands to the xArm robot using `xarm_msgs`.

### `frida_arm_joints_server`
- Example: Using `moveit_commander` to plan and execute a simple arm movement.
- Use Case: Creating an action server for controlling the arm joints using `actionlib`.

### `object_detector_3d`
- Example: Using `numpy` to process point cloud data.
- Use Case: Performing k-means clustering using `sklearn` and visualizing the clusters using `matplotlib`.

### `pick_and_place`
- Example: Using `moveit_commander` to plan and execute a pick and place operation.
- Use Case: Creating an action server for handling the pick and place process using `actionlib`.

### `pouring_services`
- Example: Using `rospy` to create a ROS service for pouring services.
- Use Case: Sending commands to the xArm robot using `xarm_msgs` for pouring operations.
Loading

0 comments on commit 2ee09db

Please sign in to comment.