Arm Subsystem

Arm Subsystem

The arm subsystem is the method in which we will be manipulating the litter into the litter collection bin. This manipulator is part of the subsystem that will allow us to meet our requirement of picking up a piece of litter within 5 attempts. We purchased the Mover 4 arm from Commonplace Robotics as it has software support with Linux and ROS while being within our budgetary constraints.  Earlier in the semester the software packages from Commonplace were not sufficient in path planning and executing the path on the robot, but after some correspondence the software from Commonplace, we now have most of the tools we need to path-plan for the arm. Included in this package is a GUI interface that interacts with MoveIt (a path planning framework) to visualize planned arm trajectories and also jog the joints of the arm. This is shown in the following figure. arm

The GUI interface to jog the joints of the arm.

The one piece of software that didn’t seem to work was the built in MoveIt inverse kinematics solver. To avoid this problem, we used basic geometric methods to derive the inverse kinematics for our purposes. Currently, the arm can operate through a command line interface. A user can type in a desired 3D coordinate and the end-effector frame should be able to reach this position with the pre-specified orientation. Currently, the arm subsystem has been integrated with the object track and yolo object detection subsystems. This allows us to complete a single fully connected pick-up sequence. However, some small issues with the miscalibration of the arm and the homegraphy calculations which are slightly off. We are also changing the mounts for the camera to make it more robust. End effector In order to use the vacuum to suck the litter, we design the end effector like this:

The CAD design of end effector

 

 

 

 

 

 

 

 

 

 

The appearance of end effector mounted on the arm

Ultimately, the arm subsystem works as follows. After a litter item is in the workspace of the arm, the vacuum is turned on. The pixel position of the object of interest is forwarded to the arm subsystem program.  It then uses the homography to compute the actual estimated x,y position the object is located at. The inverse kinematics is solved, for an initial x, y and z. The arm then plans a path to the x, y position and an initial z position, e.g., an initial height of the litter. The arm then slowly lowers until a spike in pressure is detected. This spike in pressure indicates a seal and the litter item is then picked up and dumped in the storage compartment.

The system functions as intended, however, the arm’s numerous problems, led to some issues with regards to the robustness and speed of the arm.

The most difficult shortcoming to work with was the inaccurate reporting of joint angles of the arm. This is closely coupled with the lack of robustness. The calibration routine for the joint angles of the arm relied on human vision to line up markings on the arm.  Since the arm didn’t have limit switches or automatic calibration routines, the arm is in a slightly different position each time its calibrated. Furthermore, the arm has a lot of backlash which exacerbates the problem. This further increases the uncertainty of where the arm configuration is for calibration. Given some of the robustness issues, particularly when the arm is being fed multiple commands, the arm cannot process all of the commands and faults. These faults occurred frequently and required a full recalibration routine to take place until the root of this problem was discovered. The documentation of the arm was also very incomplete, and there were internal pieces of code that locked certain features of the arm. There was a lot of crawling through the code to find parts that would reduce the speed of the arm and hamper the joint limits of the arm greatly. Finally, the moveit package that was provided with the arm seemed to perform pretty poorly, and the different planners provided, though from OMPL, seemed to performed all the same around. Ultimately, we discovered that we got what we paid for, and it was a good exercise in working with limited resources.