SSブログ

SpotMicro(mini) その22 ーサーボキャリブレーション再びー [ROBOT]

サーボキャリブレーションをもう一回やり直すことにした。
leg.png
絵がしょぼいのは、我慢して頂戴。
この図のように角度を決めて、その値を出力するとすると、最終的に、この表の
min angle とmax angleの間で泳いてもらえばいいことにした。L1サーボは、どうしたら
いいかわからんかったけど、-45,45の範囲とした。

NameBoardOutmin anglecenter anglemax angle min valcenter valmax valwidth anglewidth val
FR11213-45045409310211-90198-2.2
FR21314-20090137181379-110-2422.2
FR314153090180457325127-150330-2.2
RR145-45045221320419-90-1982.2
RR256-20090126170368-110-2422.2
RR3673090180463331133-150330-2.2
FL189-45045207306405-90-1982.2
FL2910-20090502458260-110242-2.2
FL310113090180174306504-150-3302.2
RL101-45045419320221-90198-2.2
RL212-20090534490292-110242-2.2
RL3233090180162294492-150-3302.2


これで、あとは、その15で示した表のt1,t2から計算した値を突っ込むと歩き出すはず。



もうちょっと追記


タグ:4足歩行
コメント(0) 
共通テーマ:趣味・カルチャー

SpotMicro(mini) その21 ー環境の再インストールーROSの追加パッケージ [ROBOT]

やっと、ROSのコンパイルが終わった。
すべてを満足するためのパッケージ一覧は、

ros_comm ros_control image_transport compressed_image_transport camera_info_mana
ger joy rplidar_ros tf2_geometry_msgs diagnostic_updater tf tf2_eigen rqt_reconf
igure


これだけのパッケージが必要。本当はいろいろ削減できるかもしれないけど、何かコンパイルしようとして足りてない基本パッケージは、何も考えずに追加した。


この一覧で、
rosinstall_generator ros_comm ros_control image_transport compressed_image_transport camera_info_manager joy rplidar_ros tf2_geometry_msgs diagnostic_updater tf tf2_eigen rqt_reconf
igure  --rosdistro melodic --deps --wet-only --tar > melodic-ros_comm-custom.rosinstall


でインストールスクリプト作成して、

作成したインストールスクリプトで、
wstool merge -t src melodic-ros_comm-custom.rosinstall


で、既にインストールされているソースツリーにマージして、

wstool update -t src


で依存関係の確認をして、

rosdep install --from-paths src --ignore-src --rosdistro melodic -y -r --os=debi
an:buster

で依存するパッケージをよし何してもらった後、

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release 
--install-space /opt/ros/melodic 

で、コンパイルする。

で、前回行ったみたいに、catkin_make_isolated は、最初から最後までやろうとするので、最初流してみて、止まったら、エラー解析して、catkin_make_isolated --pkg XXで該当パッケージだけでコンパイルが正常に終わるように修正して、
そのあともう一回catkin_make_isolatedをかけて、すべてのソースのコンパイルが終わるか、別のパッケージでエラーが出るのを確認して。それなりに対処する。


RASPBERRY PI上で動いてほしいパッケージは、raspicam_node と、i2cpwm_boardだけなんだけど、
この二つだけだともっと依存関係和いらないかもしれない。

あ、あとI2Cの関連のコマンドを実行するときにI2Cのデバイスを開けるんだけど、このデバイスはルートのもちもんで、グループはI2cが使用可能になっている。
だから、

 
usermod -G i2c


でI2Cグループに参加するのを忘れないでね。


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

SpotMicro(mini) その20 ー環境の再インストールーROSの追加パッケージインストール [ROBOT]

ROSの追加パッケージをインストールする中で、なんと、驚愕の事実が判明!

2日もかかってコンパイルしたOpenCV4では、使えなくて、Opencv3をインストールする必要がある!

さらにraspicam_nodeのページをちゃんと見てみて、手順に従うと、自動で、Opencv3(コンパイル済みのバイナリー)をインストールしてくれる!!


キーは、wstool とrosdepで、このパッケージに必要な外部ライブラリ(ここではOpenc)を自動的にダウンロードしてインストールされる。


2日を返せとは言わんが、これで進むことができるのだああ。

インストールを進めているが、そうは簡単に問屋が卸してくれないのだ。。





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

SpotMicro(mini) その19 ー環境の再インストールーROSの追加パッケージインストーr [ROBOT]

前回のブログで示した通り、raspicam_nodeを追加インストールしているわけだが、
これがうまくいかない。
opencv-4.4.0 を選択したので枯れていると思ったんだけど、そうでもないかもしれない。
最初 実行時ぱけーじとしてインストールしようとして、catkin_wsにダウンロードして個別でコンパイルしても、必要なパッケージが他しないといわれるので、image_transportとか、をROS環境にインストールしたかったので、ros_catkin_wsにダウンロードして、catkin_make_isolatedでコンパイルをした。

しかし、このcatkin_make_isolatedは、最初から全部をコンパイルしようとする。基本的に一度住んでるやつは、ファイルのコンパイルのみはパスされるが、pythonパッケージは、毎回コンパイルされるので、1行直しだけで、2時間の無駄なコンパイルに付き合わないといけない。

これを避ける方法がないかと多い探してみると、やっぱりあった。

/src/catkin/bin/cakin_make_isolated --pkg compress_image_transport 


実際にコンパイルは、まあかかるのは当然だけど、動くように直してチェックするだけだとそのパッケージだけ見たいので、とても便利。

それでも一個通ったらまた全部をやらないといけないんだけど。

まだ終わってないけど、ちょっと嬉しかったので、アップ



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

SpotMicro(mini) その18 ー環境の再インストールーその2 OPENCVのインストール  [ROBOT]

ROSでカメラを使用するための、raspicam_nodeをインストールするために、まずOpencvをインストールする。
これがまあ、時間かかった。RASPIZEROは32ビットもそうだけど、メモリが512しかないので、SWAPの増強と、GPUメモリの削減を行った。それでれもトータルメモリは、461.8Mとなる(TOP読み)
raspberry pi GPUメモリの調整は、/boot/config.textにあるgpu_memを変更する。
デフォルトでは、gpu_mem=128となっていると思うが、画面すらつなげないので、GPUメモリへの割り当てはいらない。今回は、gpu_mem=32とした。16まで下げると無視されるので、これが限界かもしれないが、限界値の探索はしていない。

スワップの増強は、/etc/dphys-swapfileの'CONF_SWAPSIZE=100'の数値を2048に変えて、systemctl start dphys-swapfile を実行する。

ここまで済んだら、

mkdir build 
cd build 
 cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.4.0/modules -DOPENCV_GENERATE_PKGCONFIG=ON -DBUILD_TEST=ON -DOPENCV_DOWNLOAD_PATH=../.. ..
make 

でコンパイルを実施する。

この設定で、2日でコンパイルが終わるかとおもったら、エラーが出てた。が。もう一度makeを実施したら終わった。

その後

make install を実施してインストールすれば、取り会えずopencvのコンパイルは終了。

まあ、時間はかかることは予想していたが、ここまでかかったかなというのが正直な印象。



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

SpotMicro(mini) その17 ー環境の再インストールーその2 ROSのインストール [ROBOT]

ROSのインストールは、割と簡単。
基本的には、 ここに従えばいい。

後後、便利なように、

1. レポジトリキーの設定
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

$sudo apt update
$sudo apt upgrade

これで、aptのレポジトリーを追加セーと言われているんだけど、"apt install ros-melodic-raspian-buster" みたいなapt のインストールはできない。多分raspibian側のツールのアップデートがあるんだと思うんだけど。

依存するパッケージのインストール
上記で、設定したリポジトリも利用して、依存するパッケージをインストールする
$ sudo apt install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

まあ、それぞれのパッケージが何のために必要かとか、書かない。

3. rosdep
$ sudo rosdep init
$ rosdep update

rosのインストールに必要なパッケージをダウンロードしてくれるんだと思う。後、環境の準備をしているんだとおもうんだけど、よくわからん。

4.インストール

ここからが本番。
まず、コンパイルのためのディレクトリを作成する
$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws


基本的なROS_COMMをインストールすることにして、インストールジェネレータを
作成する。
$ rosinstall_generator ros_comm --rosdistro melodic --deps --wet-only --tar > melodic-ros_comm-wet.rosinstall
$ wstool init src melodic-ros_comm-wet.rosinstall


最初の行で出力される内容をインストール指示書のようである。内容的には、インストールするべきROSのパッケージ(なんだろうなあ)がリストされている。

ros依存性を解決してもらう。
$ rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:buster


ここまで済んだら、コンパイルする。

$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic


これが割と時間がかかるけど、これが終わると基本的なところの作成は終了。

source /opt/ros/melodic/setup.bash

この行を.bashrcに登録して、Bashが起動するために設定をしてもらう。

ここまでで、基本的なインストールはできたわけだが、今回のSpotMicroには、カメラを搭載するので、Opencvが使えるパッケージをインストールするわけだが、ここでもインストールジェネレータを使う
rosinstall_generator ros_comm ros_control --rosdistro melodic --deps --wet-only --tar > melodic-custom_ros.rosinstall

ここではros_controlを追加することを示している。
後は、wstool を動かして、コンパイルをすると追加できる。

さて、本論のOPENCVをいるのであるが、それは、また次回。

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

SpotMicro(mini) その16 ー環境の再インストールーその1OSのインストール [ROBOT]

しばらくSpotに火を入れてなかった。
どうもSDカードの調子が悪い気がする。
起点は、Opencvの再インストールだ。OpencvをROSで使うのに、Cmakeのコンフィグを使うのだが、これをROSの仕掛けがうまく見つけてくれない。調べたらどうもない。まず、

apt list | grep -U openv | grep installed

で、インストールされているopencv関連のファイルを消したり、
OpenCV3とかOpencv4.1とかいろいろなバージョンも入れてみたが、
結局見つけてくれない。
しかもOpencvのインストールというかコンパイルRaspberyPiZeroでだいたい2日が来かかる。
それがおわってから、もう一回消してとかやっていたら、どうもSDカードのアクセスに時間がかかるようになった。実際にTOPで調べてみるとIOWAITが73%とかすげー数出てる。これはたまらんというので、SDカードを変更することにした。

今までは、SandiskのExtremeProをつかっていた。これは、早くていいけど、上記のようになってしまったら、もう仕様がない。

そこで、私が選んだのは、ちょっと遅いかもしれないけど、高耐久をうたっている
0619659173081.jpg

SDカードは、物理セクタに書き込む回数に制限がある。それを回避するためにジャーナルファイルシステムを使ったりいろいろ手を使っている。しかし、すでに使われているセクタをほかのセクタに回すことはないので、容量が狭くなっていくと、再利用するチャンスが増える。しかも大物のコンパイルなどは、一つのソースファイルにつき2つ以上のファイルを作ったり消したりしているので、書き換えの頻度がものすごいわけだ、これで、SDカードがどんどん披露し、使いにくくなる。

だから、変える時は大きなサイズのカードに限る。デジカメみたいな、割と書き換え回数が少ないものは、早いほうがいいに決まっているので、そっちを選ぶべきだ。

最も高耐久というのは、環境条件(温度とか湿度とか)みたいで、書き込み回数には、あまり関係ないらしいんだが。


SDカードを変えるということはOSから書かないといけない。
最近は、Etcherというイメージライタがはやりみたいなので、これを使った。

USB3にメディアアダプタをつけて、書き込んだところ19.8MB/sぐらい出てたので、割と早く書き込めた

ファイルは、2021-03--04-raspi-os-buster-armhf.zip にした。RASPIZEROは、32ビット機なのだ。

Xは使わないので、Liteでもよかったんだが、いろんなツールを後から使うときに入ってないのは、面倒なのでこれ。


書き込み終了後、キーボードと、ディスプレイをSpotMicroに接続し、起動。
最近のラズパイは、起動時に自動でディスク拡張をしてくれるので便利だ。
初期設定はスプラッシュ画面ありの、XDMを超えての自動ログインになっている。
普通にデスクトップで使うには、まあいいんだけど、XなんかCPUの浪費でしかないので、止めないといけない。

しかし、Xの自動ログインが標準なので、非力なRASPIZEROには、耐えられない、起動して設定ダイアログが出てくるまで、5分以上かかっている(時間測ってないけど)。
設定ダイアログで何が出てきたか忘れたけど、ロケールと、使用言語の設定があった後、ネットワーク設定があった後、ライブラリのアップデートをするかを聞いてくる。ここでのアップデートはやらないほうがいいと思った。進捗はプログレスバーで教えてくれるし、それでもいいんだけど、
普通にapt-get upgradeのほうが、へえ、こんなのインストールされてるんだ的なノリで面白い。

raspi-configで、カメラ、I2C,SSHの使用を設定する。起動時設定としてテキストコンソールの自動ログインなしを選択したいので、raspi-configで、"1 System Opetions" -> "S5 Boot/ Auto login" -> "B1 Coneole" を選択する。

ssytemctl set-default multi-user でも指定できるけど、スプラッシュ画面は禁止できないので、なんか不思議な動きをする。スプラッシュ画面の禁止は、"1 System Options" -> "S7 Splash Screen" -> "いいえ"
を選択する。

長くなったので、OSのインストールまでにしますが、次はROSのインストールかな。







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

SpotMicro(mini) その15 ー4足歩行パターン..その2 [ROBOT]

前回の記事で静歩行の1サイクルの75%を設置するようにするには、9ステップの接地と上昇、移動、下降の3ステップで、12ステップが最低必要なことが分かった。
このデューティでやるとすると、上昇、移動、下降がそれぞれ1/12サイクルで実施しないといけない。

4soku.png          

足の経路と、サーボによる起動を計算するためにスプレッドシートで計算してみた。

B列がパラメータの列で、L1がひざ上の長さ、L2はひざ下の長さ、として、足の付け根から地面まdでの高さがH、Stepがサイクルのステップ、SlideSizeが着地地点のXの移動量、Liftが足の持ち上げ距離
として、この時、ステップごとの足先の位置の座標をA、Bとして、足経路を決定したのが、図中央上の足経路になるとなる。

これを右図のように角度を仮に決めて計算すると、t1、t2として角度が計算できる。

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

SpotMicro(mini) その14 ー4足歩行パターンー [ROBOT]

静歩行について1サイクルにおいて75%を着地することにすれば、4本ある足のどれかの3本が着地する歩行が可能なわけだ。
そこで、どのようなパターンになるかを考えてみた。
ここでは75%をいったん忘れて考えてみることにした。
下に示す表(図?)は、1サイクルにおける動作を、着地しながら移動するスライド(S)、地面から足を話すリフト(L)、空中で前に足を動かすムーブ(M)、足を下すドロップ(D)としてあらわしてみた。
このパターンは、上記の4つの動作を均等に作業するきわめて効率がいいパターンで、最後の行は、ちそのフェーズにおいて着地しているSの数を示している。

4step.png

このパターンは、4つの動作を均等に割り振っており、1サイクル中のSのデュレーションは25%であるので、ほとんどの期間で、どれか1本しか着地していない。
ちなみに、実際のわんこはこの歩き方をしない。が、1本でも着地していれば、次の着地する脚の力加減で、姿勢を維持することができる。


9tesp.png

このパターンは、接地している区間が他の区間の合計に対して2倍になっている。
すべての期間において2本接地しているが、これでも次の時間帯を考慮しないと倒れてしまう。

12step.png

このパターンは、接地している時間が、他の区間の合計の3倍としており、このため、常に3本の足が接地している。

SLMDの順序は、静方向においては、必ず一緒になるので、ほかの順序の組み合わせは見なくてもいいが、3本を接地させるためには、25%の時間で、75%の作業をしなければいけない理由がわかってもらえたと思う。


ただいろいろやっている中で面白いのを見つけた。
12step.1.png

この例はステップで気には、先ほどの75%のものと」同じであるが、位相をちょっと変えてある。
今回の動作の目標は、必ず3本以上の足が接地地している状態を目指しているが、3本ではなく2本のところもある。しかもよく見ると4本接地しているところもある。
4本の間に姿勢を立て直せれば、早い時間に2本脚の区間を通り過ぎれば、実は、これでも行けるかもしれない。(この2本の不安定区間を時間軸でどうにかしようっていうのは、実は動歩行なんだけど)
動歩行への挑戦は、ちょっと先延ばしにするのが、先ほどの2本だけずっと着地しているバターンも動歩行(普通に歩いてるときはこれ)だし、全力疾走中のわんこは、4本をほぼ同時に着地して4本足で地面をけって加速し、次の瞬間すべての足が地面から離れている。

本物のスポットは2本脚を交互にに着地させている。よく見ると4本とも着地している瞬間があるかもしれない。

わんこたちは、静歩行と動歩行をいい感じで、使い分けているし、もっとフェーズを観察すると、もっと長いフェーズの中で動作をしているようにも見える(着地がかぶっているようにも見える)

本日はこの辺で。

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

SpotMicro(mini) その13 -- 静的歩行と動的歩行 [ROBOT]

しばらく、手が付かなかったけど再開。

4足歩行には、静歩行と動歩行というのがあるらしい。
静歩行は、4本足中3本が接地している歩行形態で、動歩行は同時接地が2本以下で、全力走行中は、常時接地は0の時間帯がある。静歩行は、接地している足が3本あるので、ボディの姿勢維持は、接地している足で行う。これに対し動歩行は、2本以下しか接地していないので、姿勢の維持のために、重心を制御するとかの難しい制御が必要なる。倒立振り子(簡単に言うと傘の先を掌に充てて建てるやつ)を2次元方法(上下方向は、1本以上の足が接地してるとすると考えなくていい)で制御する必要がある。多分、ジャイロを積んで、必要以上の姿勢変化が起こった時に、それを打ち消すように姿勢を制御すればいいわけだけど、サーボを使ってやろうとすると、指示を出してから、移動体が移動を完了するまでの時間帯がソフトウェアにしても長いので、そのあたりの学習をする必要があるんだと思うんだがなんだか難しいので、今回はパス。



で、静歩行なんだけど、3本以上の足が常に接地している必要がある。
足の運動を見ていると、横に倒した台形を丸めた形に見えるので、計算の手間を省くために、長方形の軌道を考える、この長方形の下底が接地面ということになる。4本の脚は、この長方形の軌道に沿って、運動しているわけで、常に3本が接地するおいうことは、下底を全体のサイクルの75%をかけて移動すればいいことになる。残りの25%で、残りの移動をすることになる。

普通に考えると1辺ごとに25%でサイクルを回せば、ほぼ均等にサイクルを回すことができそうだが、先ほども言ったとおり、下底だけで、75%を使用して回すことになる。絵にかいてみればわかるが、下底で75%はまあいいけど、それと同じ以上の距離を3倍のスピードで回さないといけない。

4分の3の工程を4分の1の時間で回すことになる。

4分の1の工程のステップ数をいくつにするかで、全行程のステップ数が来まる。25%を1ステップだとすると、前部で4ステップになるが、それだと1ステップで、下底の後端から前端まで移動しないといけない。なので、25%で複数ステップが必要になる。あまりステップ数を多くすると、歩行スピードに影響が出てくる。あるのだから遅くなってもいいけどあまり遅いのはいただけない。
そこで、25%のステップ数を6にすると、全行程のステップ数は、24ステップになる。1回転は、2秒以下にしたい。とすると、1秒でラウンドするには、約42m秒でワンステップを実行しないといけない。やはり2秒程度になる気がする。

このサイクルを90度づつずらせば、3本が接地しているサイクルが完成する。

はず。




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

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