Loading... ```java // 在医疗场景下会不停地添加手术器具,负载参数和偏移量会变化,所以要经常变化 public class ToolsDemo extends RoboticsApplication{ @Inject private LBRMed lBR_Med_14_R820_1; @Inject @Named("Gripper") private Tool gripper; private ObjectFrame tcp; private ObjectFrame pin; private Tool appTool; private LoadData appToolLoadData; private ObjectFrame appTcp; @Override public void initialize(){ // initialize your application here // 在Sunrise中添加已经配置好的工具和TCP gripper.attachTo(lBR_Med_14_R820_1.getFlange()); // 把法兰中心点设置成为gripper tcp = gripper.getFrame("/TCP"); // 获取tcp的各项数据 pin = gripper.getFrame("/TCP/Pin"); // 获取pin的各项数据 // 在程序中创建工具,并且添加负载数据和TCP,在医疗领域这部分的数据需要使用NDI去得到 appTool = new Tool("AppTool"); // 给工具起个名字 appTcp = appTool.addChilderenFrame("TCP_App", Transformation.ofDeg(0, 0, 20, 0, 90, 0)); // 要添加一个TCP的子坐标,第一个参数是起名,第二个参数是这个工具的TCP相对于这个Tool的跟坐标(也就是法兰中心)的(x, y, z, a, b, c) appToolLoadData = appTool.getLoadData(); // 先要让得到负载数据,然后参能赋值appToolLoadData appToolLoadData.setMass(5.0); // 设定重量 appToolLoadData.setCenterofMass(Transformation.ofDeg(10, 10, 10, 0, 90, 0)); // 设定重心 appToolLoadData.setInertia(Inertia.of(10, 10, 10)); // 设定转动惯量 gripper.detach(); // 把之前的工具detach appTool.attachTo(lBR_Med_14_R820_1.getFlange()); // 把重新定义的这个Tool再attachTo } @Override public void run(){ // your application execution starts here tcp.move(ptpHome()); // 让tcp进行移动到home位置 pin.move(ptpHome()); // 让pin进行移动到home位置 appTcp.move(ptpHome()); // 让新定义的appTcp移动到home位置 } } ``` 最后修改:2023 年 09 月 12 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏