Controlling the KUKA youBot

Path Planning with the youBot Manipulator

We developed a control program in ROS for automating the KUKA youBot arm.  This program takes advantage of the Moveit! ROS package that uses forward and inverse kinematics plan a feasible path for the arm that does not exceed its mechanical limits.  Using forward kinematics, a set of poses were saved and stored under names for quick and easy manipulation of the arm.  From these positions, individual joints could be singularly adjusted, allowing for refinements in positions without wasting significant time planning to unknown locations.  The positions required fine tuning as testing was conducted.

The youBot's manipulator was extensively tested to ensure that the arm could achieve the proper position without hitting certain limits or becoming a potential danger to objects or people within the vicinity of the arm.  One such limit was an overcurrent limit, which was meant to prevent damage to the motors controlling the linkages.  This limit would often be raised when the arm moved significant angles with the base rotation joint.  Part of this testing involved rapid iteration of setting goal positions, planning to those positions, and moving to those positions.  This was completed by writing and running python test scripts that would take user input and automatically set the goal state, plan to it, and move the arm to it.  This testing was done outside of the state machine meant to combine the youBot arm, the youBot base, and the soft robot into a single file controlling the entirely autonomous system.

Upon testing, a path planned with MoveIt! between the pickup and to drop-off positions resulting in a path that interfered with the youBot.  An effective solution was to plan a path with three points instead of two- an intermediate pose was placed between pickup and drop-off which forced the arm to raise the soft robot then plan between positions from a higher point in space where the soft robot would not be entangled in the wires.

Furthermore, to avoid obstructing the camera view and detection of the object to be retrieved, the soft robot had to be dropped off the right side of the robot.  Additionally, when retrieving the robot, the youBot was maneuvered to be just off the left side of the robot.  This prevented the robotic arm from circling almost three hundred and sixty degrees to reach the robot if it was off the left side of the youBot.  From the camera view, the robotic arms base rotation joint was moved in order to pickup the robot.  Since the arm was left in the position that dropped the soft robot on the ground, this was the simplest way to retrieve the robot and object.

Finally, the arm would need to return the soft robot, but the soft robot was now inflated and holding another object.  Because of this, a point higher off the back and centralized to the back plate was chosen.  This provided enough room for the soft robot to stay without rolling off the youBot from its momentum of being dropped.  Throughout all of this, the robot had to have repeatability to consistently be able to retrieve the robot.

Soft-Robot - youBot Manipulation Testing

Once the arm could operate smoothly without interaction with other objects, the arm was tested in moving the soft robot within the state machine created to control both the base and arm of the youBot.  This started with running the required positions without the soft robot, as shown by the attached videos.

Obvious from the videos is the error in the controller, creating significant deviation from set positions and jarring, sporadic motions.  Further refinement was required before the final integration with the soft robot to produce smooth motions.  To solve this issue, the controller parameters were adjusted and the velocity of the arm reduced.  An added  bonus of the reduced arm velocity was the reduced tension on the tubes of the soft robot when integrated.  In the final video found on the integration page, you will see that the arm moves incredibly smoothly and accurately due to the reduced velocity.