Industrial Manipulators are designed for operations like pick and place, welding, etc, which require position or trajectory control on the end-effector of the manipulator. On the other hand, service robots may need a different type of control for the manipulator depending on their level of autonomy (fully or partially autonomous) and the range of tasks they need to perform. The user control for service robots which are teleoperated needs to be more intuitive for easier and better control of the robot. Team Anveshak works on such service robots which are partially autonomous with the robotic arm being completely teleoperated. Hence, to make the control of the robotic arm more intuitive and easy, a task space velocity controller was designed. Velocity control is preferred in this case as the user only cares to control the direction and speed of the gripper and position is not commanded by the user explicitly. The design and simulation of the velocity controller is presented in the further sections.
The velocity of the end-effector is related to the joint motor velocity through the Jacobian matrix. This relation is made use of in the controller design. The control is hierarchical with the motherboard using i5 Core processor as the high level controller (HLC) and Arduino Mega 2560 as the low level controller (LLC). The HLC computes the joint velocities from the user commanded end-effector velocities and sends it to the LLC. The LLC uses PID velocity control on the joint motors to achieve the joint velocities commanded by the HLC.
At joint positions near to singularity, the user is warned and the damped least squares method is used to escape out of the singularity. The method adds a diagonal matrix to the Jacobian for positions near to a singularity and inversion is performed on this new matrix. The issue with this method however is that the end-effector will not move with the commanded velocity.
github link for ROS code
The robot was modeled and simulated in Unity3D. The reason for using Unity 3D was to get a game like experience and to also train the person who controls the robot. The video below shows the rover being controlled through Xbox joystick.