2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« 2016年8月 | トップページ | 2016年10月 »

2016年9月

2016年9月29日 (木)

ラズパイにOpen-Jtalkを入れる

ROSが動いているubuntuラズパイにフリーの日本語TTS、Open-Jtalkをインストールして、ロボットが喋れるようにしましょう。まず最初にwavファイルが再生できるようにセットします。下記でインストールしますが、僕の場合はすでにインストールされていました。念のためにやっておきます。

$ sudo apt-get update
$ sudo apt-get install alsa alsa-utils

これだけではダメで、/boot/config.txtの最後に下記の1行を追加し、オーディオ機能をONにします。

dtparam=audio=on

さらに自分をaudioグループに追加します。ぼくはhanaokacyanなのでコマンドは下記になります。ここでrebootしてここまでの設定を反映させます。

$ sudo adduser hanaokacyan audio

最後に下記のコマンドでオーディオ出力をミニジャックに設定します。ここでrebootしてここまでの設定を反映させます。

$ amixer cset numid=3 1

ラズパイのミニジャックはビデオ信号入りの4極ですが、普通のステレオミニプラグを差し込むとオーディオだけが取り出せる(ビデオはGNDにショートされますが、直列抵抗が入っているので故障はしません)ので、ヘッドフォンや外部スピーカーなどがそのまま使えます。今回は写真のように折りたたみ式の外部スピーカーを使いました。

Dscn3513

サンプルwavファイルがalsaとともにインストールされてるので、下記のコマンドで音("front center"という音声)がでます。

$ aplay /usr/share/sounds/alsa/Front_Center.wav

音量の変更は次のコマンドでミキサーを表示して行います。↑↓キーで音量を変更できます。ただ、僕の環境では設定音量を保存できませんでした。電源を落とすまでは設定音量ですが、再起動すると初期の音量に戻ってしまいます。保存する方法もあるようですが、うまくいきませんでした。

$ sudo alsamixer

もっともミキサーを表示することなく、音量を変更できるコマンドもあります。最後の数値(%)で音量を指定しますが、リニアではないので70~100くらいで大幅に音量が変わります。ともあれ、このコマンドで起動する度にシェルスクリプトや.bashrcなどで音量を再設定してやれば実用上は問題なさそうです。

$ amixer sset 'PCM' 80%

肝心のJTalkのインストールは例によって他の方のインストール法をそのままやってみました。こちらのサイトです。この手順のとおりでpythonで喋らせることができました。次回はその応用でROSを使って喋らせてみます。

2016年9月27日 (火)

ラズパイubuntuの日本語化

Hanabot2で日本語音声合成を使ってみたくなりました。音声合成はOpen-JtalkというフリーのTTSを使うことにしましたが、そのためにはraspberry pi3に載せたubuntu 14.04LTSを日本語化しなければなりません。

あちこちのサイトにあるように、まず日本語パッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get install language-pack-ja-base language-pack-ja ibus-mozc

あとは下記コマンドで日本語設定します。

$ sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

念のためrebootして再度ログインしてみます。nanoを起動して日本語化されてればOKですが・・・

Japanedit

僕は一発ではダメでした。色々調べたところ/etc/default/localeの中身を下記のようにする必要がありました。

LANG=ja_JP.UTF-8
LANGUAGE=ja_JP:ja
LC_ALL=ja_JP.UTF-8

最後のLCは表示されるメッセージのどこを日本語化するかを細々設定できるモノのようで、ALLですべてが日本語化されます。僕の場合はこれがPOSIXとかになってました。さらに、僕の場合はsshのターミナルに問題があって(ROS用のThinkpad T61のメニュー表示などを英語化している関係で)日本語表示がターミナル上で文字化けしてしまいました。こちらはターミナルの問題なので、そっちで対応しました。

現状ではモニタを接続して起動すると文字化けしてます。多分、日本語フォントをインストールしてシステムフォントをそっちに切り替えれば良さそうですが、いまのところプライオリティが低いので、後回しにします。

次回、日本語TTSのOpen JTalkをためします。

2016年9月19日 (月)

pythonでturtlebotコンパチ機を人物追跡させる

ROSさんお手やわらかに:ROS青雲編

turtlebotのサンプルにkinectを使って人間追跡をするデモがある。これと同様のモノをpytonで書いてみる。もっとも、お手本になりそうなコードを探して、ちょっと手を入れただけだ。これのおかげでpythonでのリスト処理のテクニックのごく一部がつかめた。機械学習のように大規模なデータ処理を扱う言語として、最近注目を集めているpythonだけど、なるほどなという感じだ。

リスト処理はその昔、Lispでデータ構造を構築するまねごとをやったことがあるけど、たぶんpythonもそういうことが得意なんだろうとおもう。10年以上前になるが、アメリカの画像認識とロボティクスをやってるベンチャーの人と仕事をしたことがあった。彼が日本にきたとき、秋葉原で接待した帰り、「あなーたはロボットつくるのに、なんちゅう言語をつかってまちゅか」(おそらく僕の英語はこんなふうに聞こえているんだろう)という質問に、「python」と言われ、なんだかわからず綴りを書いてもらったのを覚えている。後日オライリーの本を探して読んだけど、あまり魅力が分からなかった。

肝心のコードはこちらのサイトが元ネタ。動画にあるように、人を検知すると追跡しながらわんわん吠えたり、おもちゃのミサイルを発射したりする物騒なロボだ。ここからfollower.pyを拝借して改造した。最初の方のコメントは残したが、他のノードと連携する部分(わんわん吠えたりする部分)は削除して単純化した。わかりやすいと思う。

「follower.py」をダウンロード

これの実行前にminimal.launchと3dsensor.launchを実行しておく。肝心のパフォーマンスは、ラズパイ3のHanabot 2でも、かなりスムーズだった。

2016年9月 5日 (月)

turtlebotをリモコンしやすくする

ROSさんお手やわらかに:ROS青雲編

turtlebotをリモコンするのには、この投稿にあるようゲームパッドを使っているが、スティックのききが良すぎてゆっくり動かすのがむずかしい。そこでゆっくり動かせるよう、teleoperationのlaunchファイルを修正する。

以降はlogitech.launchを使用している場合。

$ sudo nano /opt/ros/indigo/share/turtlebot_teleop/launch/logitech.launch

nanoで開いて下記の部分を直す。

param name="scale_angular" value="1.5"

param name="scale_linear" value="0.5"

scale_angularは旋回速度のスティック角度への係数。つまり最大に倒して1.5rad/s。これを1.0に。scale_linearは走行速度のスティック角度への係数。最大で0.5m/sなので、これも0.3に変更する。これでスティックが少し鈍感になり、ゆっくり動かしやすくなる。

この値は実際に操縦してみて、操縦しやすい値にすればよい。例によってアップグレードで元にもどる可能性があるので、バックアップを忘れずに。

2016年9月 4日 (日)

turtlebotの自律移動速度を変える

ROSさんお手やわらかに:ROS青雲編

turtlebotのスタックを改造し、自分の実験環境で使いやすくしていく。まずは自律移動の速度を遅くする。

roombaをベースにしたturtlebotは、ラズパイ2などの遅いプロセッサで制御している時には、プランナーが作った計画経路を正確にたどれないことが多い。rvizを見ているとよく分かる。これはプロセッサが遅いので制御周期が計画より遅く、制御が間に合わないため。もちろん、ある程度ずれると再計画するので最終的に目的地には到達するのだが、そのたびにギクシャクするし、カーブでオーバーシュートしたりすると家具のかどなんかにぶつかることがある。なるべく計画の経路をとらせるには、簡単には移動速度を制限すればいい。

自律移動での速度を制限するには /opt/ros/indigo/share/turtlebot_navigation/param/dwa_local_planner_params.yaml をいじる。これはdwa_local_plannerがロボットの経路を立てる時に使う情報をまとめたもの

$ sudo nano /opt/ros/indigo/share/turtlebot_navigation/param/dwa_local_planner_params.yaml

nanoでファイルを開き、下記の部分を手直しする。

max_trans_vel: 0.5 # choose slightly less than the base's capability

max_rot_vel: 5.0  # choose slightly less than the base's capability

max_trans_velは直線方向の移動速度の最大値で単位はm/sだ。ラズパイ2ではこれを0.3にした。同様にmax_rot_velは旋回方向の最大速度で単位はラジアン/sだ。πで180度だから、これも3.0にした。最大速度は180度/sくらいになる。

これくらいにするとウチの環境ではスムーズに移動できた。例によって、これはapt-get upgradeをすると上書きされてもとにもどる可能性があるので、どこかにバックアップを作っておく。

« 2016年8月 | トップページ | 2016年10月 »