正在上传图片(0/1)

CodeMaster 第二次任务+代码说明及BUG提交

 6
手机看帖 7 2867
大家好,本次任务写得比较多,任务要求都达到了,感觉涉及到挺多东西的,有不同随机数的获取、列表的循环写入和读取、列表数据排序、数据转换等等。想借此帖子尽量写得详细点,有空的朋友帮忙看看,没空的朋友看下面视频就能知道这次任务流程了,这次还发现了两个BUG。
下面开始:
先简单说明下本次任务:随机生成100内的斐波那契数列。数列举例:1、1、2、3、5、8、13、21、34、55、89、....,即第一个加第二个等于第三个。
任务要求是自动生成两个1到5的数,并展示出来,然后开始击打标签,将数列展示出来。视频如下
下面开始介绍代码,时间不够用,有很多可以进一步优化的地方,非科班出生,希望能和大家互相交流,学习成长。
图1是机甲及程序的初始化,我这里第一行V1是调云台默认俯仰角,方便调试。其他是一些初始设置
图1
图2是识别标签信息并存入列表中,如果10个标签都识别到(这里可以优化成持续获取,识别到没有的ID就存入列表,直到10个不同标签信息都获取到),调用run_sort_2函数将标签信息从小到大排序,排序完成后调用run_angle_3将坐标列表转化成云台角度。
图2
图3是run_sort_2是将标签信息按ID值从小到大排序。
一个标签的数据是5项,分别是ID、X坐标、Y坐标、X宽度、Y宽度(应该没记错吧)。
将J设为0,用J来代表当前要查找大数字,数字0到9的ID值是10到19,所以检测每个标签信息的ID等于J+10,是的话就存入新列表中,然后J加一,寻找下一个数字。
将I设为0,用I来代表当前标签信息列表中的项,标签信息列表第1项是标签数,第2项是标签ID,此后每隔5项就是标签ID。所以2+(5*I)就能寻找列表中所有的标签ID了
循环一遍后,就将标签信息列表按ID值从小到大存入新列表中了。

run_angle_3将坐标列表转化成云台角度。
新列表生成后,存的还是坐标信息,我们是控制云台角度的,所以要把坐标信息转成角度信息,根据大师之路的教程,可以知道X方向是(X-0.5)*96 ,Y方向是(0.5-Y)*54.
(因为我实际测试中,发现有偏差,就把比例扩大了,此处需要优化)。
图3
图4、图5是生成斐波那契数列
先生成随便数,如果相等重新生成,直到不同。
将生成的两个随便数排序,把小的用左云台显示,大的用右云台显示
生成斐波那契数列并存入列表
初始化为击打状态
图4
图5
图6读取斐波那契数列列表并分别将十位和个位输出给击打函数
图7击打函数,根据输入的数击打对应的数字。
图6
图7
下面是发现的两个BUG,大家编程时注意下哈。
1:列表是不能访问第0项的。发现用用变量的方式读取列表时,当变量为0时,却不报错误,实际读取到的数是列表最后一项。测试过多次,可以复现。
如图是我的复现,先把列表填为0到9,列表第1项为0,最后一项是9。将I设为0,既列表第0项,确可以正常运行,读取到的数是9。看右边参数表,I为0,TEMP为9。
这个BUG,操作列表时,一不小心就中招,而且不好发现。

2:这个BUG影响比较小,测试发现数值5.1、6.1、7.1保持后打开或者复制后会变成5.10000000000001、6.1000000000000001、7.100000000000001。如最后一图
图8
图9
终于写完了,写了好久,以后继续,谢谢大家,希望能和大家更多的互相交流学习。
评论
上传
你需要登录之后才能回帖    登录 | 注册
JIONEY  DJI FPV认证用户 2019-9-25 3#
超级给力~~!学习了
总督  机甲大师 RoboMaster S1认证用户 2019-9-25 4#
文章很好,给你点赞!关于bug:一是S1的列表是RmList对象,是封装后的列表,下标就是从1开始的,不是bug;二是5.1变成很多位小数的问题是python浮点型类型的特征,也不是bug。
楼主  Mavic Mini认证用户 2019-9-25 5#
总督机甲大师 RoboMaster S19-25 00:26
文章很好,给你点赞!关于bug:一是S1的列表是RmList对象,是封装后的列表,下标就是从1开始的,不是bug;二是5.1变成很多位小数的问题是python浮点型类型的特征,也不是bug。
总督,我没写清楚,重新编辑了下文字,下标是从1开始,0是不允许的,但是将变量设为0,然后就变成可以读取第0项,实际读取的是最后一项~~。
小数显示测试发现就5.1、 6.1 、7.1 会变成这样。虽然实际不影响,但也是有问题哈
bakedkids  机甲大师 RoboMaster S1认证用户 2019-9-25 6#
向大神学习学习
楼主  Mavic Mini认证用户 2019-9-25 7#
感谢钟意大佬支持
楼主  Mavic Mini认证用户 2019-9-25 8#
我是菜鸟一枚哈,互相学习,用你瞄准后获取坐标的方法就不用这么麻烦了,哈哈 ,以后就用你的方法了
三木上校  机甲大师 RoboMaster EP认证用户 2022-3-25 9#
请问一下,用python编程,ep机器人出现任务冲突该怎么解决
Robot is already performing 1 action(s) action_id:2, state:action_running, percent:70, x:189, y:118, z:0
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表