開発日誌(42)
トップへ戻る
開発日誌インデックスへ
前のページへ
次のページへ
■3月18日■
半年ぶりの更新です。
正直なところロボットの開発について攻めあぐねており、そんな折り仕事で長期に出張することになってしまい随分とご無沙汰になってしまいました。
仕事も一段落したので再びロボット開発に着手です。
とは言え攻めあぐねている事に違いはないのでこれから大きく進捗するかというとそんなことはなくてこのサイトが頻繁に更新される事もないと思います。
まずは去年から試作を進めていた二関節筋型脚は廃案にして振り出しに戻る事にしました。 次回作は設計中です。目鼻がついたらまた開発日誌に載せていきたいと思います。
とりあえず、活動再開の報告まで。
■10月20日■
更に半年ぶりの更新。(^_^;)
すこし検討が形になってきたので日誌に載せてみます。
詳細構造はおいおい。。。(^_^)
開発コンセプトはやはり二関節筋構造。 前回は2倍角動作で上下軸分離を行ったのだけど、前後軸に対しての工夫がまったくなかったので結局ボツ。
今回は直線性を犠牲にしながらも、前後軸と上下軸の分離にトライしました。
軸分離と言うのは、直交軸に対してひとつのサーボで制御することです。 普通の2足歩行ロボットは股関節サーボと膝関節サーボ(と、足首サーボ)の角度の組み合わせで足先座標を決定しています。(ロール軸はとりあえず無視) ホビーロボットのサーボのように精度もトルクもないアクチュエータだと、ある速度を超えると複数のサーボの動作が同期しなくなり、まともに動かなくなります。それでモーション職人たちはサーボを焼きながらモーションの調整でこの問題をクリアしようとしています。
今回の足構造が、どれくらい直線性を持っているかというと、、
↓これが前後軸動作の様子。 ひとつのサーボを動かすことでこの足先動作が行われます。 結構直線でしょ。 真ん中の出来るだけ上下動がない部分を歩行に使おうという魂胆です。
↓次に上下軸動作の様子。これも上下動作用サーボのみを動かした時の足先の軌道です。これも中央部のいいとこだけ使えば、結構な直線性を持っています。
あ、X軸グラフ、Y軸グラフは横軸がサーボの角度です。 足先座標はX-Yグラフです。
これだけ分離していれば走れますかねぇ。(^_^;)
さて、今度は逆キネを作らないと。 今回はZMP規範で歩かせるわけではないので逆キネは必須ではないので順キネ回して逆キネの替わりにしてもいいといえばいいのだが。
それはそうと、昨日(19日)ロボスポでロボワンアームの練習会が行われていて、見てきました。 といってもそんなイベント知らなくて、たまたま買い物に行ったらやってたって話なのですが。
面・胴・籠手にそれぞれの色を付けて、カメラで認識を行い、自律で剣道をさせるというお題です。 なかなか面白そうで、ちょっとやってみたくなりました。 あと1ヶ月で本番試合なのでこれからやっても間に合わないと思うのですが。。。(^_^;)
画像は今回の練習会での1位になり奨励金5万円を獲得したドカさんのアームロボットです。 これは自律じゃなくてカメラ越しに操縦するタイプです。
カラー識別やトラッキングは既に出来ているのでちょっと乗り気なんだけど、、、そんな時間は無い、、かなぁ(>_<)
■11月2日■
逆キネができた。リンク構造の逆キネはめんどくさいなー。
↓ 足を前後に動かしたときのサーボの角度。ほぼ第二リンクのサーボだけで前後動作している。サーボの角度もリニアに近いな。
↓上下動作の場合。今度は第一リンクのサーボだけで動作している。こっちもなかなかリニアだなー。
■11月10日■
大した進展はないのですが、順キネを組み込みました。現在のサーボの位置から足の座標を逆算できるようになりました。
これを組み込むのに丸1日(ま、半日かな)かかったんですが、以前にアップしていた順キネの計算によるグラフは間違いがあったので差し替えています。動かした感覚とグラフではまだイメージ的にずれがあるのでまだ間違えているかもしれません。
次は逆キネ。
シグマをSTM32で動かした時のプログラムを使って作っていっているのだけど、実はこれで近藤サーボを動かすのは初めてということが発覚した。(>_<) おかげであるはずの関数や作りこみがまったくできていなくてショックを受けるシーンが多々あります。
今回はZMP規範ではなく、モーションで動かすつもりなので、モーション作成とか管理のプログラムを作らなきゃならない。なんだか面倒。。
腰から上の設計もしなきゃなー。。
モーション再生プログラム作らなきゃなーと思ってもう二ヶ月ほどたつのだけどなんにも進展していません。 プログラムはとっかかるまでがなかなか大変で、未だにとっかかれてない。
今回の年末年始は9連休もあるのでこの機会に!とも思ったんだけど、年末年始にがっつりとプログラムできるわけもないし、と言ってもダラダラテレビ観るのもなんだしなぁということでBeagleboardのラズベリーパイ対抗版、BeagleboneBlackを買ってきて立ち上げてみることにしました。
立ち上げるといっても内臓フラッシュにAngstromLinuxがプレインストールされているので買ってきてコンソールケーブルつなげば立ち上がるんですけどね。(^_^;)
Ubuntuをインストールして無線LANつないで、USBカメラをつないで「ロボでサバゲ」で使えるようにしてみたいと思います。
BeagleBoneBlack(BBB)は秋月電子で扱っています。秋月で「Beaglebone Black」で検索すると必要なアイテムも一緒に出てくるので便利です。
購入したものは以下
・ BeagleboneBlack
・ FTDI USB・シリアル変換ケーブル(3.3V)
・ HDMI1.4ケーブル (要らないけど安いのでなんとなく。。)
・ ピンヘッダー2x40(4個)
・ BeagleBone・ユニバーサルプロトケープ(2枚)
ACアダプターはBealgeboardで使っていたものを流用したので買いませんでした。5V1Aで間に合います。
BBBはUSBホストポートとUSBクライアントポートがあり、クライアントポートでPCにつなぐと電源供給とコンソール接続が出来るらしいです。
今回はACアダプターとシリアルで接続しました。
秋月で買ったUSB・シリアルケーブルは、ヘッダーがBBBのコンソールヘッダーとピンアサインが一致しているらしくて、そのままつなげます。標準的な接続なのか、タイアップ製品なのかは知らないですが。。
接続のボーレートは115200です。
それでは Ubuntuインストールの手順を。 以前のBeagleboardではOSインストールのためにLinuxが動くPCが必要でしたが、BBBではコンソール用PC、またはディスプレイとUSBキーボードがあればSDカードへのOSインストールが可能です。
・ 電源を入れてAngstromを立ち上げてログイン。 root/パスワードなし で入れます。 有線LANはインターネットにつながるネットに接続しておきます。
・ UbuntuLinuxをダウンロード
$ wget https://rcn-ee.net/deb/rootfs/saucy/ubuntu-saucy-console-armhf-2013-09-26.tar.xz
$ tar xJf ubuntu-saucy-console-armhf-2013-09-26.tar.xz
$ cd ubuntu-saucy-console-armhf-2013-09-26
・ マイクロSDカードを差し込みます。 新品のカードなら電源を入れる前に差し込んでおいても(カードから立ち上がったりはしないので)大丈夫(だと思う)
・ マイクロSDカードのデバイス名を調べます
$ ./setup_sdcard.sh --probe-mmc
Are you sure? I Don't see [/dev/idontknow], here is what I do see...
fdisk -l:
Disk /dev/mmcblk0: 1920 MB, 1920991232 bytes, 3751936 sectors
Disk /dev/mmcblk0boot1: 1 MB, 1048576 bytes, 2048 sectors
Disk /dev/mmcblk0boot0: 1 MB, 1048576 bytes, 2048 sectors
Disk /dev/mmcblk1: 3904 MB, 3904897024 bytes, 7626752 sectors
lsblk:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0boot0 179:8 0 1M 1 disk
mmcblk0boot1 179:16 0 1M 1 disk
mmcblk0 179:0 0 1.8G 0 disk
|-mmcblk0p1 179:1 0 70.6M 0 part /media/BEAGLEBONE
`-mmcblk0p2 179:2 0 1.7G 0 part /
mmcblk1 179:24 0 3.7G 0 disk
|-mmcblk1p1 179:25 0 64M 0 part /media/boot
`-mmcblk1p2 179:26 0 3.6G 0 part /media/rootfs
4MBのカードを差し込んだので、デバイス名は「/dev/mmcblk1」らしいです。
・ ファイルシステムを作ってOSをインストール
$ ./setup_sdcard.sh --mmc /dev/mmcblk1 --uboot bone
ところがエラーが出て止まります。Angstromに入っているwgetのバージョンが良くない?「--no-verbose」オプションが無いってことなので、setup_sdcard.shをエディターで開いて「--no-verbose」の記述を削除してしまいます。
この作業はviというUNIX上のエディタを使うのだけど、これがUNIX知らない人には厄介かも。
詳しくは書かないけど、早口で書いておきます。(^_^;)
@ vi setup_sdcard.sh で、エディターに入る。
A /--no-verbose とキーインするとその記述の場所に移動する。
B X で文字が削除されるのでX連打で 「--no-verbose」を削除
C 2ヶ所あるのでAからをもう一度繰り返す
D :wq で、セーブしてエディタを終了
修正が完了したらもう一度さっきのコマンドを実行すると、今度は止まらずにインストールを行います。しばらくかかります。
・リブートしたらSDカードにインストールされたUbuntuで立ち上がります。 ubuntu/temppwd でログインできます。
・スワップファイルの設定 要らないかもしれないけど。。
ubuntu@arm:~$ sudo mkdir -p /var/cache/swap/
ubuntu@arm:~$ sudo dd if=/dev/zero of=/var/cache/swap/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 186.681 s, 5.8 MB/s
ubuntu@arm:~$ sudo chmod 600 /var/cache/swap/swapfile
ubuntu@arm:~$ sudo mkswap /var/cache/swap/swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=86ff4af3-fa34-413e-9265-083689143b9e
ubuntu@arm:~$ sudo swapon /var/cache/swap/swapfile
ubuntu@arm:~$
/etc/fstabに次の行を追加 Ubuntuに入ってからは管理権限が必要な作業にはsudo コマンドを使います。
ubuntu@arm:~$ sudo vi /etc/fstab ←こんな感じ
/var/cache/swap/swapfile none swap sw 0 0 ←そしてこの行を追加する
setup_sdcard.shのオプションでもスワップ作れるみたいです。その時は↓のように書くらしい
$ ./setup_sdcard.sh --mmc /dev/sdX --uboot bone_dtb --swap_file 1024
・タイムゾーンの設定
ubuntu@arm:~$ sudo dpkg-reconfigure tzdata
Asia/Tokyoに設定します。
・念のためパスワードも変えておきましょう。 パスワード設定のコマンドは「passwd」です。
続いて無線LANの設定。随分簡単になりました。
・設定を書き込みます。
ubuntu@arm:~$ sudo vi /etc/network/interfaces
以下の記述を書き込みます。 固定IPの場合
auto wlan0
iface wlan0 inet static
address 192.168.1.40
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255
wpa-ssid "sabage"
wpa-psk "robodesabage"
DHCPならこんな感じかな?
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "sabage"
wpa-psk "robodesabage"
wpa-**の記述は接続する無線LANアクセスポイントの設定です。
そして、以下のコマンドを実行すれば接続できるはずなんだけど、うちではリブートしないとつながりませんでした。
ubuntu@arm:~$ sudo ifup wlan0
続いてmpj-streamerのインストール と言いたいけど、疲れた。 ここんとこはノボリサカさんのブログを参考にしてください。
ちなみにsvnサーバーが変わっているようでブログの記載のままだとソースコードのダウンロードができません。
ubuntu@arm:~$ svn co https://svn.code.sf.net/p/mjpg-streamer/code .
としてください。
開発環境としてインストールするのはgccだけではなくmakeも必要です。
ubuntu@arm:~$ sudo apt-get install make
あと、uvc-streamerはmakeできませんでした。(使わないので早々に諦めたわけですが。。) mjpg-streamerはプラグインファイルでコンパイルエラーが起こるものがあるので使うものだけにします。 Makefileを編集して↓のようにします。 これは不要な部分をコメントアウトして「input_uvc.so」と「output_http.so」だけにしています。
# define the names and targets of the plugins
PLUGINS = input_uvc.so
#PLUGINS += output_file.so
#PLUGINS += output_udp.so
PLUGINS += output_http.so
#PLUGINS += input_testpicture.so
#PLUGINS += output_autofocus.so
#PLUGINS += input_gspcav1.so
#PLUGINS += input_file.so
# PLUGINS += output_rtsp.so
# PLUGINS += output_ptp2.so # commented out because it depends on libgphoto
# PLUGINS += input_control.so # commented out because the output_http does it'sjob
# PLUGINS += input_http.so
# PLUGINS += output_viewer.so # commented out because it depends on SDL
あとは、、UbuntuはデフォルトでApacheが動いているみたいなので、動かす時のhttpポートを8090とかにします。 Apache止めりゃいいんですけどね。。
ubuntu@arm:~/uvc_stream/mjpg-streamer$ ./mjpg_streamer -i "./input_uvc.so -n -y -d /dev/video0 -r 320x240 -f 15" -o "./output_http.so -p 8090 -w ./www"
↑この実行コマンド例はコンパイルしたディレクトリから実行した場合ですので要注意のこと。
できた〜(^_^)