問題タブ [mindstorms]
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 ドキュメント用)
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プログラムの例を持っていますか、または私のプログラムのモーター制御が失敗する理由を説明できますか?一番下に私のプログラムのソースコードを添付しました。
ありがとう。
c++ - NXT画面へのガベージ出力
NXT で作業したい C++ プロジェクトがいくつかあるので、nxtOSEK を起動して実行しようとしてきました。Web を検索したところ、そうするための最も推奨されるシステムであると思われました。
ブリックを更新してセットアップするためにこのチュートリアル (私は Mac を使用しています) に従ってきましたが、サンプル プログラムをコンパイルしてブリックにダウンロードするところまでたどり着きました。
ただし、helloworld プログラム (「OSEK HelloWorld」をブリックの画面に出力するだけ) をコンパイルして実行すると、画面がゴミ文字でいっぱいになり、電源をリセットすることによってのみ元に戻すことができます。
編集
ビルド プロセス中に、次のエラーに気付きました。
それはおそらく問題の一部でしょうか?
楽しみのために、ビルド プロシージャ全体をダンプします。
もう一度編集し て、適切なバージョン情報をいくつか:
3番目を編集
また、モーターを回転させるだけのプログラムを実行しているときに、画面にゴミが表示されたり、ブロックが凍ったりします。
4番目を編集
問題は解決したと思いますが、どうすれば解決できるのかまだわかりません。NXT のファームウェアが更新されていないことがわかりました。Mac と Windows の両方で試してみましたが、「かかる」ようには見えません。たとえば、毎回ダウンロード成功メッセージが表示されますが、NXT を起動したときに nxtOSEK ロゴが表示されません。これで、画面にゴミが表示される理由が説明できますが、正しく点滅しない理由がわかりません。
最初にファームウェア更新モード (tic-tic-tic) にしてから、フラッシュ プロセスを実行していますが、何もしません。
c# - マインドクォールとC#を使用してレゴマインドストームをプログラムする
コンピューターからLEGONXTを実行するプログラムに取り組んでいます。LEGONXTで動作するMindSqualls.NETライブラリを見つけましたが、ソフトウェアを動作させるためにDLLやc#ライブラリをどう処理するかわかりません。
最初にDLLバージョンをダウンロードし、プロジェクト内のさまざまなフォルダーすべてで試してみました。しかし、私がコードでを使おうとすると:
エラーが発生します
タイプまたは名前空間の名前'NKH'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
c#プロジェクトをダウンロードしてソリューションに含めようとすると、同じエラーが発生します。
DLLまたはc#プロジェクトを使用できるように含める方法を知っている人はいますか?
java - Lego Mindstorms: gnu noSuchPortException 試行が数回成功した後
レゴ マインドストーム ロボットに直接コマンドを送信するために、NXTComm および RXTXComm (x64 用) ライブラリを使用します。
何度も開始しProcessing Applet
て呼び出すことができます
ロボットは、起動すると2音、PApplet
閉じると1音ではっきりと鳴ります。これは、「ロボットが接続されました」と「ロボットが切断されました」のアラートだと思います。ただし、4 ~ 5 回試行すると、常に次のエラーが表示されます。
このエラーが出ても、ロボットの「終音」が出ます。これ以降、コンピューターを再起動することによってのみこれを修正できます。この後、すべてが新しいものから始まります。
このエラーの原因は何ですか? ポート接続を「きれいにする」方法はありますか?
java - リフレクションなしでJavaシリアライゼーションを行うには?
Java リフレクションをサポートしていない Lego Mindstorm NXT ロボットに取り組んでいます。
何らかの理由 (シミュレーターと実際のマインドストームの並行作成) で、シリアライゼーションを使用して Java オブジェクトを交換したいと考えています。
問題は、シリアル化がリフレクションを使用することです。これは、マインドストームの JVM ではサポートされていません。
何か案は?
Zwong.de でこのページを見つけましたが、ソース コードは削除されています。
lego - NXC のループで使用した後に変数を 0 にリセットする方法
奇妙な理由で、変数「角度」は、ループが終了しても 0 にリセットされません。すべての数学は c = sqrt(a^2 + b^2 - 2abCos(theta)) を計算するだけです。ロボットはすべての数学を 1 行で実行するわけではありません。完全なコードでは、a と b は両方とも変化する変数であり、超音波センサー入力に基づいています。
サブは 3 回まで呼び出すことができ、角度変数はサブが呼び出されるたびに 0 から開始する必要があります。
float angle = 0; を入れてみました。または単に角度= 0; 想像できるすべての場所で、しかし何も機能しません。int angle = 0; を使用してみました。複数の場所で。
nxt - C# で書かれたプログラムを nxt 2.0 ブリックにダウンロードできますか?
C# 言語とhttp://www.mindsqualls.net/ライブラリを使用しています。しかし、プログラムをブリックにダウンロードする方法が見つかりませんでした。実際、それは可能ですか?または、Bluetooth 経由で nxt 2.0 ロボットを制御する必要がありますか? プログラムをブリックにダウンロードできる言語/ライブラリはありますか、それとも Mindstorms nxt 2.0 ビジュアル エディタでのみ可能ですか?
python - Bluetooth 経由の Python データ転送
Pythonプログラムによって計算されたデータをBluetooth経由でレゴ マインドストーム nxt2.0 ロボットに送信する必要があります。これはどのように可能ですか?どのようなツールが必要ですか?