コード例 #1
0
def main():
    args = utils.ExampleArgumentParser().parse_args()
    utils.config_logging(args)

    if args.socket_addr:
        client = clients.SocketClient(args.socket_addr)
    elif args.spi:
        client = clients.SPIClient()
    else:
        port = args.serial_port or utils.autodetect_serial_port()
        client = clients.UARTClient(port)

    config = configs.EnvelopeServiceConfig()
    config.sensor = args.sensors

    print(config)

    connect_info = client.connect()
    print("connect info:")
    print_dict(connect_info)

    session_info = client.start_session(config)
    print("session_info:")
    print_dict(session_info)

    data_info, data = client.get_next()
    print("data_info:")
    print_dict(data_info)

    client.disconnect()
コード例 #2
0
def main():
    args = utils.ExampleArgumentParser().parse_args()
    utils.config_logging(args)

    if args.socket_addr:
        client = clients.SocketClient(args.socket_addr)
    elif args.spi:
        client = clients.SPIClient()
    else:
        port = args.serial_port or utils.autodetect_serial_port()
        client = clients.UARTClient(port)

    config = configs.IQServiceConfig()
    config.sensor = args.sensors
    config.range_interval = [0.2, 0.6]
    config.update_rate = 50

    info = client.start_session(config)

    interrupt_handler = utils.ExampleInterruptHandler()
    print("Press Ctrl-C to end session")

    fc = utils.FreqCounter(num_bits=(4 * 8 * info["data_length"]))

    while not interrupt_handler.got_signal:
        info, data = client.get_next()
        fc.tick()

    print("\nDisconnecting...")
    client.disconnect()
コード例 #3
0
ファイル: initialize.py プロジェクト: vrr8483/P21321
def main():
    client = clients.UARTClient("/dev/ttyUSB1")
    client.squeeze = False

    sensor_config = configs.EnvelopeServiceConfig()
    sensor_config.sensor = 1
    sensor_config.range_interval = [0.2, 1.0]
    sensor_config.profile = sensor_config.Profile.PROFILE_2
    sensor_config.hw_accelerated_average_samples = 20
    sensor_config.downsampling_factor = 2

    session_info = client.setup_session(sensor_config)

    client.start_session()
コード例 #4
0
def main():
    args = utils.ExampleArgumentParser().parse_args()
    utils.config_logging(args)

    if args.socket_addr:
        client = clients.SocketClient(args.socket_addr)
    elif args.spi:
        client = clients.SPIClient()
    else:
        port = args.serial_port or utils.autodetect_serial_port()
        client = clients.UARTClient(port)

    client.squeeze = False

    sensor_config = configs.SparseServiceConfig()
    sensor_config.sensor = args.sensors
    sensor_config.range_interval = [0.24, 1.20]
    sensor_config.sweeps_per_frame = 16
    sensor_config.hw_accelerated_average_samples = 60
    sensor_config.sampling_mode = sensor_config.SamplingMode.A
    sensor_config.profile = sensor_config.Profile.PROFILE_3
    sensor_config.gain = 0.6

    session_info = client.setup_session(sensor_config)

    pg_updater = PGUpdater(sensor_config, None, session_info)
    pg_process = PGProcess(pg_updater)
    pg_process.start()

    client.start_session()

    interrupt_handler = utils.ExampleInterruptHandler()
    print("Press Ctrl-C to end session")

    while not interrupt_handler.got_signal:
        data_info, data = client.get_next()

        try:
            pg_process.put_data(data)
        except PGProccessDiedException:
            break

    print("Disconnecting...")
    pg_process.close()
    client.disconnect()
コード例 #5
0
def main():
    args = utils.ExampleArgumentParser().parse_args()
    utils.config_logging(args)

    if args.socket_addr:
        client = clients.SocketClient(args.socket_addr)
    elif args.spi:
        client = clients.SPIClient()
    else:
        port = args.serial_port or utils.autodetect_serial_port()
        client = clients.UARTClient(port)

    client.squeeze = False

    sensor_config = get_sensor_config()
    processing_config = get_processing_config()
    sensor_config.sensor = args.sensors

    session_info = client.setup_session(sensor_config)

    pg_updater = PGUpdater(sensor_config, processing_config, session_info)
    pg_process = PGProcess(pg_updater)
    pg_process.start()

    client.start_session()

    interrupt_handler = utils.ExampleInterruptHandler()
    print("Press Ctrl-C to end session")

    processor = Processor(sensor_config, processing_config, session_info)

    while not interrupt_handler.got_signal:
        info, data = client.get_next()
        plot_data = processor.process(data)

        if plot_data is not None:
            try:
                pg_process.put_data(plot_data)
            except PGProccessDiedException:
                break

    print("Disconnecting...")
    pg_process.close()
    client.disconnect()
コード例 #6
0
def check_connection(args):
    print("Checking connection to radar")
    try:
        if args.socket_addr:
            client = clients.SocketClient(args.socket_addr)
        elif args.spi:
            client = clients.SPIClient()
        else:
            port = args.serial_port or utils.autodetect_serial_port()
            client = clients.UARTClient(port)

        client.connect()
        client.disconnect()
        return True
    except Exception:
        print()
        traceback.print_exc()
        print()
        return False
コード例 #7
0
def setup(request):
    conn_type, *args = request.param

    if conn_type == "spi":
        client = clients.SPIClient()
        sensor = 1
    elif conn_type == "uart":
        port = args[0] or utils.autodetect_serial_port()
        client = clients.UARTClient(port)
        sensor = 1
    elif conn_type == "socket":
        client = clients.SocketClient(args[0])
        sensor = int(args[1])
    elif conn_type == "mock":
        client = clients.MockClient()
        sensor = 1
    else:
        pytest.fail()

    client.connect()
    yield (client, sensor)
    client.disconnect()
コード例 #8
0
def main():
    args = utils.ExampleArgumentParser().parse_args()
    utils.config_logging(args)

    if args.socket_addr:
        client = clients.SocketClient(args.socket_addr)
    elif args.spi:
        client = clients.SPIClient()
    else:
        port = args.serial_port or utils.autodetect_serial_port()
        client = clients.UARTClient(port)

    client.squeeze = False

    range_start = 0.18
    range_end = 0.60
    num = int((range_end*100-range_start*100)/6)+1

    sensor_config = configs.SparseServiceConfig()
    sensor_config.sensor = args.sensors
    sensor_config.range_interval = [range_start, range_end]
    sensor_config.sweeps_per_frame = 16
    sensor_config.hw_accelerated_average_samples = 60
    sensor_config.sampling_mode = sensor_config.SamplingMode.A
    sensor_config.profile = sensor_config.Profile.PROFILE_2
    sensor_config.gain = 0.6

    session_info = client.setup_session(sensor_config)

    # pg_updater = PGUpdater(sensor_config, None, session_info)
    # pg_process = PGProcess(pg_updater)
    # pg_process.start()
    client.start_session()

    storage = []
    counter = 0
    sample = 300

    interrupt_handler = utils.ExampleInterruptHandler()
    print("Press Ctrl-C to end session")

    temp = np.zeros(num)
    
    #端末からデータを受け取り、フレームに入っているsweepの平均を取得し、tempに追加
    while not interrupt_handler.got_signal:
        data_info, data = client.get_next()
        counter += 1

        for sweep in data[0]:
            temp = temp + sweep

        temp = temp/len(data[0])
        storage.append(temp)
        temp = np.zeros(int(num))

        if(counter >= sample):
            break

    #300個のフレームから距離ごとに平均を取得
    # result = np.zeros(len(storage[0]))
    # for data in storage:
    #     result = result + data
    # result = result/len(storage)


    # clr=plt.rcParams['axes.prop_cycle'].by_key()['color']

    roop_count = 0
    prev_getData = np.loadtxt('sparse.csv')
    
    #生データ300個のフレームの平均を表示   
    show_raw_data = np.zeros(int(num))
    for frame in storage:
        show_raw_data += frame    
    show_curr_RawData = show_raw_data/sample
    
    ##保存していたデータの生データ300個のフレームの平均
    show_prev_RawData = []
    for data in prev_getData:
        show_prev_RawData.append(np.sum(data)/sample)

    x = np.arange(range_start*100,range_end*100+1,6)
    plt.subplot(1,3,1)
    plt.plot(x,show_curr_RawData,color='r')  
    plt.title("Raw Data(Current)") 
    plt.xlabel("Distance(cm)")
    plt.ylabel("Amptitude")
    plt.subplot(1,3,2)
    plt.plot(x,show_prev_RawData,color='b')  
    plt.title("Raw Data(Previous)") 
    plt.xlabel("Distance(cm)")
    plt.ylabel("Amptitude")
    plt.subplot(1,3,3)
    plt.title("Raw Data(Compare)") 
    plt.plot(x,show_curr_RawData,color='r')  
    plt.plot(x,show_prev_RawData,color='b')  
    plt.xlabel("Distance")
    plt.ylabel("Amptitude")
    
    # plt.tight_layout()
    # plt.show()
    # exit(1)
    

    #データを別々に表示
    for i in range(num):
        show_data = []
        plt.subplot(math.ceil(num/2),4,roop_count*2+1)
        plt.title(str(range_start*100+i*6)+"cm(Current)") 
        plt.xlabel("Quantity")
        plt.ylabel("Amptitude")
        for j in range(len(storage)):
            show_data.append(storage[j][i])
        plt.plot(range(1,sample+1),show_data,color='r')  

        plt.subplot(math.ceil(num/2),4,roop_count*2+2)
        plt.title(str(range_start*100+i*6)+"cm(Previous)") 
        plt.plot(range(1,sample+1),prev_getData[i],color='b')
        plt.xlabel("Quantity")
        plt.ylabel("Amptitude")
        roop_count += 1

    # plt.tight_layout()
    # plt.show()

    #データをあわせて表示
    for i in range(num):
        show_data = []
        plt.subplot(math.ceil(num/2),2,i+1)
        for j in range(len(storage)):
            show_data.append(storage[j][i])
        plt.plot(range(1,sample+1),show_data,color='r',label="Current Data")  
        plt.title(str(range_start*100+i*6)+"cm(Combination)") 
        plt.plot(range(1,sample+1),prev_getData[i],color='b',label="Previous Data")
        plt.xlabel("Quantity")
        plt.ylabel("Amptitude")
        plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0,fontsize='small')

    # plt.tight_layout()
    # plt.show()

    #ある距離の時系列データの遷移とそのデータのヒストグラムの表示   
    now_getData = []
    for i in range(num):
        show_data = []
        # plt.subplot(math.ceil(num/2),2,i+1)
        plt.subplot(math.ceil(num/2),4,i*2+1)
        plt.title(str(range_start*100+i*6)+"cm") 
        plt.xlabel("Distance") 
        plt.ylabel("Amptitude") 
        for j in range(len(storage)):
            show_data.append(storage[j][i])

        now_getData.append(show_data)
        # ヒストグラムの作成と表示
        # hist, bins = np.histogram(show_data,density=True)
        plt.plot(range(1,sample+1),show_data,color = "tomato")  
        plt.subplot(math.ceil(num/2),4,i*2+2)
        plt.hist(show_data,bins=10,density=True,color = "aqua")
        plt.title(str(range_start*100+i*6)+"cm") 
        plt.xlabel("Class") 
        plt.ylabel("Frequency") 
        # print("ヒストグラムの度数"+str(hist[0]))
        # print("階級を区切る値"+str(hist[1]))

    # plt.tight_layout()
    # plt.show()

    #ndarray型に変換し、保存
    # now_getData = np.array(now_getData)
    # np.savetxt('sparse.csv',now_getData)
    # exit(1)

    roop_count = 0
    prev_getData = np.loadtxt('sparse.csv')
    KL_storage = []
    JS_storage = []

    #ヒストグラムの度数からKLを算出
    for i in zip(prev_getData,now_getData):
        plt.subplot(math.ceil(num/2),4,roop_count*2+1)
        plt.title(str(range_start*100+roop_count*6)+"cm(Previous)") 
        plt.xlabel("Distance") 
        plt.ylabel("Frequency") 
        now_hist = plt.hist(i[0],bins=10,color = "lime")
        now_hist = normalization(np.array(now_hist[0]))

        # now_hist_normalization = normalization(np.array(now_hist[0]))
        # now_hist[0] = now_hist_normalization
        # print(now_hist)

        plt.subplot(math.ceil(num/2),4,roop_count*2+2)
        plt.title(str(range_start*100+roop_count*6)+"cm(Now)") 
        plt.xlabel("Distance") 
        plt.ylabel("Frequency") 
        prev_hist = plt.hist(i[1],bins=10,color = "deepskyblue")
        prev_hist = normalization(np.array(prev_hist[0]))
        # print("now_histの要素の数: "+str(len(now_hist[0])))
        # print("prev_histの要素の数: "+str(len(now_hist[0])))
        KL_value = KLdivergence(now_hist,prev_hist)
        print(str(range_start*100+roop_count*6)+"cm時のKL_Divergence: "+str(KL_value))
        JS_value = JSdivergence(now_hist,prev_hist)
        print(str(range_start*100+roop_count*6)+"cm時のJS_Divergence: "+str(JS_value)+"\n")
        KL_storage.append(KL_value)
        JS_storage.append(JS_value)
        roop_count += 1
    
    # plt.tight_layout()
    # plt.show()
    
    temp_KLlist = []
    temp_store_KLlist = []
    temp_JSlist = []
    temp_store_JSlist = []
    temp_KLlist.append(np.array(KL_storage))
    temp_JSlist.append(np.array(JS_storage))
    
    #ファイルからデータを読みこむ
    store_KLarr = np.loadtxt("KLDivergence_Sparse.csv",delimiter = ",")
    store_JSarr = np.loadtxt("JSDivergence_Sparse.csv",delimiter = ",")
    temp_store_KLlist.append(store_KLarr)
    temp_store_JSlist.append(store_JSarr)

    #データを追加
    store_KLarr = np.empty((0,num),int)
    store_JSarr = np.empty((0,num),int)
    for data in temp_store_KLlist:
        print(data)
        store_KLarr = np.append(store_KLarr,np.array(data),axis=0)
    # store_KLarr = np.append(store_KLarr,np.array(temp_store_KLlist),axis=0)
    for data in temp_store_KLlist:
        store_JSarr = np.append(store_JSarr,np.array(data),axis=0)
        # store_JSarr = np.append(store_JSarr,np.array(temp_store_JSlist),axis=0)
    store_KL = np.append(store_KLarr,np.array(temp_KLlist),axis=0)
    store_JS = np.append(store_JSarr,np.array(temp_JSlist),axis=0)

    #ファイルを保存
    store_KL = np.savetxt("KLDivergence_Sparse.csv",store_KL,delimiter=",")
    store_JS = np.savetxt("JSDivergence_Sparse.csv",store_JS,delimiter=",")

    #KL,JSの平均値
    # print("KL_Divergenceの平均値: "+str(np.sum(np.array(KL_storage))/num)+"\n")
    # print("JS_Divergenceの平均値: "+str(np.sum(np.array(JS_storage))/num)+"\n")
    
    #KLとJSを可視化
    X = list(range(int(range_start*100),int(range_end*100+1),6))
    plt.subplot(1,3,1)
    # plt.plot(range(len(KL_storage)),KL_storage,color='r',marker="o")  
    plt.plot(X,KL_storage,color='r',marker="o")  
    plt.title("KL Divergence") 
    plt.xlabel("Distance") 
    plt.ylabel("Amptitude") 

    plt.subplot(1,3,2)
    plt.plot(X,JS_storage,color='b',marker="o")  
    plt.title("JS Divergence") 
    plt.xlabel("Distance") 
    plt.ylabel("Amptitude") 

    plt.subplot(1,3,3)
    plt.plot(X,KL_storage,color='r',marker="o")  
    plt.plot(X,JS_storage,color='b',marker="o")  
    # plt.plot(X,KL_strage,color='r',marker="o",linewidth=0)  
    # plt.plot(X,JS_strage,color='b',marker="o",linewidth=0)  
    plt.title("Compare") 
    plt.xlabel("Distance") 
    plt.ylabel("Amptitude") 
    
    # plt.tight_layout()
    # plt.show()

    print("Disconnecting...")
    client.disconnect()
コード例 #9
0
def main():
    args = utils.ExampleArgumentParser().parse_args()
    utils.config_logging(args)

    if args.socket_addr:
        client = clients.SocketClient(args.socket_addr)
    elif args.spi:
        client = clients.SPIClient()
    else:
        port = args.serial_port or utils.autodetect_serial_port()
        client = clients.UARTClient(port)

    client.squeeze = False

    sensor_config = configs.EnvelopeServiceConfig()
    sensor_config.sensor = args.sensors
    sensor_config.range_interval = [0.2, 1.0]
    sensor_config.profile = sensor_config.Profile.PROFILE_2
    sensor_config.hw_accelerated_average_samples = 20
    sensor_config.downsampling_factor = 2

    session_info = client.setup_session(sensor_config)

    pg_updater = PGUpdater(sensor_config, None, session_info)
    pg_process = PGProcess(pg_updater)
    #pg_process.start()

    client.start_session()

    interrupt_handler = utils.ExampleInterruptHandler()
    print("Press Ctrl-C to end session")
    f = open("demo.txt", "w")
    while not interrupt_handler.got_signal:
        data_info, data = client.get_next()
        tempstr = " "
        #Array is within another Array, need to get address internal array
        dataArray = data[0]
        localMaxArray = [0, 0]
        breakVariable = 0
        iteratorJ = 0
        iteratorI = 0
        for x in dataArray:
            if (iteratorJ > 10):
                localMaxArray[0] = iteratorI - iteratorJ
                break
            else:
                if (x >= localMaxArray[0]):
                    localMaxArray[0] = x
                    iteratorJ = 0
                else:
                    iteratorJ = iteratorJ + 1
            iteratorI = iteratorI + 1
        while (dataArray[iteratorI] >= dataArray[iteratorI + 1]):
            iteratorI = iteratorI + 1
        iteratorJ = 0
        while (iteratorI < 827):
            if (iteratorJ > 10):
                localMaxArray[1] = iteratorI - iteratorJ
                break
            else:
                if (dataArray[iteratorI] >= localMaxArray[1]):
                    localMaxArray[1] = dataArray[iteratorI]
                    iteratorJ = 0
                else:
                    iteratorJ = iteratorJ + 1
            iteratorI = iteratorI + 1
        #try:
        #pg_process.put_data(data)
        #except PGProccessDiedException:
        #break
        print(
            math.floor(
                (((localMaxArray[1] - localMaxArray[0]) / 1.773) * 0.0393701) *
                10) / 10)
    print("Disconnecting...")
    f.close()
    #pg_process.close()
    client.disconnect()
コード例 #10
0
ファイル: envelope.py プロジェクト: vrr8483/P21321
import sys
from acconeer.exptool import clients
from acconeer.exptool import utils
from acconeer.exptool import configs
#from acconeer.exptool.pg_process import PGProccessDiedException, PGProcess
import numpy
import math
import time
from scipy import stats

client = clients.UARTClient("/dev/ttyUSB1")
numtries = 1


def initialize():
    '''
    **********************************
    Initialize: Call once at beginning
    **********************************
    '''
    client.squeeze = False

    sensor_config = configs.EnvelopeServiceConfig()

    sensor_config.sensor = 1
    sensor_config.range_interval = [0.2, 1.0]
    sensor_config.profile = sensor_config.Profile.PROFILE_2
    sensor_config.hw_accelerated_average_samples = 20
    sensor_config.downsampling_factor = 2
    sensor_config.repetition_mode = configs.EnvelopeServiceConfig.RepetitionMode.SENSOR_DRIVEN
    sensor_config.update_rate = 10 * numtries  # period of 100ms