正在上传图片(0/1)

CodeMasrer 第1次任务

 3
手机看帖 5 2520
第一种情况没啥难度,直接做的第二种情况。第三种情况太难,有时间再说

我的思路跟机甲小兵不一样,用的是运动合成。

官方巡线用的是底盘跟随云台模式,我不是很喜欢。首先,云台根据线的情况先动,底盘跟着动,感觉响应速度会慢一些。其次,算法根据某个点的x坐标来转云台,我总感觉不太舒服,如果S1面前就是一条直线,如果S1以一个角度斜着进入,就会有一段很剧烈的调整的过程

于是我考虑用云台跟随底盘模式,然后,底盘采用运动合成
大师之路讲了,麦轮系统的速度是三个分量,X轴平移,Y轴平移和Z轴旋转。X方向不用说了,就是往前走,Y方向,我觉得应该用线上选定点的横坐标来计算,Z方向,我理解为转到前进方向,也就是线上选定点的切线方向,应该跟切线角挂钩。我用这个思路写了程序

官方美纹纸准备比赛的时候就用光了,淘宝上买的蓝色识别成功率低,用的绿色。希望官方出美纹纸,最好是红绿蓝三种颜色都有

def start():
    Line = RmList()
    V = 0.2  #速度,题目没提速度,那就龟速吧。家里地方小,速度快了,调试的时候横冲直撞,撞到家具太座会生气的
    gimbal_ctrl.pitch_ctrl(-20)  #向下转动云台到-20度
    robot_ctrl.set_mode(rm_define.robot_mode_gimbal_follow) #云台跟随底盘模式
    media_ctrl.exposure_value_update(rm_define.exposure_value_large) #曝光值设置,我家比较暗,设为大
    vision_ctrl.enable_detection(rm_define.vision_detection_line) #打开线识别
    vision_ctrl.line_follow_color_set(rm_define.line_follow_color_green) #线是绿色的
    Line = RmList(vision_ctrl.get_line_detection_info()) #获得线信息
    while True:
        if len(Line) >= 22:     #识别到线,走
            t = Line[5]       #t是第一点的切线角
            if Line[3] >= 0.6:   #第一点的横坐标大于0.6,判断为识别到双线中的右线
                Dy = Line[3] - 0.77     #右线的目标值是0.77,调出来的,这个值可以保持与线合适的距离
            else:
                Dy = Line[3] - 0.5      #第一点的横坐标小于0.6判断为单线,目标值是0.5
            chassis_ctrl.move_with_speed(V,3 * Dy,t * 2)  #X方向为速度,Y方向S1到线的距离与设定值的差,Z方向为切线角,我比较懒,用的比例(其实PID也不会调)
        else:
            chassis_ctrl.stop() #未识别到线,停
        Line=RmList(vision_ctrl.get_line_detection_info()) #再次获得线信息
采用云台跟随底盘模式,线上选定点的横坐标控制Y方向平移,切线角控制Z方向旋转,算是一次尝试吧

以后有机会想试试把曲率也加进来
评论
上传
你需要登录之后才能回帖    登录 | 注册
夏清  管理员 2019-9-9 3#
微信关注“大疆”,获取最全面的大疆产品教学视频,及时的售后服务动态,最实用的飞行指引和专业的技术支持,都在这里
太妖了,不得不服
棒棒的
中文编程  机甲大师 RoboMaster S1认证用户 2019-10-2 6#
请问能否麻烦试试开发环境是否支持中文变量? 比如把"Line"改成"线"能否运行?
中文编程  机甲大师 RoboMaster S1认证用户 2019-10-2 7#
请问能否麻烦试试开发环境是否支持中文变量? 比如把"Line"改成"线"能否运行?
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表