For this project, forward and inverse kinematics were demonstrated on a Dofbot through the generation of paths that were calculated with the associated algorithms. In addition, by using the inverse and forward kinematics combined with path following with feedback, new, creative tasks were explored for the Dofbot. The goal for this project was to create a Dofbot that could pick and place objects with obstacle avoidance and feedback. This task was accomplished; the results are discussed in detail in this report and video and simulation demonstrations are shown as well.
The motivation behind this project was driven by the past experiences of both me and my teammate working in manufacturing/industrial environments. Both team members had worked with The Factory Amsterdam (TFA), a job shop started by RPI graduates. An interview with the members there was conducted and questions regarding their most wanted robotics applications and currently most used tools were asked. Tasks that were derived from the conversations included laser marking of parts and automation of picking and placing parts that are located at a specific location. Many parts that are machined at this shop are laser cut and also mass produced at a scale that makes human operation a full time job. By applying some form of automation for Pick-and-Place (PnP) and laser cutting, human labor costs can be diminished. These tasks were ultimately the ones picked for the basis of the project and combined with the requirements of the course to create project objectives. The project goals were to use the YahBoom DofBot platform to accomplish PnP with obstacle avoidance, and also follow paths for laser etching. For these tasks, path generation was done in a mix of MatLab and Python code and the interface for the robot was performed using Jupyter Labs Python notebooks. Pre-written path generations were fed into the robot because of the computational efficiency and also because in this factory scenario the environment could be kept fairly consistent in order for the tasks to be performed repeatedly.
I worked on this project with a partner. We developed the Forward and Inverse Kinematic algorithms together and after validating that they worked, I worked on Path Following with Feedback while he worked on Obstacle Avoidance and Path Generation. We met a couple times a week and were able to effectively work together to complete the deliverables for this project.
A dofbot interface program was developed to submit commands to the robot. The interface program acted as a middleman between the user and the robot, prompting the user for an input and outputting corresponding commands to the robot. There were three possible inputs the program would accept: a text file with a set of arm configurations (joint angles), a manual input of a POT and ROT, or a manual input of a joint number and joint angle to change with an optional speed control to add a time delay between points. Once the user entered one of these three acceptable inputs, the program would use Inverse and Forward Kinematic algorithms, as well as a pre-built Robotic Toolbox, to generate and run specified arm configurations with optional end effector manipulation. Furthermore, a startup and retire clause were implemented to reset the dofbot joints, and additional movements were hardcoded to pickup the blocks more reliably. In addition, a standard grip function, demonstrated in the PnP videos, was implemented with a boolean argument that defines whether the dofbot is carrying an object or is empty.
Overall, the tasks that were set out to be accomplished were successfully completed. PnP worked as intended and this can be shown by comparing the simulation and demonstration on hardware. The PnP task videos demonstrate that a path could be generated and followed which included obstacle avoidance. In addition, feedback-based position control of the Dofbot joints was also successful, with the system able to consistently achieve less than 0.005 radians of error in all joints. The reach task of drawing G-code parsed 2D objects was not successful and so was only briefly mentioned in this report. Nevertheless, invaluable experience developing a framework for interacting with a robot was achieved through FK, IK, Obstacle Avoidance, and Closed-Loop Path Feedback algorithms that could translate to more advanced projects in the future.
Videos referenced in this project can be found in the following link:
Video FolderCode referenced in this project can be found in the following link:
Code FolderRPI Robotics I, Oakes, [1]
https://piazza.com/rpi/fall2022/ecse44806470mane41206120csci4480/resources.
Email: michael.aksen@gmail.com
LinkedIn: https://www.linkedin.com/in/aksenm/