Exemplo n.º 1
0
def run():
    mylidar = RPLidar(PORT_NAME, baudrate=115200)
    # info = mylidar.get_info()
    # print(info)

    # health = mylidar.get_health()
    # print(health)
    aver2 = 0
    mylidar_scan = []

    for y in range(0, 15):

        for i, scan in enumerate(
                mylidar.iter_scans(scan_type='normal', max_buf_meas=60000)):
            #print('%d: Got %d measures' % (i, len(scan)))
            #
            mylidar_scan.append(scan)
            if i > 10:
                break

        for i in range(len(mylidar_scan)):  #aantal rondes

            som = []
            #print("Len lidarscan i : ", len(mylidar_scan[i]))
            for row in mylidar_scan[i]:  #aantal metingen in het rondje
                #mylist = mylidar_scan[i][j]
                # print(mylist[2])
                if 86.5 < row[1] < 89 and 150 < row[2] < 300:
                    som.append(row[2])
                    #print(row)
        som = np.array(som)
        print('som: ', som)
        aver = np.mean(som)
        # stats.mode()
        print("avg: ", aver)
        '''
        total2 = len(mylidar_scan)
        aver2 = aver + aver2
        aver2 = aver2/ total2
        print("total aver: ",aver2)'''
        mylidar.clean_input()

    mylidar.stop()
    mylidar.stop_motor()
    mylidar.disconnect()
Exemplo n.º 2
0
    def find_exact_vanes(self, lower_angle_L, lower_angle_R, upper_angle_L, upper_angle_R, lower_distance_L, lower_distance_R,
                         upper_distance_L, upper_distance_R):
        mylidar = RPLidar("COM3", baudrate=115200)
        mylidar_scan = []
        total_average_left_vane = []
        total_average_right_vane = []
        total_average_angle_left_vane = []
        total_average_angle_right_vane = []

        for y in range(0, 20):

            for i, scan in enumerate(mylidar.iter_scans(scan_type='normal',
                                                        max_buf_meas=60000)):  # scan_type='normal', max_buf_meas=60000

                mylidar_scan.append(scan)
                if i > 10:
                    break

            for i in range(len(mylidar_scan)):  # aantal rondes
                left_vane = []
                right_vane = []

                for j in range(len(mylidar_scan[i])):  # aantal metingen in het rondje
                    my_list = mylidar_scan[i][j]

                    if lower_angle_L < my_list[1] < upper_angle_L and lower_distance_L < my_list[2] < upper_distance_L:
                        left_vane.append(my_list)
                    elif lower_angle_R < my_list[1] < upper_angle_R and lower_distance_R < my_list[2] < upper_distance_R:
                        right_vane.append(my_list)

            # print("arr_avg: ", arr_avg)
            if left_vane:
                left_vane = np.array(left_vane)
                average_left_vane = np.mean(left_vane[:, 2])
                average_angle_left_vane = np.mean(left_vane[:, 1])

                total_average_left_vane.append(average_left_vane)
                total_average_angle_left_vane.append(average_angle_left_vane)
                print("Average left", average_left_vane)

            if right_vane:
                right_vane = np.array(right_vane)
                average_right_vane = np.mean(right_vane[:, 2])
                average_angle_right_vane = np.mean(right_vane[:, 1])

                total_average_right_vane.append(average_right_vane)
                total_average_angle_right_vane.append(average_angle_right_vane)
                print("Average right", average_right_vane)

            mylidar.clean_input()
        grand_total_left = np.mean(total_average_left_vane)
        grand_total_right = np.mean(total_average_right_vane)
        grand_total_left_angle = np.mean(total_average_angle_left_vane)
        grand_total_right_angle = np.mean(total_average_angle_right_vane)
        print("totaal links:", grand_total_left)
        print("totaal rechts:", grand_total_right)
        print("totaal hoek links:", grand_total_left_angle)
        print("totaal hoek rechts:", grand_total_right_angle)
        mylidar.stop()
        mylidar.stop_motor()
        mylidar.disconnect()
        return grand_total_left, grand_total_right, grand_total_left_angle, grand_total_right_angle
Exemplo n.º 3
0
def run(lower_angle_L, lower_angle_R, upper_angle_L, upper_angle_R,
        lower_distance_L, lower_distance_R, upper_distance_L,
        upper_distance_R):
    mylidar = RPLidar(PORT_NAME, baudrate=115200)
    total = 0
    arr_avg_L = []
    arr_avg_R = []
    avg_angle_L = []
    avg_angle_R = []
    mylidar_scan = []
    angle_L = 0
    angle_R = 0
    dist_L = 0
    dist_R = 0

    for y in range(0, 15):

        for i, scan in enumerate(
                mylidar.iter_scans(scan_type='normal', max_buf_meas=60000)):
            # print('%d: Got %d measures' % (i, len(scan)))
            #
            mylidar_scan.append(scan)
            if i > 10:
                break

        for i in range(len(mylidar_scan)):  # aantal rondes

            # print("Len lidarscan i : ", len(mylidar_scan[i]))
            for j in range(len(
                    mylidar_scan[i])):  # aantal metingen in het rondje
                mylist = mylidar_scan[i][j]
                # print(mylist[2])

                if lower_angle_L < mylist[
                        1] < upper_angle_L and lower_distance_L < mylist[
                            2] < upper_distance_L:
                    dist_L = mylist[2]
                    angle_L = mylist[1]
                    total = 1
                elif lower_angle_R < mylist[
                        1] < upper_angle_R and lower_distance_R < mylist[
                            2] < upper_distance_R:
                    dist_R = mylist[2]
                    angle_R = mylist[1]
                    total = 1

                if total == 1:
                    # aver = som / total
                    avg_angle_L.append(angle_L)
                    avg_angle_R.append(angle_R)
                    arr_avg_L.append(dist_L)
                    arr_avg_R.append(dist_R)
                    total = 0

            # print("arr_avg: ", arr_avg)
            arr_mean_L = np.mean(arr_avg_L)
            arr_mean_R = np.mean(arr_avg_R)
            arr_avg_angle_L = np.mean(avg_angle_L)
            arr_avg_angle_R = np.mean(avg_angle_R)
            print("Average Left: ", arr_mean_L)
            print("Average Right: ", arr_mean_R)

        mylidar.clean_input()

    mylidar.stop()
    mylidar.stop_motor()
    mylidar.disconnect()
    return arr_mean_L, arr_mean_R, arr_avg_angle_L, arr_avg_angle_R
Exemplo n.º 4
0
import pygame
from pygame.locals import *
from rplidar import RPLidar
from math import sin, cos, pi


#from time import sleep
def sleep(a):
    pass


lidar = RPLidar("/dev/ttyUSB0")
lidar.clean_input()
lidar.start_motor()
lidar.start()
lidar.stop_motor()
lidar.stop()


def degrees(a):
    return a * pi / 180


pygame.init()
WIDTH = 600
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH * 2, HEIGHT))


def scanWalls(closeDist, farDist):
    a = 0