Pick and Place Robotic Arm


This is a robotic arm that I worked on for my capstone class at California State University Long Beach to round out my mechanical engineering degree. The goal of this project was to design a custom manipulator, then program a robotic arm to control a manipulator to screw bolts into a threaded bolt hole. Furthermore, the intention was to have the robotic arm use a camera (we settled on Xbox Kinect) to recognize bolt holes in the environment using computer vision and autonomously place the bolt into the hole. Because this was a very ambitious project, I have made several very-in depth posts detailing my progress on this project. If you are interested in more detail, check out my latest update on this project, or check out all my posts related to this project to see a chronological evolution of how this project came together. This post is intended to be more of a high-level summary of the final state of this project.

Below I have posted a video displaying the culmination of over a years worth of work that was put into this project between my partner and I. As the primary programmer for this project, I lead and implemented most of the software demonstrated in this video.

List of Skills And Software Learned:

  1. Robot Operating System 1 Noetic (ROS)
    • SolidWorks to Universal Robot Descriptor Format (URDF) conversion
    • MoveIt (ROS Motion Planning Framework largely for robotic arms)
    • General ROS concepts (writing nodes, services, etc)
  2. Python 3
  3. OpenCV

While the final goal of this project was to get a robot to pick and place bolts into holes fully autonomously using computer vision, due to the extremely ambitious nature of this project I fell short of having the time to make the robot fully autonomous. However, while I had many of the pieces in place to make the robot autonomous, I needed more time to tie everything together in Robot Operating System(ROS) . The next big step was to use ROS’s extrinsic calibration procedure to tie the Xbox Kinect Camera coordinate system to the robot arm coordinate system.

Below I have included the final report my partner and I came up with, where we go into excruciating detail on the mechanical and software design of the robot. As previously mentioned, as the programming lead, I wrote most of the sections on software.

Final Report (Lots of Technical Detail)

My SolidWorks to URDF Plugin YouTube Tutorials

One thing I repeatedly came across while working on this project was the extreme lack of documentation in a lot of tools related to ROS. Namely, there was a severe lack of updated documentation regrading how to convert a SolidWorks model into a URDF file that ROS could understand using the SW2URDF plugin. After a lot of trial and error, I had worked out a good process for using the SW2URDF plugin to create and merge both a visual and collision URDF file to be brought into ROS and MoveIt. I decided to create the below three part YouTube tutorial series in order to document my knowledge and hopefully help people out who were running into the same roadblocks and headaches I was.


This concludes the progess on my capstone robotic arm project! Overall, I am extremely proud of the final results of this project. My partner and I put a crazy amount of work into this project over the better part of a year, and I think the results are evident of that. In this project, I gained a much deeper understanding of Robot Operating System, learned the basics of OpenCV, improved my Python skills, and much more. By the end of this project, I had a robotic arm capable of unscrewing and screwing bolts into bolt holes in a pre-programmed fashioned, although the software architecture was built out in such a way, that I believe with more time, I would have been able to make the robot fully autonomously place bolts into bolt holes. Regardless, I am very pleased with the final product.

Leave a Comment

Your email address will not be published. Required fields are marked *