请选择 进入手机版 | 继续访问电脑版
正在上传图片(0/1)

CodeMaster第二次任务 代码分享及交流

 1
手机看帖 2 1431
首先来讲讲我是怎么表示每次要击打的数字。云台单侧的8个led单独表示数字1,2,3,4,5,6,7,8如下图所示
云台8个led灯全亮加上底盘右侧装甲板led灯亮表示数字9。
云台右侧led灯全亮加上底盘右侧加前方的装甲板led灯亮表示数字0
下面展示最终的效果视频。 我将100内斐波那契数列的所有数字的十位和个位拆开并存在一个列表里如:一个斐波那契数列[3,5,8,13,21,34,55,89]拆分成[3,5,8,1,3,2,1,3,4,5,5,8,9]然后按顺序依次击打。个位十位重复的数则击打两次。如:55则击打标签5两次。每次击打完成后会提示音效。
最后附上代码,欢迎大家来交流讨论
import random
list_MarkerList = RmList()
Fibonacci = [random.randint(1,5), random.randint(1,5)]
num_List = []
pid_Auto_Yaw = rm_ctrl.PIDCtrl()
pid_Auto_Pitch = rm_ctrl.PIDCtrl()
variable_X = 0
variable_Y = 0
index = 0
def System_Init():
    led_ctrl.set_top_led(rm_define.armor_top_all, 69, 215, 255, rm_define.effect_always_off)
    led_ctrl.set_bottom_led(rm_define.armor_bottom_all, 69, 215, 255, rm_define.effect_always_off)
    robot_ctrl.set_mode(rm_define.robot_mode_free)
    vision_ctrl.enable_detection(rm_define.vision_detection_marker)
    vision_ctrl.set_marker_detection_distance(3)
    media_ctrl.zoom_value_update(2)
    pid_Auto_Yaw.set_ctrl_params(55,0,10)
    pid_Auto_Pitch.set_ctrl_params(35,0,10)
    gimbal_ctrl.recenter()
    time.sleep(2)
def Fibonacci_Sequence():
    while Fibonacci[len(Fibonacci) - 1] < 100:
        Fibonacci.append(Fibonacci[len(Fibonacci) - 1] + Fibonacci[len(Fibonacci) - 2])
    del Fibonacci[len(Fibonacci) -1 ]
    for i in range(len(Fibonacci)):
        if Fibonacci < 10:
            unitPlace = Fibonacci % 10
            num_List.append(unitPlace)
        else:
            tenPlace = int(Fibonacci / 10 % 10)
            num_List.append(tenPlace)
            unitPlace = Fibonacci % 10
            num_List.append(unitPlace)
def Find_Target(num):
    global variable_X
    global variable_Y
    list_MarkerList = RmList(vision_ctrl.get_marker_detection_info())
    if list_MarkerList[1] > 1:
        for count in range(2,len(list_MarkerList),5):
            if list_MarkerList[count] == num + 10:
                variable_X = list_MarkerList[count + 1]
                variable_Y = list_MarkerList[count + 2]
                pid_Auto_Yaw.set_error(variable_X - 0.5)
                pid_Auto_Pitch.set_error(0.5 - variable_Y)
        gimbal_ctrl.rotate_with_speed(pid_Auto_Yaw.get_output(),pid_Auto_Pitch.get_output())
    else:
        gimbal_ctrl.rotate_with_speed(0,0)
def Operation():
    global index
    if num_List[index] == 0:
        led_ctrl.set_top_led(rm_define.armor_top_right, 69, 215, 255, rm_define.effect_always_on)
        led_ctrl.set_bottom_led(rm_define.armor_bottom_front, 69, 215, 255, rm_define.effect_always_on)
        led_ctrl.set_bottom_led(rm_define.armor_bottom_right, 69, 215, 255, rm_define.effect_always_on)
    elif num_List[index] == 9:
        led_ctrl.set_top_led(rm_define.armor_top_right, 69, 215, 255, rm_define.effect_always_on)
        led_ctrl.set_bottom_led(rm_define.armor_bottom_right, 69, 215, 255, rm_define.effect_always_on)
    else:
        led_ctrl.set_single_led(rm_define.armor_top_right, num_List[index], rm_define.effect_always_on)
    Find_Target(num_List[index])
    if abs(variable_X - 0.5) < 0.01 and abs(0.5 - variable_Y) < 0.01:
        time.sleep(1)
        media_ctrl.play_sound(rm_define.media_sound_shoot)
        led_ctrl.set_top_led(rm_define.armor_top_all, 69, 215, 255, rm_define.effect_always_off)
        led_ctrl.set_bottom_led(rm_define.armor_bottom_all, 69, 215, 255, rm_define.effect_always_off)
        index += 1
        if index >= len(num_List):
            index = len(num_List)-1
def start():
    System_Init()
    Fibonacci_Sequence()
    while True:
        Operation()   
评论
上传
你需要登录之后才能回帖    登录 | 注册
哆来咪  机甲大师 RoboMaster S1认证用户 2019-10-5 2#
学习一下
王生   2019-11-11 3#
學習一下, 多謝樓主的分享!!!
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表