ReconJetの起動

目的

ReconJetの起動・初期設定についてです。

ReconJetはスポーツ用のメガネ型ウェアラブルデバイスです。 Microsoft社のHoloLensなどとは違い、現実空間へのホログラム投影ではなく、右下固定で情報を表示することができます。

方法

では、ここからはReconJetの起動を行っていきます。

準備

まずは下記のものを用意してください

  1. ReconJet
  2. MicroUSBケーブル
  3. ネットワークに接続したWindowsマシン

ReconJetとパソコンを接続するためにはインターネット接続が必要です。

ソフトウェアのインストール

パソコンを使って設定をするために、ソフトウェアをインストールします。

まずは、サイトにアクセスしてください。Get StarTed | Recon Engage

ログインを求められるので登録をしてください。

登録をして指示通り進めると、UpLinkのダウンロードボタンが表示されます。押してダウンロードしてください。

ダウンロードしてインストールします。

ReconJetの接続

ReconJetの本体後方にあるポートからパソコンのUSBポートをマイクロUSBケーブルでつなぎます。ReconJetの下部後ろのボタンで電源を入れます。

ここで、(またはそれ以前に)ソフトウェア側でログインを求めれるのでブラウザを使ってログインしてください。

あとは、ソフトウェアの指示通りにアップデートを行ってください。

最後に、マップをダウンロードする範囲を指定します。適宜設定してください。

あとは、ReconJetのインストラクションにしたがって操作をしてください。

スマートフォンにRecon Engageをインストールすると接続することができます。

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/10

参考サイト

 

 

 

ROSチュートリアル3

目的

前回に続きwikiのチュートリアルをやっていきます。

今回はメッセージについてです。ROSではトピックとサービスを使った通信方法があります。

このトピックのデータ型をメッセージと呼びます。

messageを使う

メッセージファイルはROSメッセージの型を説明する単純なテキストファイルです。 これはメッセージのソースコードを異なる言語で作成するのに使います。

msgディレクトリに保管されています。

メッセージは1行ごとに型と名前が記載されているテキストファイルです。

型には下記のようなものが使用できます。

  • int8, int16, int32, int64 (plus uint*)
  • float32, float64
  • string
  • time, duration
  • variable-length array[] and fixed-length array[C]
  • Header

メッセージの定義

メッセージを定義してみましょう。

                        $ cd ~/catkin_ws/src/beginner_tutorials
                        $ mkdir msg
                        $ echo "int64 num" > msg/Num.msg
                    

package.xmlの編集

次にpackage.xmlを編集します。

下記の2行のコメントアウトを外してください。

                        message_generation
                        message_runtime
                    

CMakeLists.txtの編集

次にCMakeLists.txtを編集します。

まずは、CMakeLists.txtから下記の行を見つけてください。

下記のようになるように、コメントアウトを外して、追記してください。

                        find_package(catkin REQUIRED COMPONENTS
                            roscpp
                            rospy
                            std_msgs
                            message_generation
                        )
                    

実行時依存も有効になることをチェックします。

同様に下記の行を見つけて有効になっていることをチェックしてください。

                        catkin_package (
                            ...
                            CATKIN_DEPENDS message_runtime ...
                            ... )
                    

次にメッセージファイルを追加します。

同様にして、CMakeLists.txtから下記の行を見つけて、同じになるように編集してください。

                        add_message_files(
                            FILES
                            Num.msg
                        )
                    

さらに、同様にしてメッセージ生成generate_messages()の呼び出しも有効にします。

                        generate_messages(
                            DEPENDENCIES
                            std_msgs
                        )
                    

make

makeします

                    $ cd ../..
                    $ catkin_make
                    $ cd -
                

rosmsg

rosmsgを使ってメッセージを確認することができます。

                    $ rosmsg show beginner_tutorials/Num
                    $ rosmsg show Num
                

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/28

参考サイト

 

 

 

ROSチュートリアル2

目的

前回に続きwikiのチュートリアルをやっていきます。

roslaunch

roslaunchを使用すると、lanchファイルで定義したノードを一度に起動することができます。

                    $ source ~/catkin_ws/devel/setup.bash
                    $ roscd beginner_tutorials
                    $ mkdir launch
                    $ cd launch
                

launchファイル

下記の内容のturtlemimic.launchファイルを作成してください。

                        
                            
                                
                            
                            
                                
                            
                            
                                
                                
                            
                        
                    

groupでは、turtlesim1,2という名前スペースを持った2つのグループをsimという名前のturtlesimノードで起動します。

nodeでは、turtlesim2がturtlesim1を模倣するmimicノードを起動します。

roslaunch

launchファイルをroslaunchから使ってみます。

                        $ roslaunch begginer_tutorials turtlemimic.launch
                    

別のターミナルからturtle1にtopicを送ってみます。

                        $ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
                    

turtle1にのみtopicを送りましたが、turtle2まで動きます。

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/28

 

 

 

ROSチュートリアル

目的

wikiのチュートリアル を行います。

方法

準備

まずは下記のものを用意してください

  1. 前回作成したマシン

ファイルシステム

まずは、setup.bashを読み込みます。

bashの場合(標準)

                        $ source /opt/ros/indigo/setup.bash
                    

zshの場合(シェルを変更している場合)

                        $ source /opt/ros/indigo/setup.zsh
                    

これにり、rosのコマンドが使えるようになります。

ワークスペース

ROSで作業するためのワークスペースを作成します。 基本的にここで作業を行います。

                            $ mkdir -p ~/catkin_ws/src
                            $ cd ~/catkin_ws/src
                            $ catkin_init_workspace
                        

ワークスペースのビルドは次のようにして行うことができます。

                            $ cd ~/catkin_ws/
                            $ catkin_make
                        

ArchLinuxでcatkin_makeがうまく行かない場合は、こちらをご覧ください。

ワークスペースを適用します。

                            $ source devel/setup.bash
                        

zshの場合は上記のように.bashを.zshに変更してください。

この読み込みはシェルを起動するたびに必要になるので、.bashrc .zshrcなどに書き込んでおくと楽です。

roscd

roscdを使うとパッケージのディレクトリに移動できます。

                            $ roscd パッケージ名
                        

タブ補完を使うこともできます。

パッケージ

ROSのcatkinパッケージはCMakeLists.txtとpackage.xmlを含む必要があります。

パッケージの作成

std_msgs,rospy,roscppに依存したbeginner_tutorialsパッケージを作成します。

                            $ cd ~/catkin_ws/src
                            $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
                        

rospackコマンドでパッケージの依存を調べることができます。

                            $ rospack depends beginner_tutorials
                        

ビルド

パッケージのビルド

パッケージをビルドします。

                            $ cd ~/cakint_ws
                            $ catkin_make
                        

ノード

概念

  • ノード:ノードはROSを使用して他のノードとやりとりする。
  • トピック:ノードはメッセージをトピックに向けて配信し、購読して受け取る。
  • メッセージ:トピックへ配信・購読するROSのデータ型。
  • マスター:ROSのネームサービス。
  • rosout:ROSのおけるstdout・stderr。
  • roscore:マスター+rosout+パラメータサーバ。

roscore

roscoreはROSを使用する際に一番初めに起動させます。

                            $ roscore
                        

rosrun

rosrunはパッケージ名を使用して、パッケージに含まれるノードを起動します。

turtlesimを起動してみます。

                            $ rosrun turtlesim turtlesim_node
                        

トピック

セットアップ

rosrunの続きからさらにturtle_teleop_keyを起動します。

                            $ rosrun turtlesim turtle_teleop_key
                        

これで、亀を矢印キードで操作することができるようになりました。

ROSトピック

turtlesim_nodeとturtle_teleop_keyはトピックを介して通信しています。

rqt_graphを使って、グラフを作成することができます。

                            $ rosrun rqt_graph rqt_graph
                        

rostopicを使うことでトピックの詳細を得ることができます。 echoを使うとトピックのデータを見ることができます。

                            $ rostopic echo /turtle1/cmd_vel
                        

rostopic listではトピックのリストを得ることができます。

                            $ rostopic list -v
                        

rostopic pubではトピックを配信することができます。

                            $ rostopic pub トピック メッセージタイプ 引数
                            $ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
                        

rqt_plotを使用すると、トピックのデータをグラフにすることができます。(略)

サービス

サービスもトピックと同じノード間の通信に使われる手段の一つですが、サービスは、リクエストとレスポンスから成り立っています。

前のままturtlesim_nodeは起動しておいてください。

ROSサービス

rosserviceを使うことでサービスの詳細を得ることができます。

listを使うと提供されるサービスを表示することができます。

                            $ rosservice list
                        

callでサービスを呼び出すことができます。

                            $ rosservice call サービス 引数
                            $ rosservice call clear
                            $ rosservice call spwan 2 2 0.2 ""
                        

rosparamを使用すると、パラメータを操作することができます。(略)

デバッグ

rqt

rqt_consoleはログ収集フレームワークにノードからの出力を表示する機能を追加します。

rqt_clogger_levelはノード実行時の力詳細レベルを変更できます。

両方を起動します。

                            $ rosrun rqt_console rqt_console
                            $ rosrun rqt_logger_level rqt_logger_level
                        

これらを使用してでログを見ることができます。(略)

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/26

2015/8/11 追記

 

 

 

ROS

目的

ロボット開発に便利なツールなどを提供してくれるROSのインストールを行います。

方法

準備

まずは下記のものを用意してください

Linux マシン

ソフトウェアのインストール

まず、makepkgで使用するbase-develをインストールします。

                        $ sudo pacman -Sy base-devel --needed
                    

ROSはyaourtを使用するため、もしインストールしていない場合はyaourtをインストールしておいてください。

パスワードの毎回の入力を省くために、下記のように設定してください。

                        $ sudo echo SUDONOVERIF=1 >> /etc/yaourtrc
                    

AUR パッケージのインストール

yaourtを使ってros-indigoのフルシステム (ROS,rpt,rviz,ロボットの一般的なライブラリ,2D/3Dシュミレータ,ナビゲーション,2D/3D認識) をインストールします。

                            $ yaourt -S ros-indigo-desktop-full --noconfirm --needed
                        

かなり時間がかかりますのでしばらくお待ちください。

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/15

 

 

 

ROSのインストール(Ubuntu・ArchLinux)

目的

Robot Operating SystemをUbuntuにインストールします。

2015/8/7 追記
ArchLinuxでのインストール方法を追記しました。

準備

まずは下記のものを用意してください

  1. Ubuntu14.04マシン or ArchLinuxマシン
  2. インターネット環境

(1) Ubuntuは15.04で試したのですが、依存関係がうまくいかないため14.04で行います。
indigoの対応バージョンは13.10と14.04のみのようです。 Ubuntu14.10と15.04を使用したい場合は、indigoではなくjadeをインストールしてください。

ArchLinuxは2015/8/7時点での最新のものです。

今回は(Ubuntu14.04 or ArchLinux)とindigoを使用します。

Ubuntu14.04

Ubuntu14.04の場合です。

sources.listのセットアップ

デフォルトではpackages.ros.orgのパッケージを登録していないため、登録を行います。

                        $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
                    

鍵の設定

鍵の設定を行います。

                        $ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
                    

アップデート

パッケージインデックスを更新します。

                        $ sudo apt-get update
                    

インストール

インストールを行います。最小から最大までパッケージがありますが、今回はすべてインストールします。

                        $ sudo apt-get install ros-indigo-desktop-full
                        $ sudo apt-get install python-rosinstall
                    

ArchLinux

ArchLinuxの場合です。

まずは、yaourtをインストールしておいてください。

インストール

インストールします。

                        $ yaourt -S ros-indigo-desktop-full --needed --noconfirm
                    

ただし現在(2015/8/7)、このまま実行すると下記のようなエラーがでます。

                        ==> ERROR: A failure occurred in build().
                        Abortin...
                        ==> ERROR: Makepkg was unable to build ros-indigo-catkin.
                    

遡って読んでみると、

                        ImportError: "from catkin_pkg.package import parse_package" failed: No module named catkin_pkg.package
                        Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.
                    

ros-indigo-catkinのインストール中に/tmp/yaourt-tmp-username/aur-ros-indigo-catkin/src/catkin/cmake/parse_package_xml.pyのファイルがcatkin_pkg.packageをimportできなく怒ってるようです。

まずは、catkin-pkgをインストールしましょう。

                        $ yaourt -S python-catkin-pkg --noconfirm --needed
                    

というわけで、catkin_pkgがどこにあるのか検索すると、

                        $ sudo find / -name "catkin_pkg"
                        /usr/lib/python3.4/site-packages/catkin_pkg
                    

検索結果のフォルダをPYTHONPATHへ登録します。 PYTHONPATHへ登録すると、pythonスクリプトのインクルードディレクトリに登録されます。

                        PYTHONPATH=/usr/lib/python3.4/site-packages/
                    

登録したので、catkinがインストールできるか試してみましょう。

                        $ yaourt -S ros-indigo-catkin --noconfirm --needed
                    

うまくいきましたか?それでは、もとのインストールに戻りましょう。

                        $ yaourt -S ros-indigo-desktop-full --needed --noconfirm
                    

catkin-pkgの競合

最後に、インストール途中でcatkin_pkgが競合して、python-catkin-pkgが削除されてpython2-catkin-pkgがインストールされます。

ArchLinuxで後にcatkin_makeをした時にうまくできない場合は、ROSシステムがpython-catkin-pkgのpython3バージョンpython2バージョン両方に依存しているにもかかわらず、python2-catkin-pkgのみしか入っていないためだと考えられます。

                        $ # catkinワークスペースで
                        $ catkin_mae
                        # 〜略〜
                        ImportError: "from catkin_pkg.package import parse_package" failed: No module named 'catkin_pkg'
                        Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.
                        CMake Error at /opt/ros/indigo/share/catkin/cmake/safe_execute_process.cmake:11 (message):
                        # 〜略〜
                    

ここでyaourtを使ってpython3のバージョンをインストールしようとすると、競合を怒られてインストールできません。

                        $ yaourt -S python-catkin-pkg
                        # 〜略〜
                        looking for conflicting packages...
                        :: python-catkin-pkg and python2-catkin-pkg are in conflict (python2-catkin_pkg). Remove python2-catkin-pkg? [y/N] y
                        error: failed to prepare transaction (could not satisfy dependencies)
                        :: python2-rosdep: requires python2-catkin-pkg
                        :: ros-indigo-catkin: requires python2-catkin-pkg
                        :: ros-indigo-rospack: requires python2-catkin-pkg
                        # 〜略〜
                    

そのため、pipを使ってアップデートしてます。

                        $ sudo pip install -U catkin_pkg
                    

findで確認してみると、3.4にも2.7にもあることが確認できます。

                        $ sudo find / -name "catkin_pkg"
                        $ catkin_make
                    

これでcatkin_makeも実行できるようになりました。

共通手順

rosdepの初期化

rosdepを初期化します。

                        $ sudo rosdep init
                        $ rosdep update
                    

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/25

2015/8/ 7 追記
2015/8/11 追記

 

 

 

Makefileの書き方2

目的

Makefileの書き方に続いて、もっと簡単なMakefileを書きます。

準備

まずは下記のものを用意してください

  1. Linuxマシン

make

Makefile

                        CC       = gcc
                        CCFLAGS  = -Wall -Wextra -O2 -g
                        SOURCES := $(wildcard *.c)
                        TARGET   = $(SOURCES:.c=.bin)

                        all: $(TARGET)

                        %.bin:%.c
                            $(CC) $(CCFLAGS) $< -o $@

                         clean:
                            $(RM) -r *.bin
                    

wgetを使って保存してください。

                        $ wget http://tokun.net/bookshelf/program/makefile
                    

これでmakeをすると、.cの拡張子を持つファイルはコンパイルされて、元のファイル名.binという実行ファイルが生成されます。

C++のMakefileを作りたい場合は、CCをg++に、SOURCESとTARGETの.cを.cppに変更してください。

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/28

参考サイト