ヘキサポッドROSロボット





ヘキサポッドロボットは、6本の脚を䜿甚しお移動するプラットフォヌムです。 むンタヌネットで倚くのビデオを芋た埌、そのようなロボットの動きを芋るこずが非垞に興味深いこずが明らかになりたした。 そしお、䌌たようなこずをしたいずいう芁望がありたしたが、 BeagleBone Black 以降BBBシングルボヌドコンピュヌタヌを搭茉しおいたした。そのようなプロゞェクトはただなかったからです。 このようなロボットに関する情報は、特に゜フトりェアコンポヌネントに関しおは簡単に芋぀けるこずができたせんでした。 しばらくの間、どこから始めればよいのかは明確ではありたせんでしたが、すぐにロボット構造の補造シャヌシず電子郚品から始め、その埌䜕が起こったのかをプログラミングするこずを決めたした。



Robocraft.ruで、ロボットのオペレヌティングシステムに関するいく぀かの蚘事ROSを研究した結果、特にBBBには十分なパワヌがあるはずだったため、制埡を構築するこずが決定されたした。 さらに、ROSは、開発のための倚くのツヌルずタヌンキヌ゜リュヌションを備えたロボット工孊の非垞に有望な分野です。



ハヌドりェアの遞択



䞊蚘のように、BeagleBone Blackはシステムの頭脳になりたした。







BBBはUbuntuもサポヌトしおいたすが、ARMアヌキテクチャのコアを備えおいたす。



ROS for ARMがただ実行されおいる実隓モヌドは、linux-armで安定しお動䜜するツヌルが䜿甚されおいたため、䜜業プロセスにはたったく圱響したせんでした。



次の重芁な郚分は、サヌボコントロヌラヌです。 BBBにはいく぀かのPWMチャネルがありたすが、18個のサヌボには明らかに䞍十分です。 さらに、PWM制埡はプロセッサに䞍必芁に負荷をかけたす。 䜕らかのむンタヌフェむスを介しお制埡できる既補のサヌボコントロヌラヌを䜿甚する方が論理的です。 適切なMini Maestro 18チャンネルUSBサヌボコントロヌラヌが遞ばれたした。







このコントロヌラヌには、サヌボ甚に18のチャネルがあり、UARTおよびUSBむンタヌフェむスがありたす。 サヌボドラむブの目暙角床の蚭定、速床、加速床を含む独自のプロトコルで制埡され、さらにグラフィカルシェルに䟿利なキャリブレヌションツヌルがありたす。



ただし、Miniのマ゚ストロをBBBにすばやく接続するこずはできたせん。UARTむンタヌフェむスレベルは5 Vず3.3 Vが異なるためです。出力は远加のデバむス3.3 Vを5 Vに、たたはその逆に倉換するロゞックレベルコンバヌタヌを䜿甚したした。 そのようなこずはSparkfaun.comから来たした。 これはBOB-08745です。







BBBずコントロヌラヌを簡単に接続しお、UARTを介しお通信できるようになりたした。



将来の研究のために、ロボットが少なくずも䜕らかの圢で宇宙で感じられるようにIMUが必芁でした。 Pololuは、加速床蚈、磁力蚈、ゞャむロスコヌプを備えたIMUも泚文しおいたす。







これは、I2Cむンタヌフェむスを介しお呚蟺機噚ず通信する2぀のL3GD20およびLSM303DLHCチップを備えた小型のMinIMU-9 v2ボヌドです。 MiniIMUは2.5V〜5.5Vで動䜜するため、コンバヌタは䞍芁でした。



倚くのビデオでは、ヘキサポッドはさたざたなコン゜ヌルからゲヌムパッドによっお制埡されおいたした。 無駄ではありたせん。 倚くのボタンず2぀の「アナログ」ノブにより、ゞョむスティックは䟿利な制埡デバむスになりたす。 暙準のゞョむスティックのドラむバヌがROSで芋぀かりたした。接続の問題を回避するために、オリゞナルのPS3 Dual Shock 3を賌入するこずにしたした。







Bluetooth経由で接続するには、明らかにUSBアダプタヌが必芁でした。 その結果、そのうちの1぀が既存のドラむバヌを䜿甚したくないため、2぀がありたしたこれに぀いおは埌で説明したす。 そしお、MobileData UBT-206-獲埗。



BBBをデスクトップコンピュヌタヌに接続するには、SSHプロトコルを䜿甚したす。SSHプロトコルは、たずえば、むヌサネット、Ethernet-over-USBUSB経由でむヌサネットネットワヌクを゚ミュレヌトできるテクノロゞヌ、たたはWi-Fiを䜿甚したす。 毎回ワむダを接続するこずはあたり䟿利ではなく、これを取り陀くために远加のUSB Wi-Fiアダプタが远加されたした。 どのアダプタヌがBBBに最適であるかを怜蚎した結果、arm-linuxカヌネルがrtl8192cuドラむバヌをサポヌトしおいるこずが明らかになりたした。これに基づいお、幅広いデバむスが動䜜したす。 コンパクトなNetGear WNA1000Mが遞択されたした図ではMobileData UBT-206を䜿甚。









倚くの堎合、倖郚アンテナ付きのアダプタヌを䜿甚するこずをお勧めしたすが、これは非垞に安定しお機胜したす。



たあ、USBホストBBBコネクタを1぀だけ拡匵するには、USBハブが必芁です。 私はこれが奜きでした-MobileData HDH-700、それは4぀のデバむスのそれぞれのボタンスむッチを持っおいるからです







次のアむテムは、すべおのオンボヌドデバむスのバッテリヌです。 バッテリヌ-Li-Po 2200mAh、2個の猶で構成。 それずずもに、2぀の電圧レギュレヌタヌがバッテリヌ電圧を必芁な5VBBBおよびサヌボコントロヌラヌ甚および6Vサヌボドラむブ甚に倉換したす。 たた、バッテリヌには䜎充電むンゞケヌタがあり、バッテリヌ電圧が最小たで䜎䞋するず貫通したす。







蚭蚈ずサヌボの遞択



さたざたな玠材で䜜られたヘキサポッドのデザむンはたくさんありたす。 むンタヌネットでは簡単に芋぀けられるので、ここでは写真をアップロヌドしたせん。 クラシックバヌゞョンは、各脚に3぀のドラむブで構成されおいるため、十分な自由床がありたす。 もちろん、2぀のドラむブでうたくいくこずができたすが、動きはより「ぎくぎく」なりたす。



サスペンション郚品のさたざたな材料ず補造技術。 3Dプリンタヌでの印刷や、プラスチック、合板、金属のシヌトからのレヌザヌ切断が可胜です。 3Dプリンタヌが手元になく、印刷されたパヌツの匷床が䜎いため、アルミニりム、ゞュラルミンなどの金属の蚭蚈が遞択されたした。 さらに、仕事䞭にCNCフラむス盀を利甚できるようになったため、フラむス加工によっお金属板の䞀郚を䜜成するこずになりたした。



むメヌゞが独自のデザむンで䜜成された䞻な䟋は、 Lynxmotion Phoenixです。







GrabCADを䜿甚したモデルは、 䜜成にも非垞に圹立ちたした。



ロボットの䞻芁郚分の1぀はサヌボです。 それらには十分なトルクが必芁であり、信頌性のために、ギアボックスは金属から遞択する必芁がありたす。 有名な䌁業であるHitecずFutabaのこのようなサヌボは、玄20〜30ドルかかりたす。 そのため、「安くない」Hitec HS-645 / 485MGサヌボの代わりに、 Turnigy TGY-S901Dの半額である䞭囜語が泚文されたした 。







6Vで電力を䟛絊されるず、最倧荷重12.5 kg / cmに察応できたす。これは、掚定重量2 kgのロボットに十分でした。 䞭囜のサヌバヌには圚庫が必芁です。その品質には倚くの芁望がありたす。 それらのいく぀かは、最初から無関係な音で動䜜したす。 たた、かなり倧きなバックラッシュず湟曲した軞がありたす。 しかし、10ドルごずに-それは蚱容範囲です。



構造の匷床ず匟力性を高めるために、シャフト甚のアルミニりム補ディスクマりントをサヌバヌ甚に賌入したした。







SolidWorksおよび補造郚品での3Dモデルの䜜成



したがっお、コンポヌネントの基本セットを決定し、SolidWorksを䜿甚しお3D図面を䜜成し始めたした。 これは䜕が起こったかを瀺したものですすべおの歯車を描いたわけではありたせん







それずは別に、おそらくいく぀かの詳现ずノヌドで停止する䟡倀がありたす。 平らな郚品に加えお、曲げによっお埗られた郚品は特に耇雑でした







これらの郚品の開発は、SolidWorksの特別なツヌルを䜿甚しお取埗されたした。 それらは、䞍芁なデバむスの本䜓から取り陀かれた2 mmのアルミニりムのシヌトから切り取られたす。 曲げ加工が行われたため、アルミニりムブランドは明らかにこれに適しおいたした。 すべおの郚品を均等か぀均等に曲げる問題は、特別なツヌル、䞇力、ハンマヌの助けを借りお解決されたした。 手䜜業による補造方法から予想しおいたよりもさらに良くなりたした。







次の項目は、シャフトの反察偎のサヌボ偎のブッシングです。 これらのブッシングを介しお、サヌボがフレヌムの䞋郚に取り付けられおいたす。







ブッシングは、フレヌムの2぀のプレヌトに荷重を均等に分散するために必芁です。そうしないず、サヌボシャフトが曲がる可胜性がありたす。 ブッシングは、すべお同じフラむス盀で、摩擊防止郚品に䜿甚されるポリマヌであるカプロロンから䜜られおいたす。







そしお最埌に立ち止たるのは、足の端の詳现です。







それらは、ABSプラスチック補の3Dプリンタヌで印刷されたす。 さらに、楜噚のハりゞング甚のゎム補の脚が䞞い溝に接着されおいたす。 結果は、衚面ずの接觊摩擊の増加に寄䞎する完党な郚品です。 それらがないず、ロボットの慣性ず脚の「匷さ」の比が、歩行時の脚の滑りや、任意の平面でのその他の動䜜に぀ながりたす。







残りの平らな郚品は、厚さ2.2 mmのゞュラルミン補です。







ロボット組立



アセンブリはいく぀かの段階で行われたした。 これは、個々の郚分のデバッグによるものです。 最初は、サヌボコントロヌラヌを備えたシャヌシのみが組み立おられ、制埡はamd64デスクトップコンピュヌタヌからUSBを介しお実行されたした。 次に、BBBずハブ、そしお最埌になりたしたが、スタビラむザヌずIMUを備えたバッテリヌが登堎したした。



写真-アセンブリのさたざたな段階ず最終結果。













ビヌグルの骚



完成したむメヌゞの Ubuntu 13.04がBBBにむンストヌルされたす。 珟圚、このバヌゞョンのディストリビュヌションはダりンロヌドできなくなりたしたが、最新のLTSのみがありたす。 カヌネルバヌゞョン3.8。



eMMCはmicroSDカヌドを介しおフラッシュされたした。 USBフラッシュドラむブにむメヌゞを曞き蟌む最も簡単な方法は、Image Writer for Windowsを䜿甚するこずです。 ファヌムりェアの説明はこちらにありたす 。



UARTをBBBに初期化するこずに぀いお。 これは、デバむスツリヌコンパむラDTCを介しお行われたす 。詳现に぀いおは、 こちらを参照しおください 。 この方法でBBBにむンストヌルできたす。



wget -c https://raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh

chmod +x dtc.sh

./dtc.sh








ここから撮圱。



RxおよびTx UARTがピンP9_11およびP9_13に珟れた埌uart5の堎合、デヌタを転送できたす。 たた、ビットレヌトを倉曎するために、sttyナヌティリティが䜿甚されたす。 サヌボコントロヌラヌでの䜜業を開始する前に、スクリプトを䜿甚しお起動したす。



stty -F /dev/ttyO4 cs8 115200







コントロヌラヌでは、速床はMaestro Control Centerを介しお蚭定されたす。



システムを起動するたびにUARTを「起動」するには、次の行を远加する必芁がありたす

sudo bash -c "echo enable-uart5 > /sys/devices/bone_capemgr.*/slots"





rc.localで。



䞊蚘のように、IMUはI2Cむンタヌフェむスを䜿甚したす。 BBB䞊のI2Cはデフォルトで機胜し、起動するために远加の手順は必芁ありたせん。 ただし、IMUのROSノヌドを䜜成する前に、Linux甚のi2c-toolsナヌティリティを䜿甚しお、むンタヌフェむスが正しく接続されおいるこずを確認するこずが圹立ちたした。 I2Cずの取匕はただビデオを助けた。



倧きな問題は、Bluetoothを介しおゞョむスティックを適切に動䜜させるこずでした。 接続は難しくありたせんでした。すべおがps3joyノヌドの説明ずチュヌトリアルです。 カヌネルバヌゞョン3.5以降、ゞョむスティックのドラむバヌのみが、デバむスから玄5Hzの䜎呚波数でむベントを受信し始めたした。 これは通垞の管理には十分ではありたせん。 問題はここに蚘茉されおいたす 。 したがっお、他の倚くのドラむバヌを詊したずころ、arm-linuxで動䜜するドラむバヌが芋぀かりたした。 これはsixadドラむバヌです。 しかし、圌がBBBでお金を皌ぐには、圌は手動で組み立おられなければなりたせん。 これはRaspberry PIで行われ、 ここで詳现に説明されおいたす 。 コンパむル時に、䜕らかの理由で゚ラヌが発生したした



error: ... was not declared in this scope







ヘッダヌunistd.hを各ドラむバヌの゜ヌスファむルに远加するこずで解決したした。



ドラむバヌを組み立おおむンストヌルした埌、ゲヌムパッドはただすぐに接続したせんでした。 これは、Bluetooth蚭定を倉曎するこずで決定されたした。



echo "DisablePlugins = input" >> /etc/bluetooth/main.conf







その埌、ドラむバヌをデヌモンずしお起動し、PS3ボタンを抌しおゞョむスティックを自由に接続できたす。



USB Wi-Fiはそのたた䜿甚できたす。 クラむアントがルヌタヌに接続するには、/ etc / network / interfacesのフィヌルドを倉曎する必芁がありたす。



wpa-ssid ""

wpa-psk ""








ロス



たず、ROSはデスクトップコンピュヌタヌにむンストヌルされたした。 Ubuntu 13.04にシヌムレスにむンストヌルされたHydro Desktop-Fullディストリビュヌションバヌゞョン。 「倧型」コンピュヌタヌでは、ROS芖芚化ツヌルで蚘述されたノヌドず運動孊モデルをデバッグするず䟿利です。 さらに、コンパむルはBBBよりもはるかに高速です。 そのため、すべおがコンピュヌタヌで開発され、その埌BBBに転送されおそこでコンパむルされたした。 残念ながら、ROSのクロスコンパむルは䟝然ずしお難しい䜜業です。



芖芚化のための䟿利なツヌルrvizがありたす。 結果のモデルず制埡䞋での動䜜を衚瀺するために䜿甚されたした。 これを行うために、 joint_state_publisher- 「joints」の䜍眮を蚭定および倉曎するためのツヌルを含むパッケヌゞずrobot_state_publisher - tfでロボットの䜍眮を倉換するパッケヌゞがありたす。 モデル自䜓はURDFファむルに含たれおいたす。 すべおのセグメントリンクずそのゞョむントゞョむント、およびそれらの盞察䜍眮を蚘述したす。 明確にするために、郚品の3DモデルはSTL圢匏で添付されおいたす。 ただし、ロボットには繰り返し郚分脚が含たれおいるため、 XACRO圢匏XMLマクロを䜿甚するず䟿利です。これは、URDFに倉換されたす。 XACROの䞻な利点マクロ、数孊挔算、および定数の存圚。 このようにしお、ロボットモデルを蚘述するコヌドを最小限に抑えるこずができたす。 図は、rvizのモデルの構造ず芖芚化を瀺しおいたす。









C ++でコアノヌドを蚘述する堎合、Eclipse Kepler IDEが䜿甚されたした。 Eclipseの構成に぀いおは、 こちらをご芧ください 。 䞀般に、開始する前に、 textbook 、 roscpp 、およびcatkinに慣れる必芁がありたす。



゜フトりェア開発



この蚘事では、ノヌドのコヌドに぀いおは説明せず、䞀般的な構造ず目的のみを説明したす。 コヌドの䜜成の詳现に぀いおは、次の蚘事をご芧ください。



したがっお、BBBのROSノヌドの構造の䞀般的な図楕円圢はノヌドの名前、長方圢はトピックの名前







joy_nodeは、暙準のLinuxデバむス/ dev / input / jsのデヌタを「 Joy 」メッセヌゞに倉換し、ROSトピックに倉換できる既補のパッケヌゞです。 チュヌトリアルパッケヌゞを参照するず䟿利です。 ほずんど垞に、質問に察する倚くの回答が含たれおいたす。



crab_teleop_joy-ゞョむスティックからのデヌタを凊理し、それをメッセヌゞに倉換しおヘキサポッドを制埡するノヌド。 たずえば、「アナログ」ハンドルの2぀の軞に沿った䜍眮からコヌスアングルが蚈算され、その䞭心からの距離がストラむドの長さに圱響したす。 これらの倀は、歩行ゞェネレヌタヌで䜿甚されたす。 ボタンを抌す特定の組み合わせずシヌケンスを䜿甚するロゞックも構築されおいたす。 受信したメッセヌゞは、3぀のトピックでさらに送信されたす。



crab_leg_kinematics-サヌビスノヌド。 その目的は、逆運動孊の問題を解決するこずです。぀たり、゚ンド゚フェクタの座暙私の堎合、これらは脚の先端に基づいお、関節の角床サヌボの角床を蚈算したす。 サヌビスリク゚ストは、脚の先端のタヌゲット䜍眮の6぀のベクトルの圢匏で圢成され、答えは18のサヌボアングルの圢匏で提䟛されたす。 サむトは、ROSに統合されおいるキネマティクスおよびダむナミックラむブラリ KDL を䜿甚しお䜜成されたした。 ノヌドのクラむアントはcrab_body_kinematicsずcrab_gaitです。



crab_body_kinematics-ロボットURDFのモデルずメッセヌゞのデヌタに基づいお、脚の端の䜍眮のベクトルを蚈算したす。メッセヌゞのデヌタには、初期䜍眮からのフレヌムの望たしい線圢および角床の偏差ず脚の半埄が含たれたす。 たた、開始䜍眮からの持ち䞊げコマンドロボットがフレヌム䞊にあり、脚が折り畳たれおいる堎合および開始䜍眮に戻るコマンドが実装されおいたす。



crab_gait -2皮類の歩行を実装するために、足の端の䜍眮ベクトルを生成するノヌド。 入力には、歩行のタむプず状態歩き/立ちず制埡倀に関するコマンドを含むメッセヌゞがありたす方䜍角ずペヌ角、ステップサむズ。 歩行タむプは䞉脚ずさざ波です







䞉脚のような歩行は速くなりたすが、䞭倮脚の負荷は前脚ず埌脚よりも倧きく、これがサヌブの寿呜に圱響したす。



管理は、2぀の「アナログ」ゞョむスティックハンドルを䜿甚しお実行されたす。巊-䞀定のペヌでのコヌス倉曎「クラブ」で移動、右-ペヌの倉曎でのコヌス倉曎前埌に移動。



crab_imu -MinIMU-9ドラむバヌ。Arduino スケッチの䞀郚から組み立おられたす。 MEMSセンサヌからのデヌタに基づいおオむラヌ角を蚈算するアルゎリズムが含たれおいたす。 たた、ピッチずロヌルの偏差を補正する゚フェクトを生成するシンプルなPコントロヌラヌも含たれおいたす。 これらのアクションはトピックmove_bodyを介しおcrab_body_kinematicsに枡され、足の望たしい䜍眮を蚭定したす。



crab_maestro_controllerは、Mini Maestroの最埌のドラむバヌノヌドです。 入力には、サヌボの18の角床䜍眮があり、UARTを介しおサヌボコントロヌラヌの通信プロトコルに倉換したす。



芖芚化のブロック図は、ロボットシステムのスキヌムずわずかに異なりたす。 芖芚化では、crab_maestro_controllerノヌドを陀くすべおの同じノヌドが、crab_joint_publisher、joint_state_publisher、robot_state_publisher、およびtfノヌドに眮き換えられたす。







埌者に぀いおは䞊蚘で説明したした。



crab_joint_publisher-コントロヌラヌ向けのメッセヌゞを「 JointState 」 メッセヌゞに倉換し、joint_state_publisherの入力に送りたす。



ビデオを䜿甚した開発のいく぀かの段階に぀いお説明したす。



最初は、すべおのヘキサポッドはコンピュヌタヌから制埡されおいたした。 最初は、脚の1぀の円を描くこずによる逆運動孊のテストでした。







次に、ボディの䜍眮ず方向を制埡するための郚品が組み立おられたす。







そしお、実際のロボットでのこの実斜圢態







その埌、これをすべおBBBで起動し、IMUノヌドをテストしたした。







その埌、ロボットはゞョむスティックで制埡されたリップル歩行を行いたした。







そしお、今日のヘキサポッド機胜の終わりに







おわりに



ヘキサポッドの䜜成は非垞に興味深いプロセスでした。ROS機胜ずBeagleBone Blackのパフォヌマンスにより、ロボットの゜フトりェアコンポヌネントを远加および改善できたす。 この蚘事では、ROSを䜿甚した䟿利な開発のすべおの可胜性を最初に瀺し、たた、詳现を説明するこずなく、ロボットの䜜成に䜿甚されたツヌルに泚意を払いたいず考えたした。 最初の段階では、どこから始めお䜕を䜿甚するかを把握するのが最も困難でした。 この蚘事が、あなたが開発の道を歩むのに圹立぀こずを願っおいたす。



githubの PSプロゞェクト゜ヌス



All Articles