Loading...  ```java public class MotionDemo extends RoboticsAPIApplication { @Inject private LBRMed lBR_Med_14_R820_1; @Inject @Named("Gripper") private Tool gripper; @Inject private IApplicationData appData; private ObjectFrame tcp; private ObjectFrame pos1; private ObjectFrame p1; private ObjectFrame p2; // 因为在ApplicationData中已经声明了pos1, p1, p2,所以直接进行ObjectFrame private Frame p3; // 如果需要在程序中计算出一个想要到达的位置,应该Frame而不是ObjectFrame // 也就是说ObjectFrame只能获取,而Frame可以修改(x, y, z. a, b, c) // JointPosition可以定义轴角度 private JointPosition hPos; @Override public void initialize(){ // initialize your application here gripper.attachTo(lBR_Med_14_R820_1.getFlange()); tcp = gripper.getFrame("/TCP"); // 通过ApplicationData在程序中添加已示教好的坐标点 pos1 = appData.getFrame("/Pos1"); p1 = appData.getFrame("/Pos1/P1"); p2 = appData.getFrame("/Pos1/P2"); // 程序中添加计算好的坐标点 p3 = new Frame(); // 要想计算一个点,首先要new一个Frame() p3.setParent(pos1); // 然后指定一下父级坐标系。如果不指定那么父级坐标系默认为World p3.setX(10).setY(10).setZ(10); // 针对父级坐标系设置偏移量,这里是相对pos1偏移(10, 10, 10) // 设置新的Home点 hPos = new JointPosition(0, 0, 0, Math.toRadians(90), 0, 0, 0); // 参数是弧度制,但是Math.toRadians更方便 lBR_Med_14_R820_1.setHomePosition(hPos); // 设置为Home点 } @Override public void run(){ // your application execution starts here // 运动到Home点,同步/异步运动,法兰中心/TCP为运动对象 lBR_Med_14_R820_1.move(ptpHome()); lBR_Med_14_R820_1.move(ptp(p1).setJointVelocityRel(0.2).setJointAccelerationRel(0.1)); // 让机器人的法兰中心点用ptp的方法移动到p1点 tcp.moveAsync(lin(p2).setJointVelocityRel(0.2).setJointAccelerationRel(0.1)); // 让tcp用lin的方法移动到p2点 tcp.move(lin(p2).setCartVelocityRel(10).setCartAccelerationRel(5)); } } ``` 最后修改:2023 年 09 月 13 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏