This project was a final course project for MFG 598 Engineering Computing with Python. I completed this during my final semester at Arizona State University. The goal was to create a simulated robot manipulator to autonomously pick and place colored cubes.
Since the original project folder size is over 389 MB, I decided to only include the most important files that I wrote for the project. Please watch the following video showing an overview of the project. The slideshow used in the video is also included in this repo. This is the link to the Universal Robot & RGB-D sensor files.
The following is the order of the files executed when running the program (which is demonstrated in the video above):
- The graphical user interface (GUI)
- gui.py
- gui.kv
- "Start Program" Button in GUI
- ur5e.launch
- "Pick Red/Green/Orange" Buttons in GUI
- planning_execution.py (with color passed as an argument)
- "Ready Robot" Button in GUI
- ready_robot.py
This folder holds all the files that describe the objects (Robot, camera, boxes, bins, etc.) used in the simulation. All the files are written in XML.
MoveIt is a ROS package that focuses on controlling robot manipulators. This folder holds all of the files that are automatically generated by the MoveIt package when a robot manipulator is defined. I did not write any of the files in this folder, but they are used and crucial for the program to run.
This folder holds all of the files that deal with motion planning. It includes the GUI files, the scripts and service files for finding the object positions in the scene, and the files for controlling the robot manipulator's movements. These are the main files for the entire program, and almost all of them are written in Python.
The following are resources that I used while creating this program:
- OpenCV center of contour
- Example files from The Construct Course
- ROS Tutorial 8: Writing a ROS Service Client
- Roslaunch API
- Coordinate Transformation Example
- Using ROS TF to transform sensor data
- Use MoveIt! to Pick an Object
- Python GUI's With Kivy Playlist
- Custom ROS GUI Playlist
- How to Create and Execute ROS Launch Files
- Writing a Simple Publisher and Subscriber (Python)
- UR5 Robot Simulation with Gazebo and Moveit
- MoveIt! Tutorials
- How to create a gazebo model using SDF
- Make a model in Gazebo
- Converting between ROS images and OpenCV images (Python)
- MoveGroupCommander Class Reference
- Get Objects from Gazebo
- Moveit Pick Place Example
- Moveit PlanningSceneInterface Question
- Robotics Casual Tutorial