Flow-Developers

Raspberry Pi, Raspbian, python, ROS, IoT, 電子工作, 機械学習, Deep learning, ライフハック

Markdownの書き方(レポート作成に必要な6つの記法)

Markdownの書き方(レポート作成に必要な6つの記法)

  • すぐに忘れてしまう,レポート書くのに最低限必要の記法まとめ

見出し

# 見出し1
## 見出し2
### 見出し3
#### 見出し4

見出し1

見出し2

見出し3

見出し4


箇条書き

* 箇条書き
* 箇条書き
* 箇条書き
- 箇条書き
- 箇条書き
- 箇条書き

  • 箇条書き
  • 箇条書き
  • 箇条書き
  • 箇条書き1
  • 箇条書き2
  • 箇条書き3

引用

>引用

引用


コード引用(python)

```python
print 'Hello world'
```

print 'Hello world'

コード引用(bash)

```bash
#!/bin/bash
echo "Hello World !"
exit 0
```

#!/bin/bash
echo "Hello World !"
exit 0

コード引用(cpp)

```cpp
int main(int argc, char *args[])
{
    printf("Hello, world!\n");
    return 0;
}
```

int main(int argc, char *args[])
{
    printf("Hello, world!\n");
    return 0;
}

リンク引用

[flow-developers](http://flow-developers.hatenablog.com/)

<http://flow-developers.hatenablog.com/>

flow-developers

http://flow-developers.hatenablog.com/


画像引用

![logo](http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png)
<div align="center">
<img src="http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png" width=30%><img src="http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png" width=30%>
</div>

logo


テーブル

|左揃え|中央揃え|右揃え|
|:---|:---:|--:|
|align-left|align-center|align-right|
|セルの左揃えです|セルの中央揃えです|セルの右揃えです|

左揃え 中央揃え 右揃え
align-left align-center align-right
セルの左揃えです セルの中央揃えです セルの右揃えです

Markdown環境設定の過去記事はこちらに。 flow-developers.hatenablog.com

以上

pythonでグレースケール→カラーマップ(colormap)変換

グレースケール→カラーマップ(colormap)変換

  • グレースケール→カラーマップ(colormap)変換の汎用的サンプルコードです。
  • 簡単なのでpython以外でも流用可能です。
  • 種々のセンサ出力のカラー化でご活用ください。

Usage

  • 0を中心に+-5を変化終点としたカラーマップ(colormap)
  • RGB(255,255,255)の変化を示すグラフ
  • カラーマップ(colormap)をmatplotlibでカラーバー(colorbar)
  • 用途に応じて範囲等は変更可能な記述としました。

f:id:flow-dev:20161008181320j:plain f:id:flow-dev:20161008171838p:plain

Sample Code

  • サンプルコードをGitHub Gistにuploadしました。


(pandoc不要!)Markdownを簡単きれいにPDF変換する!

はじめに

VisualStudioCodeは、markdownの編集/プレビューも可能な便利なエディタ。

VisualStudioCode

  • しかし、デフォルトではmarkdownをpdf/htmlファイルで出力できない。
  • markdownに興味がない人に、markdwonで書いたドキュメントを渡したい時に困る。
  • 一方で、ググると「pandocを使え」と出てくる。
  • pandocは色々できるけど設定がめんどくさい。 *「もっと簡単に」「まぁ綺麗なフォント」でmarkdownをpdf/htmlファイル出力したいんだよね。
  • markdown-pdfなんてのもあるが、「まぁ綺麗なフォントじゃない」。cssファイルを探す手間とかいらない。
  • なかなか良いのがなかったんですが、ありました!

vscode-markdown-pdfを最高

  • 「もっと簡単に綺麗なフォントでmarkdownをpdf/htmlファイル出力してほしい」
  • このすべてを満たすのがvscode-markdown-pdf

Install

  1. 左下の拡張機能アイコンをクリック
  2. 検索窓にpdfと入力
  3. Markdown PDFをインストールする

f:id:flow-dev:20161006221202j:plain

Usage

2017/2/3追記.画像をたくさん張る場合,各画像をVGA(640x480)くらいにresizeしてからmarkdown->pdfしないとerrで落ちやすい(ver.0.1.5で確認)

  1. Markdown ファイルを開く
  2. 右クリックしてConvert Markdown to PDFを選択するとpdf変換が始まる
  3. ファイル -> 基本設定 -> ユーザ設定settings.json を開く
  4. 以下の設定を変更すると出力フォーマットをpdf , html, png, jpegから選択可能
 // Output format: pdf, html, png, jpeg
    "markdown-pdf.type": "pdf",

* 詳細は公式Readmeで。 vscode-markdown-pdf

pdf/html化したスクリーンショット

  • pdf f:id:flow-dev:20160901143344j:plain

  • html f:id:flow-dev:20160901143335j:plain

  • フォントも色もデフォルトのままでまぁ綺麗。

まとめ



参考文献

vscode-markdown-pdf

Rapsberry pi(Raspbian Jessie)でTensorFlowを動かしてみた。

はじめに

TensorFlowGoogleオープンソースで公開した機械学習のライブラリ。ディープラーニング実装でTensorFlowが流行るかなと思ったが、サポートOSはMacOS/linuxOS/iOS。残念ながらWindowsOSは未サポート。それなら、Rapsberry pi(Raspbian Jessie)で動かないかなと思ったら、ありました。

f:id:flow-dev:20160613101454j:plain



インストール方法

  • tensorflow-on-raspberry-piを利用して、TensorFlow0.8.0の環境をRapsberry pi(Raspbian Jessie)上に作ります。arm用ビルド対応が入ってます。ちなみにGoogleサポート外です。
  • Rapsberry pi2で試しましたが数分で問題なくインストール出来ました。
$ sudo apt-get install python-pip python-dev
$ wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/raw/master/bin/tensorflow-0.8.0-cp27-none-linux_armv7l.whl
$ sudo pip install tensorflow-0.8.0-cp27-none-linux_armv7l.whl

MNISTをTensorFlow + Rapsberry pi(Raspbian Jessie)で動かしてるスクリーンショット

  • 手書き文字学習の定番、MNIST For ML Beginnersを動かしてみました。
  • CPU負荷325.6%!で、ゆっくりMNISTを計算してくれます。

f:id:flow-dev:20160613092937p:plain

まとめ

Rapsberry pi(Raspbian Jessie)でTensorFlowを動かしてみました。Rapsberry piでTensorFlowも動いちゃうなんて面白いですよね。ではまた。

参考文献

TensorFlow

tensorflow-on-raspberry-pi

MNIST For ML Beginners

クラマー,ペレ,ガリンシャ,ジョージベストそしてクライフ. サッカーのモノクロ写真をディープラーニングで自動彩色をしてみた。

ディープラーニングを用いた自動彩色

ディープラーニングを用いた自動彩色、前から試してみたかったのですが、環境作りが億劫で手を付けていませんでした。しかし先日、早稲田大の研究チームから、

ディープネットワークを用いた大域特徴と局所特徴の学習による 白黒写真の自動色付け

という論文が発表され、 合わせてubuntuで環境構築が楽なコードも公開されたので、早速試してみました。

環境構築

こちらを参考に。

【自動彩色!】色塗り人工知能のインストール方法【Ubuntu】

テスト画像

サッカーの歴史的なモノクロ画像を中心に自動彩色してみました。

空と芝生が含まれる構図がそこそこ得意なようです。画像の特徴として肌の色はもうちょっと出て欲しいような気がします。

では、比較的上手くいった画像を。

クラマーさん
  • 荒れた芝生感が日本サッカー初期の情景に深みを与えましたね。
ペレ
  • 1番上手く彩色された画像です。難しそうですがユニフォームの色が出ればなぁ。
ジョージベスト
  • 芝の彩色でネット越しの立体感が出ました。
ガリンシャ
  • ガリンシャはモノクロのイメージが強いですが、そのイメージが変わる一枚に。
クライフ
  • オレンジのユニフォームを彩色出来れば、 抜群に良かったのですが。

https://itunes.apple.com/jp/album/cruyff-flying-dutchman/id512568042?i=512568348&uo=4&at=1010lmFA

おまけ:ローマの休日
  • 定番ですが、青空が綺麗だったので。空領域の分割はかなり上手くいってますね。

まとめ

サッカーの歴史的写真を中心に、ディープラーニング自動彩色を試してみました。サッカーに寄せた画像で学習すればユニフォームの色分けなどはもう少し良くなるのではないでしょうか。やっぱりディープラーニングは、何を学習させるかが肝のように思います。世界中の画像を手元に置いてるところなら力技で出来るかもしれませんが。ではまた。

Raspberry pi 2(Raspbian Jessie)にROS indigo(ROS-Desktop,rqt,rviz)をインストールする

はじめに

Raspberry pi 2(Raspbian Jessie)にROS indigo(ROS-Desktop)をインストールする方法が 日本語ではなかったので、まとめました。 rqtやrvizが使えた方がデバッグで圧倒的に便利なので、おすすめです。 Raspberry pi 3でも、Raspbian Jessieなら同様の方法でインストールできると思います。



ROSのリポジトリを設定、認証キーを追加

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu jessie main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -

aptのパッケージインデックスを更新

$ sudo apt-get update
$ sudo apt-get upgrade

ROSビルド(ROS-Comm)に必要なパッケージをインストール

$ sudo apt-get install python-pip python-setuptools python-yaml python-distribute python-docutils python-dateutil python-six
$ sudo pip install rosdep rosinstall_generator wstool rosinstall

ROSビルド(ROS-Desktop)に必要なパッケージをインストール

$ sudo apt-get install cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-devl

rosdepを初期化する

$ sudo rosdep init
$ rosdep update

catkinのワークスペースを作成する

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

rosinstallでdesktopを選択する

  • rqtやrvizが使えた方がデバッグで圧倒的に便利なので、desktopでinstallする。
  • Installing ROS Indigo on the Raspberry Pi にdesktopのinstallに必要な手続きは飛び飛びで記載されているが分かりにくいので、以下順序立てて書く。
$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall
$ wstool init src indigo-desktop-wet.rosinstall

ROSビルド(ROS-Desktop)に必要なパッケージをソースビルドする

  • desktopは、libconsole-bridge-dev, liblz4-dev, liburdfdom-headers-dev, liburdfdom-dev, collada-dom-devのソースビルドが必要
  • ソースビルド用にexternal_srcディレクトリを用意する
$ mkdir ~/ros_catkin_ws/external_src
$ sudo apt-get install checkinstall cmake
$ sudo sh -c 'echo "deb-src http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi" >> /etc/apt/sources.list'
$ sudo apt-get update

libconsole-bridge-devをビルドする

$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get build-dep console-bridge
$ apt-get source -b console-bridge
$ sudo dpkg -i libconsole-bridge0.2*.deb libconsole-bridge-dev_*.deb

liblz4-devをビルドする

$ cd ~/ros_catkin_ws/external_src
$ apt-get source -b lz4
$ sudo dpkg -i liblz4-*.deb

liburdfdom-headers-devをビルドする

$ cd ~/ros_catkin_ws/external_src
$ git clone https://github.com/ros/urdfdom_headers.git
$ cd urdfdom_headers
$ cmake .
$ sudo checkinstall make install

checkinstallコマンド後に、以下の設定画面となる。

0 -  Maintainer: [ root@raspberrypi ]
1 -  Summary: [ Package created with checkinstall 1.6.2 ]
2 -  Name:    [ urdfdom-headers ]
3 -  Version: [ 20150804 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ armhf ]
8 -  Source location: [ urdfdom_headers ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ urdfdom-headers ]
12 - Conflicts: [  ]
13 - Replaces: [  ]
Enter a number to change any of them or press ENTER to continue:

2番のNameをurdfdom_headersからliburdfdom-headers-devに変更する。 2 を入力してEnter、liburdfdom-headers-dev と入力する。 再度確認の設定が表示されたら Enterで進む。

liburdfdom-devをビルドする

$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get install libboost-test-dev libtinyxml-dev
$ git clone https://github.com/ros/urdfdom.git
$ cd urdfdom
$ cmake .
$ sudo checkinstall make install

checkinstallコマンド後に、以下の設定画面となる。

0 -  Maintainer: [ root@raspberrypi ]
1 -  Summary: [ Package created with checkinstall 1.6.2 ]
2 -  Name:    [ urdfdom ]
3 -  Version: [ 20150804 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ armhf ]
8 -  Source location: [ urdfdom ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ urdfdom ]
12 - Conflicts: [  ]
13 - Replaces: [  ]
Enter a number to change any of them or press ENTER to continue:

2番のNameをurdfdomからliburdfdom-devに変更する。 2 を入力してEnter、次に liburdfdom-dev と入力する。 再度確認の設定が表示されたら Enterで進む。

collada-dom-devをビルドする

$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get install libboost-filesystem-dev libxml2-dev
$ wget http://downloads.sourceforge.net/project/collada-dom/Collada%20DOM/Collada%20DOM%202.4/collada-dom-2.4.0.tgz
$ tar -xzf collada-dom-2.4.0.tgz
$ cd collada-dom-2.4.0
$ cmake .
$ sudo checkinstall make install

checkinstallコマンド後に、以下の設定画面となる。

0 -  Maintainer: [ root@raspberrypi ]
1 -  Summary: [ Package created with checkinstall 1.6.2 ]
2 -  Name:    [ collada-dom ]
3 -  Version: [ 2.4.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ armhf ]
8 -  Source location: [ collada-dom-2.4.0 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ collada-dom ]
12 - Conflicts: [  ]
13 - Replaces: [  ]
Enter a number to change any of them or press ENTER to continue:

2番のNameをcollada-domからcollada-dom-devに変更する。 2 を入力してEnterを押し、次に collada-dom-dev と入力する。 再度確認の設定が表示されたら Enterで進む。

collada_urdfにパッチを当てる

Re: [ros-sig-embedded] Re: Install ROS on Linaro (gumstix, pandaboard) の添付ファイル(0001-fixed-arm-build.patch)をダウンロードし、パッチを当てる。

$ cd ~/ros_catkin_ws/src/robot_model/collada_urdf/
$ patch -p1 < ~/0001-fixed-arm-build.patch

rvizのコードをARMビルド用に一部変更する。

Unable to compile rviz on ubuntu armhfを参考に、mesh_loader.cppに+で表記した行を追加する。この変更をしないとrvizのビルドが通らない。

$ nano ~/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp 
 #include <assimp/aiPostProcess.h>
 #include <assimp/IOStream.h>
 #include <assimp/IOSystem.h>
 #endif
+ #  ifdef __arm__                 // fix for ARM build
+ #include <strings.h>
+ bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
+ {
+     return !::strcasecmp(p1, p2);
+ }
+ #  endif

ROSビルド用にスワップメモリを拡張する

$ vi sudo raspi-config
    -> 8. Advanced Option を選択
    -> A3 Memory Split
    -> GPU のメモリを 16MByte に設定
    -> 下矢印キーで Finish を選択
    -> Yes でreboot
$ sudo service dphys-swapfile stop
$ sudo nano /etc/dphys-swapfile
#CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024
$ sudo service dphys-swapfile start

ROS依存関係の解消

  • 下記を実行すると、python-rosdep, python-catkin-pkg, python-rospkg, python-rosdistro, sbclなど色々と不足している旨のエラーメッセージが出るが、pip経由やソースビルド経由で導入済みなので問題なし。
$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie

ROSのビルドを実行する

  • 注意:ビルド完了まで数時間かかる。(スワップメモリを使用することもあり)
  • -j4オプションだと途中でエラーになるので、初めから-j2オプションで行う。
  • 上記まで手続きをこなしていれば、下記のrvizのビルドエラー以外は通る。
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo -j2

rvizで以下のビルドエラーが出た場合は個別でビルドする。

Makefile:123: recipe for target 'all' failed
make: *** [all] Error 2
<== Failed to process package 'rviz': 
  Command '['/opt/ros/indigo/env.sh', 'make', '-j4', '-l4']' returned non-zero exit status 2

Reproduce this error by running:
==> cd /home/jorg/ros_catkin_ws/build_isolated/rviz && /opt/ros/indigo/env.sh make -j4 -l4

Command failed, exiting.
$ cd ~/ros_catkin_ws/build_isolated/rviz
$ sudo make -j2
  • 再度ROSビルドをかける
$ cd ~/ros_catkin_ws
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

ROSビルド結果を反映させる

  • --install-spaceオプションで/opt/ros/indigo/にインストールしているので、そこのsetup.bashでビルドを反映させる。
  • source /opt/ros/indigo/setup.bashを.bashrcにも記述することで起動毎に自動反映できる。
$ source /opt/ros/indigo/setup.bash
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc

ROS(roscore)を実行し、動作確認する

$ roscore
  • 以下がエラーなしで立ち上がればROSのビルド完了!
... logging to /home/pi/.ros/log/9781754e-3a9d-11e5-8b98-b827ebe98f3c/roslaunch-raspberrypi-11718.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://raspberrypi:42226/
ros_comm version 1.11.19


SUMMARY
========

PARAMETERS
 * /rosdistro: indigo
 * /rosversion: 1.11.19

NODES

auto-starting new master
process[master]: started with pid [11735]
ROS_MASTER_URI=http://raspberrypi:11311/

setting /run_id to 9781754e-3a9d-11e5-8b98-b827ebe98f3c
process[rosout-1]: started with pid [11748]
started core service [/rosout]

Raspbian Jessieで、roscore,rqt,rvizを立ち上げたスクリーンショット

  • roscoreを起動、picameraのimage_topicを配信、rqt/rvizをリアルタイム表示している。
  • 実際に動いてます!

f:id:flow-dev:20160613083815p:plain



参考文献

Installing ROS Indigo on the Raspberry Pi

Raspberry piにROS indigoをインストールする

http://jorgbosman.eu

CMake is not able to find BOOST libraries

Re: [ros-sig-embedded] Re: Install ROS on Linaro (gumstix, pandaboard)

Raspberry Pi でビルドがこんな感じで失敗したときの対処

バイエルン vs ドルトムントDFBポカール杯決勝 2016/5/21 香川真司 報道写真集

Bayern Muenchen v Borussia Dortmund - DFB Cup Final 2016