Follow these steps to set up the project:
- Clone the repository:
git clone https://github.com/adityavkulkarni/2D_dynamic_object_grasping.git cd 2D_dynamic_object_grasping
- Move the contents of src.zip to your_workspace/src and make the workspace:
catkin_make
- Run the below commands in 3 separate terminals:
- For simple table:
-For conveyor belt:roslaunch fetch_gazebo simple_grasp.launch roslaunch fetch_moveit_config move_group.launch python3 grasp.py
roslaunch demo_world demo.launch roslaunch fetch_moveit_config move_group.launch python3 grasp.py
This project focuses on developing a control system for a manipulator robot to accurately grasp objects moving along deterministic paths. By predicting and adapting to their future poses, the system aims to enhance the efficiency and accuracy of robotic grasping tasks.
- Develop a robotic system capable of intercepting and grasping moving objects.
- Predict object trajectories using Recursive Least Squares (RLS).
- Integrate with tools like ROS, MoveIt, and TRAC-IK for inverse kinematics and grasp execution.
The project has practical implications in industries that rely on automated systems, such as:
- Conveyor belt sorting.
- Mobile manipulation tasks.
The simulation environment includes:
- Gazebo: Used for simulating the robot and its environment.
- Components:
- Fetch robot.
- Conveyor belt or table setup.
- Python scripts for simulating cube motion.
Two approaches were used to simulate the cube's uniform motion:
- Using a Gazebo table setup with Python scripts to move the cube.
- Using the Gazebo conveyor belt plugin with adjustable speed via ROS services.
- High-frequency vertical oscillations of the cube during horizontal motion simulation in Gazebo.
- Cube retaining velocity after being grasped, leading to inaccuracies in simulations.
- Recursive Least Squares (RLS):
- Predicts future positions of moving objects based on real-time data.
- Continuously refines parameters to minimize prediction error: [ e(t) = y(t) - w^T x(t) ]
- Updates predictions using a gain vector ( K(t) ), ensuring efficient adaptation.
- Initialization and Prediction:
- Record current time and predict future positions using RLS until convergence.
- Time Calculation:
- Define timesteps and calculate the time needed for the gripper to reach the object.
- Trajectory Sampling and IK Solution:
- Randomly sample points from predicted trajectories and compute Inverse Kinematics (IK) solutions using multi-threading.
- Execution:
- Select the first feasible step, execute the IK solution, and deploy the gripper to grasp the object.
- The process involves two main steps:
- Positioning the robot above the intercept point.
- Performing a vertical descent to grasp the object.
- Uses MoveIt for collision-free path generation and time estimation.
- The system achieved a grasp success rate of 80% for objects moving along deterministic paths.
- Identified challenges include handling non-linear paths and varying velocities, which remain areas for future research.
- Enhanced Perception:
- Improve detection and prediction capabilities in dynamic environments.
- Non-linear Path Exploration:
- Extend current methods to handle circular, sinusoidal, or other complex trajectories.
- Variable Velocity Handling:
- Incorporate algorithms that adapt to non-linear object velocities.
- Reinforcement Learning Integration:
- Use reinforcement learning techniques to improve adaptability in unpredictable environments.
- ROS: For robot control and simulation integration.
- MoveIt: For trajectory planning and collision avoidance.
- TRAC-IK: For efficient inverse kinematics calculations.
- Gazebo: Simulation environment with conveyor belt plugin or table setups.
This project was developed by Group 8 as part of CS 6301:
- Saurav Dosi
- Aditya Kulkarni
- Feroz Hatha