2014年12月21日日曜日

Turtlebot Gazebo Simulator in ROS Indigo using source installation(ソースインストール)

Turtlebot2 gazebo in ROS Indigo
Checking Gazebo Turtlebot2 Subscribing Topic in rqt_graph(rqt_graphでgazebo turtlebot2の購読トピックの確認)

I have found out how to use turtlebot2 gazebo simulator in ROS Indigo using source installation, which the turtlebot_simulator package is not supported in this distribution.
For the English documentation,  please look at my gist:
https://gist.github.com/kendemu/86a7fe1ecdaf9cc320f4

ROS Indigoでソースインストールを使ってturtlebot2をGazeboで使用する方法を発見しました。ROS Indigoではturtlebot_simulatorのパッケージはサポートされていません。
qiitaにその方法を投稿しました。
http://qiita.com/kendemu/items/f915c7c2498b04e097cc

これでUbuntu 14.04でもturtlebotのシミュレータ環境が可能です!
(Ubuntu 14.04にROS hydroを入れる手段もありますが)

2014年12月18日木曜日

Maker Faire Tokyo(English)




I was inspired to the idea of MAKERS when I was in 9th grade, the book written by Chris Anderson,
and I wanted to go to the MAKER FAIRE someday.
Fortunately, this time I could go to the MAKER FAIRE Tokyo 2014 at the first time!

At first, I tried to get the Free Intel Edison Set(only for 50 peoples), so I went to the
stadium about 1 and a quater hour before the opening. Unfortunately, the Intel Edison Free Set was all out of stock.
There was a rumor in twitter that all Intel Edison were out of stock in the previous day.

I was disappointed, but I found there was more interesting thing on the next booth; The NVIDIA JETSON Robot.
I could feel the greatness of GPGPU and the smalless of the embedded.
GPGPU can do fast complicated calculation and speed up/increase the accuracity of image processing and machine learning( for 33x).
But in my memory, I thought I have to contract a NDA to get the Jetson, but it is open source, no NDA now.
Resently I got the JETSON TK1, so I'm going to write that topic soon!

I was surprised by the high technique of long distance radio communication.

This is a robot that can fly and also walk.(drone) It was developed my Mr.Hashimoto.
The teddy bear under the drone is also a robot too, it can read people's mind(it can connect to the internet).
The teddy bear robot's goal is to go around Japan by hichhiking!


This is a big-sized robot that can control by dynamic movement. This robot was so popular that I couldn't control it because of the long waiting line.

This is a Mars Rover. It was interesting that the design is different between the robot for Earth and the robot for other planets.

Others were Arduino+Cloud(AWS)+leap motion, Arduino Robot with Scratch IDE(Especially the interesting point was having a simulator and it can synchronize the movement to the real robot,,
ARM mbed IDE usefulness(it have software logic analyzer,osyloscope,simulator, and remote-debugger), Video Streaming(Processing) with Raspberry Pi Clustering,
 human plane simulator(using leapmotion and Ocurus Lift), moving Robot Arm with Gcode using Linux CNC(using Linux can have realtime system so it's good for controling robots), everything were interesting!
 
I hope I could apply this experience to my robot development.

Intelligence Robotics Challenge


I participated in the  Robotics Challenge at 12/6.
Intelligent Robotics Challenge's objective is to develop Home robotics.
My robot, Kenseiko-Chan 2 Mobile was customized from the Tsukuba Autonomous Robotics Challenge. Now my robot is loading a gun-type-microphone.

I participated in the "Follow Me" challenge.
The "Follow Me" challenge is to track and follow person in a house environment.
I used PN(Propotional Navigation) and PID control to track the person.
To detect human, I used LIDAR by judging the width of the leg.
This robot can also detect several number of legs.
My robot moved until where the other human intercepts.

My robot problems are:
1. It tracks the pillar with the same width of the human's leg.
2. If the object has 2 legs, then it will be a human with high possibility,
   but my recgonizition system judge two legs in only a distance of 1~2 meters.
3. It can't distinguish the tracker and the other people.
4. It doesn't do voice recgonizing, which is neccesary for home robotics.

The solution of No.1. is to use reflection intensity of the LIDAR's data, to distinguish colors.
The solution of No.2 is only to change the recgonizition system. I'm thinking to change the LIDAR's data to image, delete noise, and do pattern matching or making a human walking probabilistic model using OpenCV.
It is difficult to solve the No.3 with using only the LIDAR's reflection intensity data, because some people wear the same pants, so the reflection intensity(color) will be the same. Human walking probalistics model or using other sensors, like xtion/kinect, or camera will solve the problem.
Looks like I have to study more about vocie recgonizing to solve No.4. I'm studing how to use the julius voice recgonizition library.

Also, there were interesting robotics/intelligence topics and robots in the intelligent robotics challenge.

Rospeex is a Cloud-A.I. Voice recognition and synthesis library compatible with ROS(Robot Operation System) developed by Prof.Sugiura. http://rospeex.org/top
Now it needs internet connection to use this. This application front-end is written in HTML5, so you can use this in the web, and also in mobile too. The server do the voice processing, so your device doesn't need any high hardware processing ability. All your device need is query and respond to the server. The server A.I. uses deep learning to classify data.
Robot from Osaka Institute of Technology
There were many turtlebot in the challenge.

Daigoro from The University of Electrocommunications Tokyo
Daigoro is using LIDAR to follow people. It follows people very accurate. It is using pattern matching.


The next day, I joined the Intelligent Robotics Study Meetup.
There were a lot of interesting research and talks about robotics and A.I.
About the sophisticated voice recognition system, Rospeex, Robot for entertaining children using the original-babysitter and child model expressing by bayesian network, grasping the meaning of an imperative sentence using CRF(Conditional Random Field) and SVM(Support Vector Machine), about Robotics business models, and the Roomba's business model(how to remove the barrier between the consumers: the prejudice of robot), and about Whole Brain Architecture.

I'm going to participate in the next Intelligent Robotics Challenge/Meetups too!


2014年12月14日日曜日

Intelligent Robotics Challenge

スーツケースにしまって運送しました。
12/6に開かれたIntelligent Robotics Challengeに参加しました。Intelligent Robotics Challengeとはホームで生活支援をするロボットを生み出すことを目的とするものです。

出場したロボット
僕はつくばチャレンジに参加したロボット、Kenseiko-chan 2 Mobileにガンマイクをつけて出場しました。
followmeという競技に出場しました。followmeは人間をロボットが家の環境内で追跡する競技です。
アルゴリズムは姿勢制御に比例航法、距離制御にPID制御を使用しました。人間の検出は足の幅をLIDARで計測する方法をとっています。足は複数本検出できるようになっています。
今回の記録は別の人がすれ違う地点ですれ違った人を追いかけてしまってそこで終了になりました。
今回のロボットの問題点は、
1.足の太さと同じ柱があったらそれを追跡してしまう。
2.2本足であれば確実に人間と判定することができるが今の認識システムでは2本足と認識するときは一定以内の距離でないと判定せず、また停止して足をつっつけてしまうと判定できない。
3.  追跡する人と他の人が見分けられない。
4. 音声認識をしない。

1.はLIDARに反射強度という機能がついているのでそれで追跡者と柱の色の比較ができると思うので次は解決できそうです。また、柱は動いていないのでモーション判定の手法を使ってもこれは解決できます。
2.は人間の足かそうでないかという認識システムを確立するほかないかなと思っています。LIDARのデータを画像化しOpenCVでノイズを除去しパターンマッチングをしようかなと考えています。
3.はLIDARの反射強度を使う方法で解決できるかできないか定かではありません。なぜなら同じ色のズボンを履いている人は多くいるからです。上についているXTionなども活用する必要があるかも知れません。
4. 音声認識のためjuliusの使い方を勉強中です。

Intelligent Robotics Challengeではとても有意義な技術交流ができて夢のようでした!

杉浦先生が開発しているROS互換性がある音声認識・合成システム、rospeex. クラウドAIアーキテクチャ、ディープラーニングなど先進的技術を取り入れています。スマホアプリにもなっています。
アプリ、クラウドAI、機械学習など色々なことを教えて頂きました。杉浦先生ありがとうございます!

大阪工業大学、turtlebot
turtlebotロボットの改造にさらなるインスピレーションがわきました!
電気通信大学のロボット、Daigoro
電気通信大学からはLIDARでの人間検出の方法について教えて頂きました。

 岡田先生、中川先生、大橋先生、林先生、その他にも一人参加の僕は色々な人にお世話になりました。ありがとうございました!

12/7はIntelligent Robotics研究会に参加しました!
次世代ロボット音声認識システムROSpeex(Deep learning・ビッグデータ)、ベイジリアンネットワークによる保育士ー子供モデルによるロボットのための子供を楽しませる機械学習モデル、老人介護のためのロボットについて(ロボットの料理のための機械学習モデルの提案)、機械学習による命令文解析(指示語や暗黙の目的語を機械学習(SVM)によって予測する)、ロボットビジネス戦略、Roombaのビジネスモデル(ロボットという消費者との壁をどうやって取り除いたか)、全脳アーキテクチャ等ここでしか聞けない話が盛りだくさんでした!

次回のIntelligent Robotics Challenge/研究会もぜひ参加したいと思います!

2014年12月13日土曜日

アルゴリズム勉強会

アルゴリズム勉強会
北陸アルゴリズム勉強会はcafe?ikagawadoで開かれているアルゴリズムの勉強会です。
この勉強会はアルゴリズムを考えるのに頭を使い、毎回参加するごとに頭が賢くなった気がします。
この勉強会のおかげでiterative DPの書き方が分かるようになったり、ビット演算の活用、いもす法 などのことを知ることができて毎回自分の大きな成長になっています!
前回はチーム戦を行いました。イリノイ大学からの留学生Mr.Marcoとチームを組みました。主に2つの問題が出題されました。1回目のときは僕がドライバー、Marcoがハンドラー(アルゴリズムを考える人)でした。Marcoの考えたアルゴリズムを使いました。ですが見落としていた状態があったので全状態を列挙するため僕はスパゲッティコードで実装してしまいました。2つの論理テーブルと1つの得点テーブルを用意してこの問題を解きました。ビット演算を使うと3つのテーブルが1つに抑えられ、if文の連続も抑えられることが判明しました。
2回目は僕がハンドラー、Marcoがドライバーでした。2分探索をして答えにたどりついたとき探索した回数を返せば良いと気付き、それはlog2n + 1なので2分探索もする必要がないと気づきました。MarcoはJavaプログラマなのですが、javaではlogの底は常用対数である10であり、工夫点としては変換公式を使う必要があったくらいです。2問目はMarcoのファインプレーによりチーム戦で良い成績が出て、2人プログラミングの楽しさを初めて知りました。
次回のアルゴリズム勉強会が楽しみです。

Maker Faire Tokyo 2014

僕が中学3年生の時にMAKERSを読んで感動し、いつか行きたいと思ったMAKER FAIRE TOKYO 2014に今年初めて見学することが出来ました!
MAKER FAIREとは世界各地で開かれているものづくりが好きな人たちのためのお祭りです!
(初心者でも)
僕はまずintel edisonの50名限定無料配布セットをゲットするために朝8:45に現地東京ビッグサイトに到着し、列を待っていたのですが、入場した頃にはすでに配布が終了していました。ガーン
twitterでは最前列らしき人がその日はすでにedisonの配布が終了していたらしきことをつぶやいていたのでわかってはいましたが。。。。

NVIDIA JETSON TK1を積んだロボット
intel edisonがもらえなくて残念と思っていましたが、会場ではNVIDIA JETSON TK1を積んだロボットに魅せられました!GPGPU+組み込みの小型さ。GPGPUは大規模計算、機械学習、画像処理の精度・速度を大きく上げてくれるそうです。自分のロボット開発のインスピレーションが湧いてきました!ですがJETSONはたしか購入時にNDA(秘密保持契約)を結ばないといけなかったはず、そこはどうなのかと店員に話を聞いたところ、今後そのNDAは結ぶ必要がなくなり完全にJETSONはオープンソースになったとのこと!!欲しい!!!そしてやっと一昨日憧れのJETSONが家に届きました!このことは別でブログに書きたいと思います!

長距離無線受信機
長距離無線受信の技術に驚かされました!つくばチャレンジでは僕のロボットはあまり良いGPSのデータが取れなかったのに対してこちらは宇宙の月より離れた場所にあるものからの電波のシグナルを正確に受信しているこの技術の差にびっくりしました!またまたロボット開発のインスピレーションが湧いてきました!


空陸両用クモ型クアッドコプター

こちらは陸を歩くことができ空も飛べる、ロボットアニメに出てきそうなかっこいいロボット(ドローン)です!将来このようなロボットが街の中を飛び回っていると想像しただけでわくわくが止まりません!
下に隠れているのが人間の心理を読むことができるらしいくまさんロボットです。このロボットは日本一周を目指しているそうです!

スケルトニクスのロボット
 実際に操縦できる大型ロボットです。僕も実際操縦してみたかったのですが長蛇の列のため操縦できませんでした。

火星ローバー
火星ローバーだそうです。 地球のロボットと他惑星のロボットは形状、設計や機能が異なることが実感できてすごく興味深かったです!

その他にもArduino + Cloud(AWS) + leapmotion, Arduinoロボット with Scratch開発環境(特に面白かったのはscratchロボットシミュレータがあり、そのロボットシミュレータをロボットの動作と通信を通して同期できること), mbedの開発環境の便利さ(ソフトロジック・アナライザ、オシロスコープ、シミュレータ、リモートデバッガ付き) , Raspberry Piクラスタリングによるストリーミング、鳥人間シミュレータ(leapmotionとOcurus Liftを使っているそうです),Gコードでロボットアームを動かすことのできるロボットアームを動かすことができるlinuxCNC(リアルタイム性がある)、楽しいものでいっぱいでした!

また自分の技術力はまだまだだなあと思いました!
今後もこのような技術に触れて感動し、自分の開発に生かしたいです!

Tsukuba Robotics Challenge




Robot Qualification
I participated in the Tsukuba Autonomous Robotics Challenge.
Tsukuba Robotics Challenge is a trial to develop stable robots that can move freely on the street (Also make sure to be no harm to the people)
To complete the trial, the robot have to move for about 1.3 killometers and detect 5 particular people.
My robot, Kenseiko-chan Mobile 2


My robot was turtlebot(a robot that is silimar to roomba) with LIDAR(Wide range Laser scanner),
toughbook note PC(to cope with rain),xtion(similar to kinect), and GPS.
                      
debugging my robot

                                                                                      


controlling my robot with PS3 controller(creating map)
Actually, I couldn't develop my robot so much because I was also participating in the Kanazawa-city Mobile Application Contest,
and the previous day I went to Tsukuba was the deadline hand-outing the application  so I had to concentrate developing it.
I just finished setting-up environment for my robot and creating robots.

When I arrived to Tsukuba, I started developing the main program of my robot.
This time I used the ROS(Robot Operating System) for the first time, and I started from reading the tutorial of ROS.
However, I couldn't understand how to program the ROS topics and frame_ids so I read the APIs, and I found reading the code is more faster to understand.
 At last, I could program frame_id and topics.                                                         
map tracking in the trial


My algorithm is amcl with SLAM(writing maps) using LIDAR. If I set the first position and the goal position, my robot will move to its way.
 This time my original program didn't work so well so I just used the ROS amcl package. My robot calculate the geolocation by map matching and looking the value of motor encoder.
 To do map matching, I had to take a map, so I made the map with moving my robot manually.(using PS3 controller)
  The track record of my robot was 20 m.
 In the practice my robot moved about 70 m. This shorten of the record was caused from the change of the environment;
 In the pratice there was no person near the starting point but in the trial there were a lot of people near the starting point so the map changed from the practice.

In map-planning running, although my robot was detecting the LIDAR device, but it didn't avoid obstacle.
I found I had to change the amcl configuration file to change the LIDAR subscriber id to base_frame. Now my robot can avoid obstacle.
I didn't used GPS data to plan map this time because the GPS geolocation was inaccurate so I couldn't use it to revise odometry.

My original program was way-to-point tracking. I had to configure the coordinates to local from map coordinates to make it use.
 Now my robot can do way-to-point tracking!

Robot from the Tsukuba University Intelligent Robotics Lab
 Various robots were seen at the challenge.

 In this challenge I could prove turtlebot can be used outside. It can move through the fallen leaves. It stops moving if it hits a middle sized rock.
 It can say that turtlebot can move outside.

つくばチャレンジ2014

車検
11/16に開かれたつくばチャレンジに参加しました!今年が初参加です。
つくばチャレンジとは人間が普段歩行している遊歩道を走行できる実用的なロボットを生み出すことを目的としている実験会です!ルールは屋外をロボットが走行して人を見つけて約1.3kmのコースを完走することです。

開発したロボット Kenseiko-chan mobile 2です。
僕はturtlebotというroombaに似たロボットにtoughbook, LIDAR, xtion, GPSをつけて(パソコンを載せる台車を製作しました)出場しました。

スーツケースにしまうことができるのがKenseiko-chan mobile2 の最大の特徴です。
実は!つくばに出発した日の一日前にKANAZAWAスマホアプリコンテスト2次審査用サンプルアプリの提出期限だったためアプリの開発の方に集中していてロボットはあまり触っていませんでした!ロボットの進捗具合はロボットの製作、環境設定が完了した程度でした。

デバッグ中です。
筑波についてすぐにロボットのメインプログラムの作成に取り掛かりました。
今回はロボットのフレームワークにROS(Robot Operating System)を使ったのですが、このROSの使い方があまりわかっておらずROSのチュートリアルを読むことから始まりました。ですがチュートリアルを読んだだけではどうプログラミングして良いかわからなかったためAPIを読んだところ、ソースコードを読んだ方が早いということに気づきました。これでROSのtopicやframeをどうやってプログラムで指定すれば良いかやっとわかりました。

turtlebotで地図生成しています。PS3リモコンでturtlebotを操縦しています。
アルゴリズムはLIDARでSLAMを書き初期地点と目標地点を設定するとロボットが自動的に目的地に向かうものです。ROSのパッケージに入っているものをそのまま使いました。ロボットの位置情報はLIDARを使った地図マッチングとturtlebotのエンコーダ情報を使って判定しています。  地図マッチングを行うため事前に走行する場所の地図をロボットを操縦することによって生成しました。

地図走行中です。
 今回の走行記録は20mでした。

練習では70m進んだのですが、このような結果になったのは、練習ではスタート地点付近に人が全くいなかったのですが本番ではスタート地点に特に人が集合していたため、地図マッチングに支障が出てしまったためと考えられます。
 また、地図走行のときはLIDARの情報があるのに障害物回避をしてくれず、この原因を解決できませんでした。最近、amcl設定ファイルのLIDARデータのsubscriber idをbase_frameにする必要があったと判明し、今では地図走行時でも障害物回避が可能です!
 今回はGPSの情報を経路生成に利用しませんでしたが、その理由は実際の走行経路とGPSの位置情報に大きなズレがあったためエンコーダ情報の補正等には使用できませんでした。
 amclを使ったウエイポイント走行のプログラムを製作したのですがうまく動いてくれませんでした。これはウエイポイント走行時に指定した座標系がロボットのlocal座標系でmap座標系(frame_idをmapに)に指定しなければならないと判明しました!現在ではウエイポイント走行ができるようになりました!

turtlebot Kobuki http://www.turtlebot.com/
 今回最も収穫になったことは、室内用に作られているturtlebotが屋外でも走ることができたことを発見したことです!走行した道は落ち葉や大きめの木の枝が大量に落ちていたのですがその上でも難なく走行していました!さすがにおおきめの石は乗り越えることができず止まってしまいましたがこれであれば外でも自律走行できます!

筑波大学知能ロボット研究室のロボット
つくばチャレンジに出場していたロボットは多種多様でした!USTREAMを見ていた皆さんもひとつひとつのロボットが異なっていて楽しかったのではないでしょうか。筑波大学の佐々木さん、turtlebotのことを色々教えてくれた大阪工業大学の教授、ROSのことを教えてくれた千葉工業大学の前川さん、トライアル前に色々とサポートしてくれた金沢工業大学の西川さん、つくばチャレンジという有意義な大会を開いてくれた運営の皆さん、そのほか色々な方にアドバイスをいただき本当にありがとうございました。


 このturtlebotを改造してRoboCup@home leagueに出場する予定です。