|
この記事は、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°回転させます。 インストール方法Qbr を使用するには、コンピューターに Python 3、Git、および Web カメラがインストールされている必要があります。 インストール方法は以下の通りです。
プログラムを実行するときは、実行する前に必ず仮想環境をアクティブ化してください。
操作も非常に簡単です。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 |
ルービック キューブを解くツールがオープン ソースです。カメラを一目見るだけで、解答全体を復元できます。
関連するおすすめ記事
-
Git プロジェクトは複数のリモート リポジトリを同時にサポートします。
-
89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">resource ( s )
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 検出キャッシュをクリアしています
2022/07/02 13:17:33 タイムアウト1 分で4つのリソースの待機を開始
2022/07/02 13:17:39 43個のリソースを作成しています( s )
2022/07/02 13:17:39 5分0 秒のタイムアウトで43のリソースの待機を開始
2022/07/02 13:17:40 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:17:42 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
……
2022/07/02 13:19:44 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:38:27 デプロイメントの準備ができていません: argocd / argocd - dex - server 。 1 個のポッドのうち0 個が準備完了です
2022/07/02 13:38:30 リリースインストールに成功しました: argocd / argo - cd - 4.9.11
2022-07-02 13:38:30 ✔ [ 成功] ツール( argocd / default ) の作成が完了しました。
2022 - 07 - 02 13 : 38 : 30 ℹ [ 情報] -------------------------- [ 処理の進行状況: 4/4 。 ] --------------------------
2022 - 07 - 02 13 : 38 : 30 ℹ [ INFO ] 処理中: ( argocdapp / default ) -> 作成...
2022-07-02 13:38:31 ℹ [ INFO ] application . argoproj . io / dtm - test - go が作成されました
2022-07-02 13:38:31 ✔ [ 成功] ツール( argocdapp / default ) の作成が完了しました。
2022-07-02 13:38:31 ℹ [ 情報] -------------------- [ 処理が完了しました。 ] --------------------
2022-07-02 13:38:31 ✔ [ 成功] すべてのプラグインが正常に適用されました。
2022-07-02 13:38:31 ✔ [ 成功] 申請が完了しました。適用プロセス中、実行状態は定義された状態バックエンドストレージに保存されます。例えば、ローカルストレージを使用している場合、実行状態はルートディレクトリのdevstream.stateファイルに保存されます。合計4つのツールチェーンがあり、最初の2つが完了し、最後の2つが認識された場合、最初の2つのプラグインの状態がこのファイルに保存されます。次回の再適用時には、最後の2つのツールチェーンのみを実行する必要があります。
上記で定義したツールチェーンは、最終的に GitHub 上に Golang Web 用のスキャフォールディングされたアプリケーション コード リポジトリを作成します。
GitHub Actions は、CI 操作と Docker イメージの構築に使用されます。
CI プロセスは最終的にイメージを Docker Hub にプッシュします。
その後、ArgoCD が Kubernetes にデプロイされます。
$ kubectl get pods -n argocd
名前準備完了ステータス再起動年齢
argocd - アプリケーション- コントローラー- 0 1 / 1 実行中0 5 分55秒
argocd - アプリケーションセット- コントローラー- 64 d8c477f4 - 2 wrg6 1 / 1 実行中0 5 分55秒
argocd - dex - サーバー- dbdbf5499 - krmfz 1 / 1 実行中0 5 分35秒
argocd - 通知- コントローラー- b67c4bdb4 - 22 t9l 1 / 1 実行中0 5 分55秒
argocd - redis - df9db799b - 8 gbpv 1 / 1 実行中0 5 分55秒
argocd - リポジトリ- サーバー- 56769 cdd47 - zs65j 1 / 1 実行中0 5 分55秒
argocd - サーバー- 7 d4745f689 - w5pp7 1 / 1 実行中0 5 分55秒最後に、ArgoCDを使用してCD操作を実行し、サンプルアプリケーションをKubernetesクラスターにデプロイします。基本的には、ArgoCDアプリケーションオブジェクトを作成します。
$ kubectl アプリケーションを取得- n argocd
名前同期ステータスヘルスステータス
dtm - テスト- go 不明健康ArgoCD を通じて、デプロイされたアプリケーションの詳細を表示することもできます。
最後に、ツールチェーン全体を削除する場合は、`dtm delete` コマンドを実行するだけです。
プロセス全体は非常にスムーズでした(ただし、何らかの理由でGitHubへのアクセスが非常に遅かった点を除けば)。必要なプラグインを設定ファイルで定義するだけで済みます。プラグインの設定方法の詳細については、公式ドキュメント(https://docs.devstream.io/en/latest/plugins/plugins-list/)をご覧ください。
YAML設定ファイルに必要なDevOpsツールを定義するだけで、たった1つのコマンドでDevOpsツールチェーンとSDLCワークフロー全体を構築できます。DevStreamはまさに魔法のツールと言っても過言ではありません。
Git リポジトリ: https://github.com/devstream-io/devstream。
-
10 分でセットアップ完了: オープンソースでビジュアルなローコード プラットフォームです。
-
6 つの高品質なオープンソース Spring Boot プロジェクト。いずれも優れています。
-
オープンソースの電気自動車充電ソリューション
-
Git を使用してファイルを共有するにはどうすればよいでしょうか?