SSブログ

SpotMicro(mini) その11 ーSpotMicroのソフトウェア その2ー [ROBOT]

SpotMicroMiniのソフトウェアはROSを使うことにしているが、ROSのバージョン1では、機体上の情報を生成をするノードと、その情報を受け取って、次の動作を考えるノードと、そのノードからの指示を受け取りサーボにデータを送るノードをそれそれ作る必要がある。

ただ、機体上に搭載されているコンピュータは、かなり非力なので、情報の収集とサーボの制御以外の意思決定を外に出すことにする。

情報収集系のノード
情報元出力ノード処理概要
Raspi CameraFrontImageフロントに設置されたカメラ。連続静止画を送信する。カメラによるJPG圧縮データをタイムスタンプとともに出力する
電圧センサBatteryVolt機体に搭載された電池の電圧を出力する。2セルのバッテリーが並列に接続させている。<./td>
近接TOFセンサTOF1,TOF2TOFによる近接センサ。40㎝以内を検出する。基本的には、同じTOFを使って、出力制御ピンを制御することにより右左の物体の近接を検出する。右のセンサは、左側に15度傾けてあり、左側の位置を検出し、右のセンサは左を検出する<./td>
9軸IMUIMU9軸のIMUセンサ、MPU9250を使用している。<./td>


これらのノードをpublisherとして動作させる。

ROSのメッセージは、定期的に出力され、出力周期もそれぞれのセンサごとに設定されている。
上記の情報センサは、カメラ以外はI2Cバスを介して、データを収集する。それぞれのノードに
対して一つのプログラムを作成し、データを取得するようにするのが一般的ではあるが、それぞれのプログラムがI2Cバスに介して、アクセスを行うとバスの競合がおこり、データが破壊される。それぞれのプログラムが、競合を調整しながらデータを取り合うか、一つのプログラムが、I2Cバスへのアクセスを一手に行い、競合しないように動作させる必要がある。

SpotMicroMiniでは、I2Cに関するプログラムを一手に行うことにするが、一つ問題がある。すべてのセンサの情報出力周期が異なること。また、LCDパネルもI2Cにつながっていることだ。

一つのプログラムで、複数の周期をもつノードと、出力をコントロールするプログラムを書かないといけない。さて、どうなることやら。




タグ:ROS SpotMicro
コメント(0) 

SpotMicro(mini) その10 ーSpotMicroのソフトウェアー [ROBOT]

SpotMicroのプロジェクトは、ハードそのものがオープンソースであることもあり、ソフトウェアもいろいろあるみたいだ。
以前示したhttps://github.com/FlorianWilk/SpotMicroAIは、今も進化しているようで、しばらくしてみてみたら割と変わっていた。
制御コンピュータをRaspiをメインに使っているBasicInstructionをもとにして作っていた。前回サーボコントロール基板を燃やしたことを記事にしたが、ここでは、サーボ基板を2個使っていた。多分、基板が燃える事件がここでもあったのではないかと勘繰っている。
当然フルサイズのボディなので、電池を乗せたうえでも、サーボ基板が2枚乗るようなサイズ感なのだろう。
このページでは、ほかに制御コンピュータにJetsonNanoを使ったものもやっている人がいるらしい。

最終的には、ROSを使った制御をするんだけど、まずは直接サーボを動かすのを作ってみた



まずは、動くところからだけど、これから先が長そう




コメント(0) 
共通テーマ:趣味・カルチャー

SpotMicro(mini) その9 ーアナログサーボに交換ー [ROBOT]

デジタルサーボを舵角の観点から、肩より下の2つのサーボをアナログにすることにした。
デジタルサーボで、すべて構成していたが、サーボが焼損もあるけど、コントロール基板も焼損した。

原因の究明はできてないけど、どうも、過電流で起きるしかないんだけど、燃えた基板を見てみることにした。

IMG_3898.jpg

焼損部分には、MOSFETが付いているようだ。もともとこの基板はAdaFruitのもののようで、そのページを見ると、ここには、PchMOSFETはAOD417で設計されているようだが、どうも、買ったものとは、違っているようだ。SwichScienceで、最近のものが売られているが、これも本家の写真とも違う。また、秋月電子でも同じPCA9685を使ったサーボドライバが売っているが、このボードには、同様のFETがなく直結になっているので、直結することにした。

IMG_3899.jpg

後、サーボにかける電圧を6Vから5Vに変更した。電池からの電圧をレギュレータを使って、6Vにしていたが、これを設定を変えて5Vにする。このため、若干サーボの速度が遅くなり、トルクも少し減るが、これで様子を見てみようと思う。




取り換えのタイミングで、使用しているサーボを並べてみた。

IMG_3911.jpg

壮観。

タグ:SpotMicro robot
コメント(0) 
共通テーマ:趣味・カルチャー

SpotMicro(mini) その8 ーデジタルサーボは素晴らしい。だがしかし...ー [ROBOT]

今回SpotMicroMiniには、CRONA社のデジタルサーボDS238MGを使っている。
これは、同様の製品にCS238MGというアナログサーボがあり、それの単なるデジタル版だ。
電源の許容範囲は、5~6V ,最大トルクも4.6Kgで、なかなかパワフルだ。

IMG_3894.jpg

デジタルサーボとアナログサーボの違いは、動作角までの動作が、少し違っている。
サーボの動作角は、出力軸に直結されたボリュームの出力をアナログ的に位置を割り出し、
そこまで移動させる仕掛けは実は同じで、しかも、入力信号がPWMで、範囲もまるで同じ。

何が違うかというと、デジタルサーボは、PWMのパルス幅をデジタル的にサーボのパルス幅を計測し、そこから読んだデジタル値を用いてサーボを動作させる。
これに対して、アナログサーボは、PWMの読み取りをアナログ的に計測する。内部で、動作角を規定するノコギリ波を生成し、PWMが位相が変わるところの電圧を読み取る。感覚的に言うとノコギリ波のでサーボを動作させ、PWMの位相がかわるところで止めるという感じで動いている。

これで、何が変わるかというとデジタルサーボは、いなければいけない位置を正確に理解しているので、その位置に動くまで、電流をかけてモータを動かす。差分が多ければ、大きな電流を流すことができ、サーボホーンの保持力がすごく高い。

例えば、機械的に動かない位置まで動かそうとすると、アナログサーボは、その位置に行くまで動こうとするだけだが、デジタルサーボは、電流をどんどん増やして、ホーンを動かそうとする。この時の大電流が内部のトランジスタを破壊(焼損)する。

なるべくサーボ一を責めた結果、3つほど、デジタルサーボを焼損させ、一つは、ケーブルの取り換え時の接続で、失敗して、壊した。

アナログサーボを買っていたので、それに変えると、舵角がちょっと違っていた。アナログサーボは、180度、デジタルサーボは120度。

SpotMicroMiniのオリジナルは、996MRというデジタルサーボだけど、こいつは、180度度の舵角があるらしい。
舵角の面から考えると、今回は、アナログサーボにするほうがいいかもしれないなあ。


いろいろあるなあ。


コメント(0) 
共通テーマ:趣味・カルチャー

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。