예제 #1
0
파일: daarrt.py 프로젝트: detourbr/scrjpl
    def __init__(self):

        self.motor_last_change = 0

        if os.access("/var/www/daarrt.conf", os.F_OK) :
            print "Real DAARRT creation"

            # Import modules
            from drivers.trex import TrexIO
            from drivers.razor import RazorIO
            from drivers.hcsr04 import SonarIO, PIN_MAP
            
            self.trex = TrexIO(0x07)
            self.razor = RazorIO()
            self.sonar = [SonarIO(i[0], i[1]) for i in PIN_MAP] # [Arriere, Droite, Avant, Gauche]
            # self.sonar = [SonarIO(2, 3), SonarIO(4, 5), SonarIO(6, 7), SonarIO(8, 9)] # [Arriere, Droite, Avant, Gauche]

        else :
            print "Create virtual DAARRT"

            from multiprocessing import Process,Manager
            import vDaarrt.simulation as simulation
            import vDaarrt.modules.vTrex as vTrex
            import vDaarrt.modules.vSonar as vSonar
            import vDaarrt.modules.vRazor as vRazor

            global simuProc

            manager = Manager()
            self.ns = manager.Namespace()
            self.trex = vTrex.vTrex()
            self.razor = vRazor.vRazorIO()
            self.sonarLeft = vSonar.vSonar(1,0,0)
            self.sonarRight = vSonar.vSonar(2,0,0)
            self.sonarFront = vSonar.vSonar (3,0,0)
            self.sonarBack = vSonar.vSonar(4,0,0)
            self.sonar = [self.sonarBack,self.sonarRight,self.sonarFront,self.sonarLeft]
            self.ns.isAlive = True
            simuProc = Process(target = simulation.simulate,args = (self.ns,self.trex.package,self.trex.changeData,self.trex.changeDataEnco,self.sonarLeft.changeSonarLeft,self.sonarRight.changeSonarRight,self.sonarFront.changeSonarFront,self.sonarBack.changeSonarBack,self.razor.changeCap))
            simuProc.start()

            print "Running Simulation"
예제 #2
0
파일: dart.py 프로젝트: Chojnacki/Dart
    def __init__(self):

        # test if on real robot, if yes load the drivers
        #        if os.access("/var/www/daarrt.conf", os.F_OK) :
        if os.access("/sys/class/gpio/gpio266", os.F_OK):
            print("Real DART is being created")

            # Import modules
            from drivers.trex import TrexIO
            from drivers.sonars import SonarsIO
            from drivers.razor import RazorIO
            from drivers.rear_odo import RearOdos

            self.__trex = TrexIO()
            self.__sonars = SonarsIO()
            self.__razor = RazorIO()
            self.__rear_odos = RearOdos()
            self.__trex.command["use_pid"] = 0  # 1
            self.tolerance = 5
            self.minSpeed = 50

        # if not create virtual drivers for the robot running in V-REP
        else:
            print("Virtual DART is being created")

            import threading

            import socket
            import sys
            import struct
            import time

            # socket connection to V-REP
            self.__HOST = 'localhost'  # IP of the sockect
            self.__PORT = 30100  # port (set similarly in v-rep)
            self.minSpeed = 50

            self.__s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            print('Socket created')

            # bind socket to local host and port
            try:
                # prevent to wait for  timeout for reusing the socket after crash
                # from :  http://stackoverflow.com/questions/29217502/socket-error-address-already-in-use
                self.__s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
                self.__s.bind((self.__HOST, self.__PORT))
            except socket.error as msg:
                print(msg)
                sys.exit()
            print('Socket bind completed')

            # start listening on socket
            self.__s.listen(10)
            print('Socket now listening')

            # reset variables
            self.__vMotorLeft = 0.0
            self.__vMotorRight = 0.0
            self.__vEncoderLeft = 0
            self.__vEncoderRight = 0
            self.__vSonarLeft = 0.0
            self.__vSonarRight = 0.0
            self.__vSonarFront = 0.0
            self.__vSonarRear = 0.0
            self.__vHeading = 0.0

            # initiate communication thread with V-Rep
            self.__simulation_alive = True
            a = self.__s
            vrep = threading.Thread(target=self.vrep_com_socket, args=(a, ))
            vrep.start()

            # start virtual drivers
            import vDaarrt.modules.vTrex as vTrex
            import vDaarrt.modules.vSonar as vSonar
            import vDaarrt.modules.vRazor as vRazor

            self.__trex = vTrex.vTrex()
            self.__razor = vRazor.vRazorIO()
            self.__sonars = vSonar.vSonar(self)