Control System For A Machining Operation
20210138643 · 2021-05-13
Inventors
- Arthur Wee (Derby, GB)
- Muhammad Izzat Bin Roslan (Derby, GB)
- Domenico Campolo (Derby, GB)
- Menoth Mohan Dhanya (Derby, GB)
- Gia Hoang Phan (Derby, GB)
- Sreekanth Kana (Derby, GB)
Cpc classification
B25J9/1633
PERFORMING OPERATIONS; TRANSPORTING
International classification
Abstract
Disclosed herein is an impedance control system for a robot arm. The system is able to provide at least two different levels of stiffness/compliance, and values for stiffness/compliance in the can be independently defined and set in at least first and second directions. Specifically, this allows the stiffness in said first direction to be set at a lower value than the stiffness in said second direction within the control system.
Claims
1. An impedance control system for a robot arm, wherein stiffness values can be independently defined in first and second directions, the second direction being orthogonal to the first direction, and wherein the stiffness in said first direction is set at a lower value than the stiffness in said second direction.
2. The impedance control system according to claim 1, wherein a stiffness value can be independently set in a third orthogonal direction.
3. The impedance control system according to claim 2, wherein the stiffness in said first direction is set at a lower value than the stiffness in said third direction.
4. The impedance control system according to claim 2, wherein the stiffness in said second direction is set at an equal value to the stiffness in said third direction.
5. Material removal apparatus comprising a robot arm, a tool for removing material supported by the robot arm and an impedance control system according to claim 1.
6. A method of machining a workpiece comprising material removal apparatus according to claim 1, wherein said first direction is the direction of movement of a tool across the workpiece.
7. The method of machining a workpiece according to claim 6, wherein movement of the tool across the workpiece is controlled by a human operator.
8. The method of machining a workpiece according to claim 6, wherein movement of the tool across the workpiece is automated.
9. The method of machining a workpiece according to claim 8, wherein said first direction is defined by a tool path provided to the control system.
10. The method of machining a workpiece according to claim 6, wherein the machining comprises finesse finishing of a component.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0026] Embodiments will now be described by way of example only, with reference to the Figures, in which:
[0027]
[0028]
[0029]
[0030]
[0031]
DETAILED DESCRIPTION OF THE DISCLOSURE
[0032] With reference to
[0033] The gas turbine engine 10 works in the conventional manner so that air entering the intake 12 is accelerated by the fan 13 to produce two air flows: a first air flow into the intermediate pressure compressor 14 and a second air flow which passes through a bypass duct 22 to provide propulsive thrust. The intermediate pressure compressor 14 compresses the air flow directed into it before delivering that air to the high-pressure compressor 15 where further compression takes place.
[0034] The compressed air exhausted from the high-pressure compressor 15 is directed into the combustion equipment 16 where it is mixed with fuel and the mixture combusted. The resultant hot combustion products then expand through, and thereby drive the high, intermediate and low-pressure turbines 17, 18, 19 before being exhausted through the nozzle 20 to provide additional propulsive thrust. The high 17, intermediate 18 and low 19 pressure turbines drive respectively the high-pressure compressor 15, intermediate pressure compressor 14 and fan 13, each by suitable interconnecting shaft.
[0035]
[0040] The robot path execution 116 is carried out using a force feedback system 118.
[0041]
[0042] The apparatus comprises a compliant robot 24 supporting an abrasive tool 26 driven by a tool driver 28 for removing material from a workpiece 30. Control is provided by a workstation PC 32 and controller 34, and spindle. Load sensors and a data acquisition device provide feedback. The implementation of tooling process based on impedance control model can be achieved using different software platforms, for example the java sunrise workbench platform integrated with iiwa operation system or MATLAB Simulink connected with DAS-controller and through KUKA control to operate the robot 24.
[0043] Various criteria were applied to the selection of a suitable robot 24 for the testing/experimental setup. The ability of the robot 24 to facilitate stiffness and damping adjustments was considered, as was whether an open control architecture, where users are allowed to modify the control architecture according to test cases, was provided. The number of joints provided was also taken into consideration.
[0044] The selected robot 24 was KUKA LBR iiwa 7 R800, which provides 7 joints and 7 kg payload and allows the users to modulate joint and cartessian stiffness as well as damping. No modification was needed to the hardware of the KUKA LBR iiwa 7 R800 in the study. It should be understood, however, that with suitable modification a number of alternative robots would also be suitable.
[0045] KUKA Sunrise.OS is the system software for all KUKA lightweight robots. It provides function for operator control of lightweight robots. The KUKA Sunrise.OS offers innovative functions for programming, planning and configuration applications for lightweight robot, together with the offline programming software, KUKA Sunrise.Workbench.
[0046] KUKA Sunrise.Workbench is the tool for the start-up of a station and the development of robot applications. It is based on Eclipse IDE. The KUKA Sunrise.Workbench facilitates Sunrise.OS installation, configuration, and application development, etc.
[0047] A Dremel 4000 was selected to drive the abrasive tool 26. This provided a relatively small lightweight power drive 28 for manipulation by the selected robot 24 within its relatively small 7 kg payload. It is also applicable to numerous finesse finishing tasks, suitable for accessing relatively narrow features, has adjustable rotational speed and the ability to provide relatively high rotational speed. The electrical drive is also able to maintain rotational speed during a finesse material removal processes.
[0048] Since appropriate multi-joint compliant robot arms are often designed for relatively low payloads, suitable abrasive tools 26 are also preferably light in weight. A suitable abrasive should also be applicable to numerous surface finishing tasks and for accessing relatively narrow features, and should also be suitable for various workpiece materials, available in wide range of hardnesses and/or abrasive particle size, able to withstand relatively high application load, and operable at relatively high rotational speed.
[0049] An example of the impedance control strategy is provided below in the form of an edge chamfering process, as schematically illustrated in
[0050] Both autonomous robot operation and collaborative operation can be accomplished using the described strategy. In the collaborative mode, the robot 24 will hold the tool 26 against the gravity, and the tool 26 will be guided by the operation without concern about tool weight or issues associated with tool orientation.
[0051] The sample code used for the chamfering process is given below:
TABLE-US-00001 package application; import java.util.ArrayList;□ public class CopyOfEdgeChamfering extends RoboticsAPIApplication { private Controller kuka_Sunrise_Cabinet_1; private LBR lbr; private Tool myTool; private ObjectFrame myToolTCP; private Frame points0; private Frame points1; private Frame points2; private static boolean and=false; private static double X1; private static double off; private CartesianImpedanceControlMode cartImpCntl; private ObjectFrame world; private int numFrame=3; private TCPcomm_server_SplineTrial_S TCPComm; //Communication thread public Thread sendTrd; public Thread currpos; public Thread commpos; public Thread stiffness; public Thread endpos; Frame currLbrPose; Frame commLbrPose; int con=0; double Xi,Yi; private JointImpedanceControlMode jointImp = new JointImpedanceControlMode(2000, 2000, 50, 10, 10, 10, 1); private ArrayList<Frame> teachFrame = new ArrayList<Frame>( ); public void initialize( ) { kuka_Sunrise_Cabinet_1 = getController(“KUKA_Sunrise_Cabinet_1”); lbr = (LBR) getDevice(kuka_Sunrise_Cabinet_1,“LBR_iiwa_7_R800_1”); myTool= getApplicationData( ).createFromTemplate(“Dremel”); myTool.attachTo(lbr.getFlange( )); myToolTCP =myTool.getFrame(“/TCP1”); jointImp= new JointImpedanceControlMode (2000, 1000, 1000, 500, 10, 10, 10); cartImpCntl = new CartesianImpedanceControlMode( ); world=World.Current.getRootFrame( ); TCPComm = new TCPcomm_server_SplineTrial_3(getLogger( ), myToolTCP, lbr}; } private JointImpedanceControlMode createJointImp( ) { jointImp.setStiffness(1,1,1,1,1,1,1); jointImp.setDampingForAllJoints(0.5); return(jointImp); } public void run( ) { IMotionContainer posHold = null; for(int i=0; i<numFrame; i++) { while(getApplicationUI( ).displayModalDialog(ApplicationDialogType.QUESTION, “Read Frame?”, “Position LBR”, “Done”)==0) { getLogger( ).info(“Positioning LBR”); posHold = myToolTCP.moveAsync(positionHold(createJointImp( ), −1, TimeUnit.SECONDS)); } getLogger( ).info(“Reading frame-”+(i+1)); teachFrame.add(lbr.getCurrentCartesianPosition(myToolTCP, World.Current.getRootFrame( ))); getLogger( ).info(“LBR position”+teachFrame.get(i)); } posHold.cancel( ); points0=teachFrame.get(0); points1=teachFrame.get(1); points2=teachFrame.get(2); Frame init= new Frame (getApplicationData( ).getFrame(“/PTest”).getX( ),getApplicationData( ). getFrame(“/PTest”).getY( ),getApplicationData( ).getFrame(“/PTest”).getZ( ), getApplicationData( ).getFrame(“/PTest”).getAlphaRad( ),getApplicationData( ). getFrame(“/PTest”).getBetaRad( ),getApplicationData( ).getFrame(“/PTest”). getGammaRad( )}; new Frame(init. getX( ),init.getY( ),init.getZ( ),Math.toRadians(−180),Math.toRadians(0), Math.toRadians(−90)); X1 = points1.getX( ); double Y1 = points1.getY( ); double Z1 = points1.getZ( ); double X2 = points2.getX( ); double Y2 = points2.getY( ); double Z2 = points2.getZ( ); double alpha = points0.getAlphaRad( ); double beta = points0.getBetaRad( ); double gamma = points0.getGammaRad( ); double init_off_x = 30; double init_off_z = 30; off =1; getLogger( ).info(“new offset is ”+off); getLogger( ).info(“initial point and new point “+X1+”,“+(X1+off)+”,“+Z1+”,“+(Z1-off)); Frame P0=new Frame(X1-init_off_x,Y1,Z1+init_off_z,alpha,beta,gamma); Frame C1=new Frame(X1,Y1,Z1,alpha,beta,gamma); Frame P1 = new Frame(X1+off,Y1+20,Z1-off,alpha,beta,gamma); Frame P2 = new Frame(X2+off,Y2,Z2-off,alpha,beta,gamma); Frame P3 = new Frame(X2-init_off_x,Y2+20,Z2+init_off_z,alpha,beta,gamma}; myToolTCP.move(ptp(P0).setJointVelocityRel(0.5)); myToolTCP.move(ptp(C1).setJointVelocityRel(0.5)); //Motions myToolTCP.move(ptp(PO).setJointVelocityRel(0.5)); getLogger( ).info(“reached initial point”); getLogger( ).info(“TCP”+lbr.getCurrentCartesianPosition(myToolTCP, World.Current. getRootFrame( )).getX( )+”,“+lbr.getCurrentCartesianPosition(myToolTCP, World.Current.getRootFrame( )).getZ( )); //Start TCP-IP communication TCPComm.StartTCP( ); TCPComm.SendWithThread(sendTrd); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace( ); } ///motion //Start thread at TCPComm to send data to Matlab cartImpCntl.parametrize(CartDOF.X).setStiffness(4000); cartImpCntl.parametrize(CartDOF.Y).setStiffness(500); cartImpCntl.parametrize(CartDOF.Z).setStiffness(4000); Spline myspline = new Spline( lin(P1).setCartVelocity(60), lin(P2).setCartVelocity(100), lin(P3).setCartVelocity(60), lin(P0).setCartVelocity(200) }; getendpos(endpos); while(lend) { myToolTCP.move(myspline.setMode(cartImpCntl)); } } public void getendpos(Thread endpos) { endpos = new Thread(new endRunnable( )); endpos.start( ); } public class endRunnable implements Runnable{ public void run( ) { int i=0; while(true) { double xl=X1+off; if(i%20==0) { getLogger( ).info(“TCP”+lbr.getCurrentCartesianPosition(myToolTCP, World.Current.getRootFrame( )).getX( )+”,“+x1); } i=i+1; try { Thread.sleep(100); } catch (InterruptedException e) { /// TODO Auto-generated catch block e.printStackTrace( ); } } } } }
[0052] The section of the above code that provides or sets the required stiffness settings is:
TABLE-US-00002 cartImpCntl.parametrize(CartDOF.X).setStiffness(4000); cartImpCntl.parametrize(CartDOF.Y).setStiffness(500); cartImpCntl.parametrize(CartDOF.Z).setStiffness(4000);
[0053] It can be clearly seen that the stiffness/impedance value (500) set in the y axis is considerably lower than that set for both the x and z axes (4000). The result is that positional control in the x and z axes can remain very precise, so that the location and shape of the edge can be reliably maintained, while there is more compliance in the positional control along the edge to accommodate differences in material properties, irregularities of the surface being finished etc. The described impedance setting (with a low stiffness along the edge to be chamfered, and a high stiffness along other directions) enables a human operator to have easy guidance along the edge to be chamfered and also minimizes the chances of the tool slipping.
[0054] The method was found to produce an edge possessing superior quality when compared to a conventional manual chamfering operation.
[0055]
[0056] For example:
TABLE-US-00003 Spline myspline = new Spline( lin(P1).setCartVelocity(60), lin(P2).setCartVelocity(100), lin(P3).setCartVelocity(60), lin(P0).setCartVelocity(200) );
[0057] It will be understood that the scope of the application is not limited to the embodiment(s) above-described and various modifications and improvements can be made without departing from the concepts described herein. Except where mutually exclusive, any of the features may be employed separately or in combination with any other features and the disclosure extends to and includes all combinations and sub-combinations of one or more features described herein.
[0058] The disclosed system may enable human-robot collaboration and may provide one or more of the following benefits: [0059] Prevent Hand-Arm Vibration (HAV) syndrome [0060] Alternative to expensive robot-cells [0061] Operator-independent, consistent outcome, Right-First Time (RFT) performance.
[0062] The proposed solution allows a human operator to work alongside a robot thereby achieving a collaborative system where the cognitive skills from human and the high precision/accuracy characteristics of the robot are best utilized to accomplish the tasks.