前言:  

        机械手解魔方的快速方案,基本就是两只手成90度摆放,手臂固定,手腕进行旋转,就可以达到 面切换和 旋转面的功能,接下来就介绍一种坐标转换的方案。

这里的执行步法是按照国际上魔方的解法编码  

魔方表示法 咱们先看一串天书般的字母:UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR 这种表示法是由一个叫Mike Reid的兄弟首先使用的,它表示一个已经被解好的魔方。 先不要被这串字母吓倒,看算法就像追mm一样,要迎难而上。仔细观察,你会发现其中只有六种字母: U: Up F: Front R: Right L: Left D: Down B: Back   其实这就是代表了空间坐标系的六个方向,就是传说中的“眼观六路”的那六路。 表示法中包含了12组双字母的组合,分别代表了魔方的12个棱,第一组UF就表示Up和Front之间夹角的棱。 另外还包含了8组三字母的组合,分别代表了魔方的8个角,每个角由三块颜色组成。看下面的示意图:

 

这里的坐标系都是相对的
例如 D1B3F1U3B1L2U3B2D3L2U1R1D1F2D1L2D2B2D3L2D1B2U2L2D2B2U2L2B2R2   此为 Jaap Scherphuis核心算法求解的步法 1表示顺时针旋转90  2表示顺时针旋转180 3表示逆时针旋转90(也就是顺时针270)

分析:     图为机械手90度方案排布,加持机械手朝向魔方面左右两边的边缘中心。这样做的好处就是通过切换面朝向,就可以旋转每个面!但是旋转过程中,一个机械手没有回归初始位置,另一个就开始旋转,就会导致干涉问题,所以机械手回归初始位置的过程就导致了在一些步数执行上就增多了!

手腕不可以360度连续旋转的缺陷:

 

        假设我右手顺旋转180度,此时右手已经无法继续准时针旋转了,左手换面后,右手还是要执行顺时针90度的步法,那么右手就必须要回逆时针回转,才可以进行操作!这就是多余的步骤了!
手腕可以360度自由旋转:
        此时,我担心的问题就是机械手在旋转前另一只手是否在初始位置,避免干涉,经此而已。可以使机械手在必要的时候进行回归初始位置,节省了执行步数!
如果仔细分析,就会发现手腕如果可以360度无限自由旋转的好处就是,避免了手在一些位置不会因为自身旋转角度限制,导致的归位。以下为我们的执行效果: AIR机器人创意工作室 (往下翻)
        事实上,在比赛的现场,有很多队伍都采用的这种连续转动的方式,关节驱动硬件放在了手腕上,导致旋转式会带动硬件一起转动,然后线会缠绕。。。可是由于执行的不多,我看到有些高校直接让线长一点,旋转裹在手腕上,反正我走的又不多,可谓机智!

  控制思路:  

     在控制硬件上,我们采用的是STM32F407ZGT6,软件上我们提出了,’适应性‘执行的概念,这样就不用思考步法执行太多的优化操作!让软件自动的适应的去优化!机械手执行如果会发生干涉在去归位操作,否则就不用去执行归位操作!这点体现在软件上!如果仔细分析,这种想法会优化许多种情况,减少了复杂性。

  算法介绍: 一种坐标转化的方式:    

      规定魔方在机械手上以上图左边的方式摆放为初始位置,规定右手调整坐标让 F 和B这两个面朝向左手进行旋转操作,规定左手调整 U R D L 这几个面的坐标朝向左手进行旋转操作,有趣的说,左右手不是平等的,右手旋转面的行为要多于左手,左手调整坐标的行为会多于右手!

 

     魔方在机械手时,规定按一定顺序读取,将坐标转化为1维数组,然后在进行坐标变换的分析。

 

     坐标变换是比较麻烦的部分,如意上图的初始位置,我需要旋转R这个面,那么就需要左手顺时针旋转90°,使右手朝向R,此时按照读取顺序重新读取你就会发现 为FLURDB,对比上一次的坐标,只是将L移到了第二位,或者说是将第五位移到了第二位!同样的道理,进行其他面的坐标转化,都是以一定规律进行一维内元素位置变换的,当然,这也是很容易理解的,只有那么几种变换,规律是很好形成的!这点不论怎么变换,都是同样的道理,所要做的就是实时更新坐标即可!

 

     以上就是机械手解魔方坐标变换和执行的原理和思想,具体下位机执行的代码,如果需要可以在下方留言。

 

     这只是:之一,所以说可能还有更好的算法,希望可以分享,共同学习!有误希望指正!

 

    视觉方案: 点击打开链接

 

    请到我的Github 直接参考代码。 点击打开链接