예제 #1
0
 def run(self):
     try:
         GpioMgmt().init_pwm()
         self.ultrasonic.init_pwm()
         self.detect_to_turn()
         self.listen()
     except Exception as e:
         GpioMgmt().init_pin()
         logging.error(str(e))
예제 #2
0
 def run(self):
     try:
         logging.debug('Start smartcar in mode auto_pilot with sensors ...')
         GpioMgmt().init_pwm()
         self.ultrasonic.init_pwm()
         self._run()
     except Exception as e:
         GpioMgmt().init_pin()
         logging.error(str(e))
예제 #3
0
 def run(self):
     try:
         logging.debug('Start smartcar in mode auto_pilot with camera ...')
         GpioMgmt().init_pwm()
         # self.ultrasonic.init_pwm()
         self._run()
     except KeyboardInterrupt as e:
         GpioMgmt().release()
         logging.info("[+] Exiting")
         raise e
     except Exception as e:
         GpioMgmt().init_pin()
         logging.error(str(e))
예제 #4
0
 def listen(self, *args, **kwargs):
     '''
     Function to control the bot using threading. Define the clientSocket in the module before use
     '''
     try:
         with Listener(on_press=self._on_press,
                       on_release=self._on_release) as listener:
             listener.join()
     except KeyboardInterrupt:
         GpioMgmt().release()
         self.headlight.off()
         logging.info("[+] Exiting")
         # clientSocket.close()
         raise e
     except Exception as e:
         GpioMgmt().release()
         self.headlight.off()
         logging.error(str(e))
         # clientSocket.close()
         raise e
예제 #5
0
        left_sensor, right_sensor = self.detect()

        logging.debug(
            f'Infra red detecting ... \nleft: {left_sensor} right: {right_sensor}'
        )
        if left_sensor is True and right_sensor is True:
            return False
        else:
            self.motor.aquire()
            if left_sensor is True and right_sensor is False:
                self.motor.spin_left(force=True)  # 右边探测到有障碍物,有信号返回,原地向左转
                time.sleep(0.01)
            elif right_sensor is True and left_sensor is False:
                self.motor.spin_right(force=True)  # 左边探测到有障碍物,有信号返回,原地向右转
                time.sleep(0.01)
            elif right_sensor is False and left_sensor is False:
                self.motor.spin_right(force=True)  # 当两侧均检测到障碍物时调用固定方向的避障(原地右转)
                time.sleep(0.01)
            self.motor.free()
            self.motor.release()
            return True


if __name__ == '__main__':
    ifr = Infrared()
    GpioMgmt().init_pwm()
    while True:
        ifr.motor.aquire()
        ifr.detecting()
        time.sleep(0.5)
예제 #6
0
파일: run.py 프로젝트: 90vFan/smartcar
import argparse

from gpio_mgmt import GpioMgmt
from key_pilot import KeyPilot
from settings import logging

parser = argparse.ArgumentParser()
parser.add_argument('-m', '--mode', help='Pilot mode: auto, key')
args = parser.parse_args()

try:
    if args.mode == 'auto':
        pass
    if args.mode == 'key':
        kp = KeyPilot()
        kp.run()
except Exception as e:
    logging.error(f'[ERROR] fail to run in key mode: {e}')
    GpioMgmt().release()