問題タブ [lego]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - メッセージ、ハンドラー、およびスレッディング : Lego Mindstorms bluetooth 通信
この質問は、レゴ マインドストーム ロボットの NXT ブロックと通信するアプリケーションの作成に関するものです。
私がしたいこと
NXC (厳密には C ではなく、NXT 用のプログラムを作成するための言語) は、条件が true と評価されるuntil(condition)
まで待機する関数を提供します。Bluetoothメッセージングプロトコルを使用してこれを実装し、AndroidアプリケーションからBluetooth経由でNXTと通信したいと考えています。
これまでにできること:
入力クエリ メッセージ ( ) を送信できます。このメッセージは、 の入力のgetInputValue(int in)
現在のステータスを求めるメッセージを NXT に送信します。次に、NXT はこの情報を含むメッセージを送り返します。この情報は、最後に要求された入力値を保持するグローバル変数に書き込まれます ( と呼びましょう)。myValue
問題は何ですか:
私はレゴ MINDroid アプリケーションの一部を使用しています。このクラスには、NXT との直接通信を処理する別の通信スレッドがあります。メッセージを受信すると、 を介してメイン スレッドに転送しますHandler
。この問題は、応答を待ってビジー状態にしようとすると発生します。
ハンドラが実際にメッセージを受信しないように、メイン スレッドがビジー状態になります。通信スレッドは NXT からメッセージを受信し、それらをメイン スレッドに転送しますが、ハンドラーは他の処理を行っているため呼び出されません。
これを回避する最善の方法は何ですか? メッセージの受信も停止するため、スレッドを待機させることはできません:(
任意の提案をいただければ幸いです! また、喜んでコードの詳細を説明します。
役に立つかもしれないリンク
http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/main.html
http://github.com/NXT/LEGO-MINDSTORMS-MINDdroid
http://mindstorms.lego.com/en-us/support/files/default.aspx (Bluetooth ドキュメント用)
android - Bluetooth を使用して Android と実行中の NXT プログラムとの間で対話する方法
LEGO NXT のセンサーを読み取るように Minddroid github Android プログラムを変更しました (素晴らしいデバイスです!)。次に、NXT で実行されている Mindstorms プログラムに Bluetooth メッセージを読み書きしたいと思います。Androidが要求したときにNXTプログラムを実行し、結果/読み取り値をAndroidに送信できるようにします。
android - Android から LEGO NXT にメッセージを送信する
文字列/数値のようなメッセージを Android から NXT に送信したいだけです。しかし、NXT はデータを受信しませんでした。ROBOT C for NXT プログラムと ROBOT C の BluetoothMessage の例を使用します。
まず、Android と Lego Mindstorm NXT の間の Bluetooth 接続から Android 用のソース コードを試します。しかし、うまくいきませんでした。
次に、Google Play の NXT メールボックスからソフトウェアをダウンロードすると、動作します。
メッセージを NXT に送信するための Android のソースコードを持っている人はいますか?
c - レゴブリックのNXT-GビジュアルプログラミングとNXCCのようなプログラミングの違い
私はレゴNXTプログラミングに近づいており、非常に優れたサイトhttp://nxtprograms.comから始めました。。特に、バランスセンサーとして光センサーを備えたシンプルなセグウェイの指示に従いました(http://nxtprograms.com/NXT2/segway/index.html)。私は彼の(Dave Parker)NXT-Gプログラムを研究し、彼のロボットとより単純なカスタムバージョン(「ドライバー」なし)で正常に複製しました。彼のプログラムと私のプログラムのどちらでも、すべてが機能します。私はすでにClangを知っていて、より大きな可能性を活用したかったので、すぐにNXCプログラミングに切り替えました。まったく同じPID定数と計算を使用して、バランシングアルゴリズムを非常にうまく複製しました。その結果、Cプログラムが機能しなくなります。ロボットは1〜2秒間バランスを取り、振動はNXT-Gの場合よりも大きくなり、落下します。
NXT-GとCの基本ロジックを比較しましたが、違いはありませんでした。ですから、私のプログラムでは、モーター制御に何か問題があるのではないかと思います。モーターを制御するNXT-Gグラフィカルボックスは、OnFwdSync(...)/ OnRevSync(...)を呼び出すだけの何かをしていると思います。これは、私のプログラムが大きな初期振動を生成する理由を説明します。
誰かがその単純なセグウェイレゴを運転するNXCプログラムの例を持っていますか、または私のプログラムのモーター制御が失敗する理由を説明できますか?一番下に私のプログラムのソースコードを添付しました。
ありがとう。
python - 角度に基づいてレゴ nxt を回転させる
ロボットが北向きから南向き、東向き、または西。ありがとう
よろしく、エドワード
python - 値を繰り返さずにロボットとオブジェクトの位置を更新する方法
activate(valueList) メソッドに繰り返し渡される値の問題を解決する方法を知りたいです。プログラムは、ロボットとボールがあり、メイン ループが値リスト メソッドを継続的に渡すように動作します。私の目標は、ロボットをボールの方向に向けて、それに向かって移動することです。問題は、ボールがまだ動いている場合、停止するまで値が同じままであり、ロボットが以前の角度に回転することです。受け継がれました。これを回避する具体的な方法はありますか?ロボットとボールが静止していても、渡される valueList の値は +2 または -2 で区別されることに注意してください。PS。ネットワーク経由で値を渡すカメラに接続されているレゴ nxt (nxt-python) を使用しています
例えば:
値を返すメソッド:
activate メソッド: Ps turn_to および move_to メソッドは、オブジェクトに向かって回転および移動することを示します。
そして、valueList に値を渡し続けるこのメイン ループ
python - ロボットをボールの方向に回転させる
この方法が正しい方法かどうか知りたいのですが、北を向いているロボットを、この場合は赤いボールであるオブジェクトの方向に回転させたいと思います。
以下にグリッドとボールの位置を示します
そして、これに対する私のコードは次のとおりです。
私はこれがこれを解決する正しい方法であるか知りたいだけですか?または、以前に投稿した質問に基づいて値を渡すため、代替手段はありますか。ありがとう
よろしくエドワード
python - ロボットが止まらない
ロボットを特定の距離まで動かすコードを添付しているのですが、近づくと動きを止めて障害物を出したいです。どうすればいいですか?超音波を追加して障害物を検出しようとしました。私はnxt-pythonを使用しています
c++ - NXT画面へのガベージ出力
NXT で作業したい C++ プロジェクトがいくつかあるので、nxtOSEK を起動して実行しようとしてきました。Web を検索したところ、そうするための最も推奨されるシステムであると思われました。
ブリックを更新してセットアップするためにこのチュートリアル (私は Mac を使用しています) に従ってきましたが、サンプル プログラムをコンパイルしてブリックにダウンロードするところまでたどり着きました。
ただし、helloworld プログラム (「OSEK HelloWorld」をブリックの画面に出力するだけ) をコンパイルして実行すると、画面がゴミ文字でいっぱいになり、電源をリセットすることによってのみ元に戻すことができます。
編集
ビルド プロセス中に、次のエラーに気付きました。
それはおそらく問題の一部でしょうか?
楽しみのために、ビルド プロシージャ全体をダンプします。
もう一度編集し て、適切なバージョン情報をいくつか:
3番目を編集
また、モーターを回転させるだけのプログラムを実行しているときに、画面にゴミが表示されたり、ブロックが凍ったりします。
4番目を編集
問題は解決したと思いますが、どうすれば解決できるのかまだわかりません。NXT のファームウェアが更新されていないことがわかりました。Mac と Windows の両方で試してみましたが、「かかる」ようには見えません。たとえば、毎回ダウンロード成功メッセージが表示されますが、NXT を起動したときに nxtOSEK ロゴが表示されません。これで、画面にゴミが表示される理由が説明できますが、正しく点滅しない理由がわかりません。
最初にファームウェア更新モード (tic-tic-tic) にしてから、フラッシュ プロセスを実行していますが、何もしません。
python - nxt-python の turn メソッドの修正
障害物にぶつかったときにロボットの動きを止めたいです。SynchronizedMotors
ただし、下のクラスの turn メソッドでは、motor.py
そうすることができません。どうすれば修正できますか?直接的な解決策はありますか?スレッドを使用してみましたが、うまくいきませんでした。