タグ付けされた質問 「two-wheeled」

3
二輪ロボットに適したモデルは何ですか?
二輪ロボットに適したモデルは何ですか?つまり、どの運動方程式が二輪ロボットのダイナミクスを表しているのかということです。 さまざまな忠実度のモデルを歓迎します。これには、非線形モデルと線形化モデルが含まれます。

3
ジャイロスコープを使用して二輪ロボットのバランスをとるには、どのアルゴリズムを使用する必要がありますか?
ジャイロスコープから入力を取得し、これを使用して2つの独立した車輪を制御し、そのようなバランスの取れたロボットを確実に直立させて使用できる、優れた人気のある信頼できるアルゴリズムはありますか?私はそれを使ってロボットを動かしたり、静止しているときに直立させたりできるアルゴリズムを探しています。傾斜とそれを微調整する人々に対処する能力もボーナスになりますが、必須ではありません。

4
ジャイロスコープなしで二輪ロボットを動かして安定させることは可能ですか?
このような 2輪ロボットで、静止したまま安定させることができました。これは、車輪の位置を読み取って位置を決定するデジタルフィードバック制御システムを使用して行われ、車輪モーターからの自然な逆起電力がフィードバックループで速度を決定するために使用されました。根軌跡アルゴリズムを使用して設計され、安定性を維持し、パフォーマンスパラメーター(オーバーシュート率、整定時間など)を調整するように設計されたPIDコントローラーで安定しました。安定性を保ちながら同時に前進させたいと思っていましたが、それを実現できるリニアコントローラーの設計方法を理解できませんでした。ロボットを前進させることと、 車輪のフィードバックコントローラーを使用して安定させますか、それともジャイロスコープが必要ですか?

2
差動駆動ロボットの位置を計算する
インクリメンタルセンサーを備えた差動駆動ロボットの位置をどのように計算または更新しますか? 2つのディファレンシャルホイールのそれぞれには、1つのインクリメンタルセンサーが取り付けられています。両方のセンサーは、距離決定します。は、既知の時間間にホイールが回転しました。Δ R I G H TΔ LのEのFt△left\Delta leftΔのRのI Gh t△r私ght\Delta rightΔ トン△t\Delta t まず、両方の車輪の中心がロボットの位置をマークしていると仮定しましょう。この場合、次のように位置を計算できます。 x = xリットルのE ft+ xR I Gh t2y= yリットルのE ft+ yR I Gh t2バツ=バツleft+バツr私ght2y=yleft+yr私ght2 x = \frac{x_{left}+x_{right}}{2} \\ y = \frac{y_{left}+y_{right}}{2} 両方の車輪が直線で回転するという仮定の下でこれらの方程式を「導出」します(短い距離ではほぼ正しいはずです)。 ΔのXΔ トン= 12(ΔのリットルE FtΔ トン+ Δ R I Gh tΔ トン) cos(θ)Δ YΔ …

2
Robot CでSubsumption Architectureを使用する正しい方法
私は最近、Subsumption Architectureについてたくさん読んでいますが、人々が主張しているように見える方法はいくつかあります。 たとえば、一部の人々はグローバルな「フラグ」変数を使用して、タスクが制御を取得します。他のものはendTimeSlice()を使用し、アービターが本当に選択できるようにします。そして、これは正しいと思います。 行追跡ロボットのために取り組んでいるこのRobotCコードの小さなセクションがありますが、現在トラックメソッドは常にfindメソッドを引き継ぐので、正しく実行しているかどうかはわかりません。正しい流れは、findがラインを見つけるためにらせん状のパスを使用してロボットをラインに導くことです。ラインが見つかったら、トラックが引き継ぎます。 task evade(){ if(SensorValue(forwardSonarSensor) > threshold){ //box the obstruction } } task find(){ if(SensorValue(lightSensor) > threshold){ //spiral the robot } } task track(){ if(SensorValue(lightSensor) < threshold){ //go straight }else{ //execute turns to follow the line } } task main(){ while(true){ StartTask(evade,9); StartTask(track,8); StartTask(find,7); wait1Msec(250); } } ここでは、簡潔にするために、実際のコードではなくコメントをいくつか使用しています。私のifステートメントは、ロボットがオフラインになるとtrack()引き継ぐため、条件として十分ではありません。これはトラック内のelseステートメントによるものですか?もしそうならtrack()、プログラムの開始時に飼料から引き継ぐことなくラインを失うときにターンを実行するにはどうすればよいですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.