This project successfully utilizes sensing to detect various cake shapes and the location of the center in 3D space. For each cake shape, the corresponding trajectories are executed, depositing artificial icing in various designs, planned using way-points.
The initial goal of executing 2D trajectory paths with a 6-DOF UR7e robotic arm was met. The designs are created by executing separate trajectories from way-point to way-point, stopping at each location, this variation in velocity limits the precision of designs. While certain changes could have been made to create smoother trajectories, such as adjusting the number of way-points or reducing the maximum velocity, we were able to generate legible designs (spiral, heart, triangle, star). Our implementation requires the system to be reset every time a design is deposited. While there is limited automation, each individual trajectory was successfully executed.
Hardware proved to be a limitation in the execution of this project. The camera is connected to a tripod using a custom 3D printed mount. While this ensures the camera is mounted facing downwards, it does not restrict rotation in the z-direction. Slight rotation of the camera results in rotated cake outlines, impacting placement of icing. Limited by the need to keep food out of the lab space, a material with a similar consistency was used as faux icing: lotion. However, it does not dispense exactly the same as icing. Additionally, using an existing syringe, the end effector is limited by the size of the outlet, impacting the piping of the material. Figuring out dispense rate and height to achieve the best result under these conditions required trial and error.
With additional time, the system could be made more robust and accurate. The transform from the camera pixels to robot coordinates requires manually measuring the distance from the robot base link to the camera every time it is placed, a process that results int he need for tuning and offsets. A more robust transform could mitigate this. A mounting system that places the camera in the exact same spot each every time would result in more consistency. Another approach could involve AR tags located directly on the cakes.
For the design trajectories, the code could be made more modular, such as using static_transform.py rather than coding the transform in shape_detector.py and utilizing functions for each set of waypoints.
The trajectories could be improved to create cleaner designs. Currently, the velocity of the end effector changes, accelerating and decelerating point-to-point. This could be improved by adjusting the maximum velocity. Alternatively, a different approach to computing trajectories could be used, allowing the way-points to be incorporated into one trajectory instead of several.
At the end of each trajectory, the robot arm blocks the camera, making it impossible to detect subsequent shapes on the table. This could be resolved by changing the placement of the camera, or ensuring the arm is out of view at the end of each design trajectory.
For the version of the project shown on demo day. knowing the height of each cake and the distance relative to the base link, the height of the end effector could be hard-coded. However, cakes come in many shapes, sizes, and heights. For a more versatile implementation, depth sensing was explored. A topic was created to report the distance of the cake from the camera, establishing proof of concept. With more time, this topic could be implemented to apply icing to cakes of different heights.
While there is room for improvement, the design effectively senses the cakes and deposits icing, resulting in various patterns.