def edit_contacting_links(self): contact_links = set() for i,(name,unit) in enumerate(self.contact_units): contact_links.add(name) ok_pressed,links = editors.run(editors.SelectionEditor("Contacting links",value=list(contact_links),description="Select all links in contact",world=self.world,robot=self.world.robot(0))) if not ok_pressed: return #if self.config_name != None: # print "Saving to",self.config_name+".array" # resource.set(self.config_name+".array",type="IntArray",value=links) robot = self.world.robot(0) linkNames = set([robot.link(l).getName() for l in links]) self.contact_units = [] for i,(name,unit) in enumerate(self.hand.all_units): if name in linkNames: self.contact_units.append(i) return self.contact_units
def __init__(self, world): GLWidgetPlugin.__init__(self) self.world = world self.robot = world.robot(0) self.subrobots = [] for i in range(6): self.subrobots.append( SubRobotModel(self.robot, list(range(6 + i * 6, 12 + i * 6)))) (res, val) = editors.run( editors.SelectionEditor("subrobot", self.subrobots[0]._links, description="sub robot links", world=world, robot=self.robot)) if res: print("Return value", val) self.subrobots[0]._links = val self.startConfig = self.robot.getConfig() self.robotWidget = RobotPoser(world.robot(0)) self.robotWidget.setActiveDofs(self.subrobots[0]._links) self.addWidget(self.robotWidget)
def edit_contacting_units(self): tempWorld = WorldModel(self.world) patches = {} selected = [] for i,(link,unit) in enumerate(self.hand.all_units): obj = tempWorld.makeRigidObject(unit.name) patch = GeometricPrimitive() patch.setAABB([-unit.patchSize/2,-unit.patchSize/2,-0.001],[unit.patchSize/2,unit.patchSize/2,0.001]) obj.geometry().set(Geometry3D(patch)) obj.appearance().setColor(0,0,0,0.5) obj.setTransform(*self.unit_frames[i].worldCoordinates()) patches[obj.getID()] = i if i in self.contact_units: selected.append(obj.getID()) ok_pressed,objects = editors.run(editors.SelectionEditor("Contacting units",value=selected,description="Select all units in contact",world=tempWorld)) if not ok_pressed: return self.contact_units = [] for oid in objects: if oid in patches: self.contact_units.append(patches[oid]) for u in self.contact_units: assert u >= 0 and u < len(self.unit_frames),"Invalid unit? "+str(u) return self.contact_units
from klampt import * from klampt.vis import editors world = WorldModel() if not world.readFile("/home/motion/Klampt-examples/data/robots/baxter.rob"): raise RuntimeError("Can't read the Baxter file") links = editors.run(editors.SelectionEditor("active_ik_links", value=[15,16,17,18,19,20], description="Robot arm links for IK", world=world))
from klampt import * from klampt.vis import editors world = WorldModel() if not world.readFile("/home/motion/Klampt-examples/data/robots/baxter.rob"): raise RuntimeError("Can't read the Baxter file") links = editors.run( editors.SelectionEditor("active_ik_links", value=[15, 16, 17, 18, 19, 20], description="Robot arm links for IK", world=world))