■
hector_slamとmove_baseを用いた自律移動
準備
まずは下記のものを用意してください
- ROSがインストールされているマシン(前回作成したもの)
- HOKUYO URG-04LX-UG01
今回はレーザーレンジファインダとして北陽電機株式会社のレーザーレンジファインダ URG-04LX-UG01を使用します。 USBバスパワーで駆動するため簡単に使うことができますが、5m程度の距離しか得ることができません。
レーザーレンジファインダをパソコンに接続したら、一般ユーザーでもアクセスできるように、パーミッションを変更します。
$ sudo chmod 666 /dev/ttyACM0
デバイス名ttyACM0は適宜変更してください。
hokuyo-nodeもインストールしておきます。
$ sudo apt-get install ros-indigo-hokuyo-node # 現在はhokuyo-nodeよりurg-nodeの仕様が推奨されているようですが、今回はhokuyo-nodeを使用します。
ダウンロード
今回もDaiki Maekawaさんのnavigation2d_exampleを使わせていただきます。
githubからダウンロードしてきます。
$ cd ~/catkin_ws/src $ git clone https://github.com/DaikiMaekawa/ros-navigation2d-example
起動
move_baseをroslaunchで起動します。
$ cd ros-navigation2d-example/launch $ roslaunch move_base.launch
rviz上で2D Nav Goalボタンを押して、目的地をクリック&方向にドラッグでゴールを指定すると進路がrviz上に表示され、ロボットの動きが/cmd_velに配信されます。
cmd_velの確認
$ rostopic echo cmd_vel
ゴールを指定すると、動作目標が配信されるのを確認できます。
レーザーレンジファインダを持って指示通りに移動すると、ゴール付近で終了します。
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/8/7
■
hector_slamを用いた地図作成
目的
ROSは、機能ごとにモジュールが分かれていて他の人が作ったモジュールを自分のプログラムに組み込むことが容易にできます。 今回は公開されているhector_slamというパッケージとレーザーレンジファインダを使って地図を作ってみたいと思います。
準備
まずは下記のものを用意してください
- ROSがインストールされているマシン(前回作成したもの)
- HOKUYO URG-04LX-UG01
今回はレーザーレンジファインダとして北陽電機株式会社のレーザーレンジファインダ URG-04LX-UG01を使用します。 USBバスパワーで駆動するため簡単に使うことができますが、5m程度の距離しか得ることができません。
レーザーレンジファインダをパソコンに接続したら、一般ユーザーでもアクセスできるように、パーミッションを変更します。
$ sudo chmod 666 /dev/ttyACM0
デバイス名ttyACM0は適宜変更してください。
ダウンロード
今回はDaiki Maekawaさんのhector_hokuyo.launchを使わせていただきます。
githubからダウンロードしてきます。
$ cd ~/catkin_ws/src $ git clone https://github.com/DaikiMaekawa/hector_slam_example.git
hokuyo-node hector_slamはインストールしておきます。
$ sudo apt-get install ros-indigo-hokuyo-node ros-indigo-hector-slam # 現在はhokuyo-nodeよりurg_nodeの仕様が推奨されているようですが、今回はhokuyo-nodeを使用します。
起動
hector_hokuyoをroslaunchで起動します。
$ cd hector_slam_example/launch $ roslaunch hector_hokuyo.launch
レーザーレンジファインダとパソコンを持って周りを歩くと地図が作成されます。
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/8/7
■
DebianをBeagleBoneへインストール
目的
今回は、BeagleBoneBlackにDebian Wheezyをインストールします。
組み込み用途のため、lxde版ではなくconsole版をインストールします。
準備
まずは下記のものを用意してください
- BeagleBoneBlack Rev C
- mincro SDカード
- Linuxマシン
SDカードの準備
ここからはLinuxマシンでの作業になります。
イメージファイルのダウンロード
ビルドされたイメージファイルをダウンロードしてきます。
$ wget https://rcn-ee.com/rootfs/bb.org/release/2015-03-01/console/bone-debian-7.8-console-armhf-2015-03-01-2gb.img.xz
md5sumはmd5sum: 10823cb21e6fc4536ff87605dc50ea6eです。必要に応じてチェックしてください。
展開
ダウンロードしたイメージファイルを展開します。
$ unxz bone-debian-7.8-console-armhf-2015-03-01-2gb.img.xz
書き込み
パソコンにSDカードを接続してください。
イメージファイルを書き込むために、まずはSDカードのデバイス名をチェックします。
$ lsblk
ここで、デバイス名をチェックします。デバイス名を間違るとOSが飛びますご注意ください。
私の環境では、/dev/mmcblk0として認識されました。
わからない場合は、SDカードを抜いた状態で実行・指した状態で実行して比較してみてください。
次に、調べたデバイス名を使用してSDカードにイメージファイルを書き込みます。
私は/dev/mmcblk0ですが、各自正しいデバイス名に置き換えてください。
$ sudo dd bs=1M if=bone-debian-7.8-console-armhf-2015-03-01-2gb.img of=/dev/your_devicename # 私の場合は $ sudo dd bs=1M if=bone-debian-7.8-console-armhf-2015-03-01-2gb.img of=/dev/mmclkb0
以上でSDカードの準備は完了です。
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/7/29
■
ArchLinuxをBeagleBoneBlackへインストール2
ArchLinuxをBeagleBoneBlackへインストールの続きです。
方法
ブートローダーのインストール
マウント
作業のために適当なディレクトリにマウントします。 すでにマウントしている場合は必要ありません。 今回は~/Document/SDとします。
$ mkdir -p ~/Document/SD $ cd ~/Document
マウントします。
$ sudo mount /dev/devicename1 ~/Document/SD
ブートローダーのインストール(書き込み)
ddコマンドでブートローダーを書き込みます。devicenameは適宜置き換えてください。
sudo dd if=SD/boot/MLO of=/dev/devicename count=1 seek=1 conv=notrunc bs=128k sudo dd if=SD/boot/u-boot.img of=/dev/devicename count=2 seek=1 conv=notrunc bs=384k
アンマウントします。
sudo umount SD
書き込みを完全に完了させるために、syncコマンド(メモリにバッファされたすべてのデータをディスクに書き込む)を実行します。
sync
BeagleBoneBlack(ArchLinux)の起動へ続く
おわりに
以上でインストールは完了です。SDカードをパソコンから取り外してください。起動・設定については別の回で説明します。
わからないことなどがありましたら、ご質問だくさい。
2015/6/30
■
ArchLinuxをBeagleBoneBlackへインストール
目的
今回はBeagleBoneBlackについてです。 BeagleBoneBlackもRaspberryPi同様小さなマイコンボードですが、Debianの派生OSをGUIで動かせてしまうほどの力を持っています。 今回は、そのBeagleBoneBlackへ軽量でパワフルなArchLinuxをインストールしたいと思います。
方法
では、ここからはBeagleBoneBlackのセットアップです。
準備
まずは下記のものを用意してください
- BeagleBoneBlack (Rev C)
- マイクロSDカード
- LANケーブル
- MiniUSB-B to USB-A ケーブル
- マイクロSDカードへ書き込みができるLinuxマシン(マイクロSDアダプターの使用も可)
(1) BeagleBoneBlack には種類が複数ありますが、現在最新のRev Cを使用します。
(2) BeagleBoneBlackはRaspberryPi B+などと同様にマイクロSDカードを使用します。 私は、TOSHIBAの8Gを用意しました。 SDカードのデータはすべて消えますのでバックアップはしておいてください。
内部ストレージもありますが、インストールにはSDカードを使用しないとできません。 内部ストレージの方が早いので、SDで起動した後に内部ストレージへインストールをお勧めします。
(3) BeagleBoneBlackをネットワークに接続するためにLANケーブルを使用します。有線でないと設定できません。
(4) BeagleBoneBlackはMiniBで電源供給を行います。 RaspberryPiと異なり、設定をするとこのポートを使って(ネットワークケーブルを使用せずに)パソコンからログインできるようになります。
SDカードの準備
ここからは作業用Linuxマシンでの操作になります。
まずは、マイクロSDカードをパソコンへ接続してください。 接続したら、lsblkコマンドでマイクロSDカードが認識されていることを確認してください。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 119.2G 0 disk └─sda1 8:1 0 119.2G 0 part / sdb 8:16 0 119.2G 0 disk └─sdb1 8:17 0 119.2G 0 part sdc 8:32 1 7.4G 0 disk ├─sdc1 8:33 1 64M 0 part └─sdc2 8:34 1 7.4G 0 part sr0 11:0 1 1024M 0 rom
私の環境では上記結果のようになりました。 SDカードはsdcです。 この時、sdcは既に2つにパーティションが区切られていたため、sdc1とsdc2というパーティションができています。(Typeがpart)しかし、このあと重要になるのはsdcというデバイス名(Typeがdisk)です。
このとき、デバイス名を間違えると、パソコンのハードディスクに書き込んでしまいます。 OSが起動しなくなってしまうかもしれません、念入りにチェックしてください。
パーティション分け
SDカードにルートパーティションを作成します。
fdiskで切り分けていきます。
"devicename"の部分は先程lsblkで調べたデバイス名を使用してください。 私の場合はsdcです。
$ sudo fdisk /dev/devicename
fdiskが起動したら、まずはデバイスのパーティションを全て削除します。 oを入力してください。
Command (m for help): o
これでパーティションが初期されました。
次に、ブートパーティションを作成します。 nを入力してください。
Command (m for help): n
すると、作成するパーティションタイプを選択するよう言われます。 primaryパーティションを使用するため、そのままEnterキーを押すか、pを入力してください。
Select (default p): p
次に、パーティションナンバーを選択するよう言われます。 1を使用するため、そのままEnterキーを押すか、1を入力してください。
Partition number (1-4, default 1): 1
次に、開始セクターを入力するように言われます。 最小の値を使用するため、そのままEnterを押すか、2048を入力してください。 表示される数字はデバイスのサイズによって異なります。
First sector (2048-15564799, default 2048): 2048
次に、終了セクターを入力するよう言われます。 最大の値を使用するため、そのままEnterを押してください。
Last sector, +sectors or +size(K, M, G, T, P} (2048-15564799, default 15564799):
パーティション分けは完了です。 pを入力して、パーティション構成を確認したら、wを入力して変更を適用してください。
Command (m for help): p Command (m for help): w
パーティションのフォーマット
パーティションを作成したので、次にext4にフォーマットします。 私の場合はdevicename1はsdc1になります。 今度は、デバイス名でなくパーティション名を指定するため、最後に1がつくことに注意してください。
$ sudo mkfs.ext4 /dev/devicename1
もしdosfstoolsがインストールされていなかった時はインストールしてください。
# ArchLinuxの場合 $ sudo pacman -Sy dosfstools
SDカードにArchLinuxをインストール
マウント
作業のために適当なディレクトリにマウントします。 今回は~/Document/SDとします。
$ mkdir -p ~/Document/SD $ cd ~/Document
マウントします。
$ sudo mount /dev/devicename1 ~/Document/SD
ダウンロード
ダウンロードしてきます。
$ wget http://archlinuxarm.org/os/ArchLinuxARM-am33x-latest.tar.gz
もしwgetがインストールされていなかった時はインストールしてください。
# ArchLinuxの場合 $ sudo pacman -Sy wget
インストール(展開)
最後に、インストール(SDカードへ展開)をします。 bsdtarを使ってSD/フォルダへ展開してください。
sudo bsdtar -xpf ArchLinuxARM-am33x-latest.tar.gz -C SD
書き込みを完全に完了させるために、syncコマンド(メモリにバッファされたすべてのデータをディスクに書き込む)を実行します。
sync
■
ArchLinuxをBeagleBoneBlackへインストール ver.old
目的
最新のBeagleBoneBlackにArchLinuxをインストールする方法ではうまく起動しない場合があるため、古い方法でインストールしてみます。
パッケージの再配布はできるかどうかわからないため、パッケージ2つをすでに持っている前提で進めます。
準備
まずは下記のものを用意してください
- BeagleBoneBlack (Rev C)
- マイクロSDカード
- LANケーブル
- MiniUSB-B to USB-A ケーブル
- マイクロSDカードへ書き込みができるLinuxマシン(マイクロSDアダプターの使用も可)
SDカードの準備
ここからはパソコンでの操作になります。
SDカードを接続しておいてください。
パーティション分け
SDカードのパーティション分けをします。
ArchLinuxをBeagleBoneBlackへインストールを参考にしながら、デバイス名をチェックしてください。
次にfdiskを使ってパーティション分けを行います。詳しい使い方は上記リンク先をご覧ください。
パーティションは2つ作成します。 bootパーティションとrootパーティションです。
$ sudo fdisk /dev/user_devicename
下記のように、順番に入力して1文字づつEnterを押してください。 空行はEnterのみです。
o n p 1 +64M t e a n p 2 p w
パーティションのフォーマット
パーティション1をfat16、パーティション2をext4でフォーマットします。
詳しくは こちらをご覧ください。
$ sudo mkfs.vfat -F 16 /dev/your_devicename1 $ sudo mkfs.ext4 /dev/your_devicename2
インストール
マウント
マウントします。
$ mkdir -p ~/Document/root ~/Document/boot $ cd ~/Document $ sudo mount /dev/your_devicename1 boot $ sudo mount /dev/your_devicename2 root
展開
ダウンロード済みの(今は公開されていない)ファイルをそれぞれ展開します。
$ sudo tar zxvf BeagleBone-bootloader.tar.gz -C boot $ sudo tar zxvf ArchLinuxARM-am33x-latest.tar.gz -C root $ sync
アンマウントして取り出します。
$ sudo umount boot $ sudo umount root
BeagleBoneBlack(ArchLinux)の起動へ続く
おわりに
以上でインストールは完了です。SDカードをパソコンから取り外してください。 起動・設定については別の回で説明します。
わからないことなどがありましたら、ご質問だくさい。
2015/7/29
■
ReconJetの開発環境の構築
目的
ReconJetの開発環境の構築の構築を行います。
方法
準備
まずは下記のものを用意してください
Linux マシン(説明ではArchLinuxを使用)
ソフトウェアのインストール
ReconJetはAndroidベースのReconOSが搭載されています。
アプリ開発はAndroidアプリ開発と同様に行うことができます。
Androidの開発は以前はEclipseとSDKを用いた方法が一般的でいしたが、新しくAndroid Studioが登場したためこちらを使用します。
Android Studioのインストール
いつもどおりpacmanを使ってコマンドでインストール…といきたいところですが、Android Studioはブラウザを使ってダウンロードしてきます。
Androidのデベロッパー向けサイトへアクセスしてLinuxのandroid-sdk_*****-linux.tgzをダウンロードします。
ダウンロードしたファイルを解凍します。
$ tar zxvf android-sdk_*******-linux.tgz
アップデートします。
$ tools/android update sdk --no-ui
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/7/15