DUICUO

ルービック キューブを解くツールがオープン ソースです。カメラを一目見るだけで、解答全体を復元できます。

この記事は、AI関連ニュースメディアQuantumBit(WeChat ID: QbitAI)の許可を得て転載しています。転載の許可については、元の情報源にお問い合わせください。

ルービックキューブが解けない場合はどうすればいいですか?プログラムがお手伝いします。

ルービック キューブの 6 つの面すべてをカメラでスキャンするだけで、解答手順が表示されます。

ルービック キューブに標準的な配色がない場合や、部屋の照明条件が異常な場合でも、カラー キャリブレーション モードを通じて識別できます。

オランダの開発者がリリースした3x3ルービックキューブソルバー「Qbr」がGitHubでオープンソース化されました。

配達員は、ルービック キューブの公式のステップ コードを分かりやすい言葉に丁寧に翻訳してくれ、中国語もサポートしているので、指示に直接従うことができます。

この若者は独学で中国語を学び、「金克明」という中国名を名乗った。

解決結果は大体次のようになります。

ステップ数: 20

復元チュートリアル: B2 U2 F' RUD' L' B' ULFU F2 R2 F2 D' F2 D R2 D2

1. ルービックキューブの背面を180°回転させます。
2. ルービックキューブの最上層を 180 度回転させます。
3. ルービックキューブの前面を左に 90 度回転させます。
...
20. ルービックキューブの一番下の層を右に 90 度回転させます。

インストール方法

Qbr を使用するには、コンピューターに Python 3、Git、および Web カメラがインストールされている必要があります。

インストール方法は以下の通りです。

  1. $ git クローン --depth 1 https://github.com/kkoomen/qbr.git
  2. $ cd qbr
  3. $ python3 -m venv 環境
  4. $ ソース ./env/bin/activate
  5. $ pip3 インストール -r 要件.txt

プログラムを実行するときは、実行する前に必ず仮想環境をアクティブ化してください。

  1. $ ソース ./env/bin/activate
  2. $ ./src/qbr.py

操作も非常に簡単です。Lキーを押すと言語が中国語に切り替わり、Cキーを押すとカラーキャリブレーションモードの開始/終了ができます。

スキャンモードでスペースバーを押すと、認識した顔が保存されます。6つの顔すべてが認識されたら、Escキーを押してターミナルで結果を確認します。

△ルービックキューブがないので写真でしかテストできません。

結果を「平易な言語」に翻訳する必要がある場合は、実行時にパラメータ「-n」を追加するだけです。

ルービック キューブを解くアルゴリズムに関しては、Qbr はオープン ソースの Kociemba アルゴリズム ライブラリを直接使用します。このライブラリを使用すると、3x3 のルービック キューブを 20 回以内で解くことができます。

そこで疑問になるのが、カメラでスキャンした画像をアルゴリズムにどうやって入力するかということです。

カメラはどうやってルービックキューブを認識するのでしょうか?

Qbr はオープンソースのコンピューター ビジョン ライブラリOpenCV を使用します。

まず、画像をグレースケールに変換し、わずかにぼかします。次に、エッジ検出を使用してルービックキューブの面のエッジを識別します。

同じエッジに属する複数の線を結合できるように、すべてのエッジを太くします。

エッジは元の画像に重ね合わされ、OpenCV のapproxPolyDP関数を使用して閉じた領域を識別します。

不要なアウトラインをいくつか削除すると、ルービック キューブの小さな面がすべて表示されます。

金克明はこれを基に形状検出アルゴリズムを改良し、ルービックキューブの小面が曲線であったり標準的な正方形でなかったりする場合でも認識できるようになりました。

6 つの面すべてをスキャンした後、各面の平均色値を計算します。

次に、 CIDE2000 アルゴリズムを使用して、各ファセットがどの標準色に属するかを計算します。

最後に、カラーコードは順番に 1 つの文字列に結合され、ルービック キューブ アルゴリズムの入力として使用できるようになります。

次にロボット

Jin Keming の GitHub ページ

金克明はオランダで生まれ、後に独学で中国語を習得し、中国に留学した。

彼は Qbr に加えて、コードのドキュメントを自動生成する Vim プラグインも作成し、英語の単語「Documentation Generator」の頭文字を取って「Doge」と名付けました。このプラグインは Github で 500 個のスターを獲得しました。

1 秒以内にルービック キューブを解くことができるロボットを見て、プログラマーである彼は自分でも作ってみようと決意しました。

△ジェイ・フラットランドは2016年に公開され、0.9秒という世界記録を更新した。

ソフトウェアは完成したので、ロボットが作れるようになるのを楽しみにしています。

Qbrプロジェクトアドレス:

https://github.com/kkoomen/qbr