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))
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))
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))
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
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)
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()