Thanks for the great questions! In this particular robot, we handle homing one arm at a time before the main motion program begins. We home each arm first to Warning Following Error against the upper mounting plate of the unit, such that we know the arm is above the home sensor, and then we home again to a laser sensor home trigger logically ANDed with the C channel of the shoulder link's encoder for extreme repeatability on the home position.
As for the workspace, we can compute the cylindrical workspace in PMAC beforehand based on the robot's geometry, and then dynamically check each axis's position against those limits in the inverse kinematics subroutine, ensuring that the axis can never be commanded beyond its limit.
@@hemachandarmathiyalagan90 I assume you run the equation three times, once for each motor so you get three theta angles. As the equation does not specify the mounting orientation of each motor you probably need to set a coordinate system for each motor individually and translate your global x,y,z to an x,y,z on the motor's coordinate system. Assuming everything is symmetrical, this is most likely just a rotation of the XY coordinates by the mounting angle of the 2nd and 3rd motors. The first motor should already be aligned with the robot's global coordinate system.