コード例 #1
0
	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
コード例 #2
0
 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)
コード例 #3
0
	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
コード例 #4
0
ファイル: resource-test.py プロジェクト: krishauser/Klampt
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))
コード例 #5
0
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))