Exemplo n.º 1
0
def main():
    try:
        camera_control = CameraControl()
        camera_control.start()
        while True:
            qrcode = camera_control.get_qr_code()
            if qrcode:
                print qrcode
            time.sleep(1)
    except KeyboardInterrupt:
        camera_control.stop()
        camera_control.join()
Exemplo n.º 2
0
    def __init__(self):
        """ Constructs the World """
        self.sky = SkyDome("Resources/Models/skydome.egg")
        self.sky.sky.setScale(Vec3(10, 10, 10))
        self.setupPhysX()
        self.setup3DAudio()

        self.car = Car(self.physxScene, self.audio3d, "defender.xml")
        self.car.setActiveAudioProfile('outside')

        self.setupLight()
        self.initTrack()
        taskMgr.add(self.simulate, 'PhysX Simulation')

        # To to use Steering Wheel change inputHandler to SteeringControl
        self.inputHandler = KeyControl(self.car)
        #self.inputHandler = SteeringControl( self.car )

        self.cameraControl = CameraControl(self.car)
        self.cameraControl.enableTowerCamera()
        self.speedometer = Speedometer()
        render.setShaderAuto()
        self.accept('escape', sys.exit)
Exemplo n.º 3
0
def main():
    servo_control = ServoControl(11)
    servo_control.setup_gpio()
    camera_control = CameraControl()
    camera_control.start()
    try:
        camera_control.wait_for_camera()
        while True:
            scanned_qrcode = []
            if is_at_start(camera_control):
                # If at start we will work towards left
                print('is_at_start')
                direction = DIRECTION_LEFT
                state = STATE_START
            #elif is_at_end(camera_control):
            #    # If at the end we will work towards right
            #    print('is_at_end')
            #    direction = DIRECTION_RIGHT
            #    state = STATE_STOP
            else:
                # If not at start or not at end, move to start
                print('Not at start or end, moving to start')
                state = move_to_start(camera_control, servo_control)
                direction = DIRECTION_LEFT
                servo_control.move_stop()
            while True:
                curr_state = work(camera_control, servo_control,
                                  scanned_qrcode, direction, state)
                state = curr_state
                if state == STATE_STOP:
                    print('at stop')
                    break
                time.sleep(1)
    except KeyboardInterrupt:
        servo_control.stop()
        camera_control.stop()
        camera_control.join()
Exemplo n.º 4
0
 def __init__(self):
     """ Constructs the World """
     self.sky = SkyDome( "Resources/Models/skydome.egg" )
     self.sky.sky.setScale( Vec3( 10,10,10))
     self.setupPhysX()
     self.setup3DAudio()
     
     self.car = Car( self.physxScene, self.audio3d, "defender.xml" )
     self.car.setActiveAudioProfile( 'outside' )
     
     self.setupLight()
     self.initTrack()
     taskMgr.add(self.simulate, 'PhysX Simulation')
     
     # To to use Steering Wheel change inputHandler to SteeringControl 
     self.inputHandler = KeyControl( self.car )
     #self.inputHandler = SteeringControl( self.car )
     
     self.cameraControl = CameraControl( self.car )
     self.cameraControl.enableTowerCamera()
     self.speedometer = Speedometer();
     render.setShaderAuto() 
     self.accept( 'escape', sys.exit )
Exemplo n.º 5
0
class World( DirectObject ):
    """ Dynamic world """
    
    def __init__(self):
        """ Constructs the World """
        self.sky = SkyDome( "Resources/Models/skydome.egg" )
        self.sky.sky.setScale( Vec3( 10,10,10))
        self.setupPhysX()
        self.setup3DAudio()
        
        self.car = Car( self.physxScene, self.audio3d, "defender.xml" )
        self.car.setActiveAudioProfile( 'outside' )
        
        self.setupLight()
        self.initTrack()
        taskMgr.add(self.simulate, 'PhysX Simulation')
        
        # To to use Steering Wheel change inputHandler to SteeringControl 
        self.inputHandler = KeyControl( self.car )
        #self.inputHandler = SteeringControl( self.car )
        
        self.cameraControl = CameraControl( self.car )
        self.cameraControl.enableTowerCamera()
        self.speedometer = Speedometer();
        render.setShaderAuto() 
        self.accept( 'escape', sys.exit )
        
        # To turn on physx visual debugging, uncomment below
        #self.enablePhysxDebug()
        
    def initTrack(self):
        """ Loads the track model and the collision model for it. """
        kitchen = PhysxKitchen()
        
        trackCollision = loader.loadModel( "Resources/Models/TrackCollision.egg" )
        fenceCollision = loader.loadModel( "Resources/Models/FenceCollision.egg")
        self.track = loader.loadModel( "Resources/Models/Track.egg" )

        triMeshDesc = PhysxTriangleMeshDesc()
        triMeshDesc.setFromNodePath( trackCollision )
        triMesh = kitchen.cookTriangleMesh( triMeshDesc )
        triMeshShapeDesc = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc.setMesh( triMesh )
        
        triMeshDesc2 = PhysxTriangleMeshDesc()
        triMeshDesc2.setFromNodePath( fenceCollision )
        triMesh2 = kitchen.cookTriangleMesh( triMeshDesc2 )
        triMeshShapeDesc2 = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc2.setMesh( triMesh2 )
        
        actor = PhysxActorDesc()
        actor.setName( 'trackcollision' )
        actor.addShape( triMeshShapeDesc )
        actor.addShape( triMeshShapeDesc2 )
        self.physxtrack = self.physxScene.createActor( actor )
        
        self.track.reparentTo( render )
        loader.loadModel( "Resources/Models/Fence.egg" ).reparentTo( self.track )
        loader.loadModel( "Resources/Models/Rocks.egg" ).reparentTo( self.track )
        
        linfog = Fog( "Fog" )
        linfog.setColor( Vec4( 0.8, 0.85, 0.8, 1 ) )
        linfog.setExpDensity( 0.003 )
        self.track.attachNewNode(linfog)
        render.setFog(linfog)
        
    def enablePhysxDebug(self):
        """ Turns on physx visual debuggging """
        self.debugNP = render.attachNewNode(self.physxScene.getDebugGeomNode())
        self.debugNP.node().on()
        self.debugNP.node().visualizeWorldAxes(True)
        
    def setupPhysX(self):
        """ Sets up the physx world """
        self.physx = PhysxManager.getGlobalPtr()
        sceneDesc = PhysxSceneDesc()
        sceneDesc.setGravity(Vec3(0, 0, -9.81))
        self.physxScene = self.physx.createScene(sceneDesc)
        
        mGround = self.physxScene.getMaterial( 0 )
        mGround.setRestitution(0.0)
        mGround.setStaticFriction(0.8)
        mGround.setDynamicFriction(0.2)
        
    def setup3DAudio(self):
        """ Initializes the 3D audio manager """
        self.audio3d = Audio3DManager( base.sfxManagerList[0], base.cam )
    
    def setupLight(self):
        """ Sets up the scene lighting """
        ambient_source = AmbientLight('ambient')
        ambient_source.setColor(Vec4( 0.6, 0.65, 0.7, 1 ))
        ambient = render.attachNewNode(ambient_source.upcastToPandaNode())
        render.setLight( ambient )
        
        sun = render.attachNewNode( DirectionalLight( 'sun' ) )
        sun.node().setScene( render )
        render.setLight( sun )
        sun.reparentTo( self.car.chassisModel )
        sun.setH( -60 )
        sun.setP( -60 )
        sun.setPos( 0, 0, 10 )
        sun.node().getLens().setFov( 70 )
        sun.node().getLens().setNearFar( 1, 20 )
        sun.node().getLens().setFilmSize( 16, 16 )
        sun.node().setColor( Vec4( 1, 0.96, 1, 1 ))
        sun.node().setShadowCaster( True )
        self.sun = sun
        
        
    def simulate(self, task):
        """ Simulation loop, called every frame """
        dt = globalClock.getDt()
        self.physxScene.simulate(dt)
        self.physxScene.fetchResults()
        self.car.simulate(dt)
        self.cameraControl.simulate(dt)
        self.sun.setH( render, -60 )
        self.sun.setP( render, -60 )
        self.speedometer.updateSpeedometer( self.car.speed )
        self.inputHandler.simulate( dt )
        return task.cont
Exemplo n.º 6
0
class World(DirectObject):
    """ Dynamic world """
    def __init__(self):
        """ Constructs the World """
        self.sky = SkyDome("Resources/Models/skydome.egg")
        self.sky.sky.setScale(Vec3(10, 10, 10))
        self.setupPhysX()
        self.setup3DAudio()

        self.car = Car(self.physxScene, self.audio3d, "defender.xml")
        self.car.setActiveAudioProfile('outside')

        self.setupLight()
        self.initTrack()
        taskMgr.add(self.simulate, 'PhysX Simulation')

        # To to use Steering Wheel change inputHandler to SteeringControl
        self.inputHandler = KeyControl(self.car)
        #self.inputHandler = SteeringControl( self.car )

        self.cameraControl = CameraControl(self.car)
        self.cameraControl.enableTowerCamera()
        self.speedometer = Speedometer()
        render.setShaderAuto()
        self.accept('escape', sys.exit)

        # To turn on physx visual debugging, uncomment below
        #self.enablePhysxDebug()

    def initTrack(self):
        """ Loads the track model and the collision model for it. """
        kitchen = PhysxKitchen()

        trackCollision = loader.loadModel(
            "Resources/Models/TrackCollision.egg")
        fenceCollision = loader.loadModel(
            "Resources/Models/FenceCollision.egg")
        self.track = loader.loadModel("Resources/Models/Track.egg")

        triMeshDesc = PhysxTriangleMeshDesc()
        triMeshDesc.setFromNodePath(trackCollision)
        triMesh = kitchen.cookTriangleMesh(triMeshDesc)
        triMeshShapeDesc = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc.setMesh(triMesh)

        triMeshDesc2 = PhysxTriangleMeshDesc()
        triMeshDesc2.setFromNodePath(fenceCollision)
        triMesh2 = kitchen.cookTriangleMesh(triMeshDesc2)
        triMeshShapeDesc2 = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc2.setMesh(triMesh2)

        actor = PhysxActorDesc()
        actor.setName('trackcollision')
        actor.addShape(triMeshShapeDesc)
        actor.addShape(triMeshShapeDesc2)
        self.physxtrack = self.physxScene.createActor(actor)

        self.track.reparentTo(render)
        loader.loadModel("Resources/Models/Fence.egg").reparentTo(self.track)
        loader.loadModel("Resources/Models/Rocks.egg").reparentTo(self.track)

        linfog = Fog("Fog")
        linfog.setColor(Vec4(0.8, 0.85, 0.8, 1))
        linfog.setExpDensity(0.003)
        self.track.attachNewNode(linfog)
        render.setFog(linfog)

    def enablePhysxDebug(self):
        """ Turns on physx visual debuggging """
        self.debugNP = render.attachNewNode(self.physxScene.getDebugGeomNode())
        self.debugNP.node().on()
        self.debugNP.node().visualizeWorldAxes(True)

    def setupPhysX(self):
        """ Sets up the physx world """
        self.physx = PhysxManager.getGlobalPtr()
        sceneDesc = PhysxSceneDesc()
        sceneDesc.setGravity(Vec3(0, 0, -9.81))
        self.physxScene = self.physx.createScene(sceneDesc)

        mGround = self.physxScene.getMaterial(0)
        mGround.setRestitution(0.0)
        mGround.setStaticFriction(0.8)
        mGround.setDynamicFriction(0.2)

    def setup3DAudio(self):
        """ Initializes the 3D audio manager """
        self.audio3d = Audio3DManager(base.sfxManagerList[0], base.cam)

    def setupLight(self):
        """ Sets up the scene lighting """
        ambient_source = AmbientLight('ambient')
        ambient_source.setColor(Vec4(0.6, 0.65, 0.7, 1))
        ambient = render.attachNewNode(ambient_source.upcastToPandaNode())
        render.setLight(ambient)

        sun = render.attachNewNode(DirectionalLight('sun'))
        sun.node().setScene(render)
        render.setLight(sun)
        sun.reparentTo(self.car.chassisModel)
        sun.setH(-60)
        sun.setP(-60)
        sun.setPos(0, 0, 10)
        sun.node().getLens().setFov(70)
        sun.node().getLens().setNearFar(1, 20)
        sun.node().getLens().setFilmSize(16, 16)
        sun.node().setColor(Vec4(1, 0.96, 1, 1))
        sun.node().setShadowCaster(True)
        self.sun = sun

    def simulate(self, task):
        """ Simulation loop, called every frame """
        dt = globalClock.getDt()
        self.physxScene.simulate(dt)
        self.physxScene.fetchResults()
        self.car.simulate(dt)
        self.cameraControl.simulate(dt)
        self.sun.setH(render, -60)
        self.sun.setP(render, -60)
        self.speedometer.updateSpeedometer(self.car.speed)
        self.inputHandler.simulate(dt)
        return task.cont