空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

Gazebo+ROSのお勉強

ROS

Gazebo Tutorial Gazebo : Tutorials gazebo_ros_pkgs - ROS Wiki わかりやすいブログ Controller と HardwareInterface との間の処理の仕組み(1. ロボットモデルの定義と登録) - Qiita Controller と HardwareInterface との間の処理の仕組み(2. RobotHW…

機械学習のお勉強(単層ニューラルネットワーク)

人工ニューロン 神経細胞を2値処理を行う単純なゲートとして表現。 z = w0 * x0 + w1 * x1 + …. + wm * xm and phi(z)={ 1 (z>=0) or -1 (z<0) これは脳内の一つのニューロンの働き(発火するかしないか)を模倣している。 パーセプトロンの学習規則 重みを…

機械学習のお勉強(全体像)

教師あり学習 クラスラベルを予測するための分類 カテゴリデータをインスタンスに割り当てる 連続値を予測するための回帰 予測したい変数:結果変数 予測に使用される変数:説明変数 強化学習 エージェント:環境とのやりとりに基づいて性能を改善するシステ…

機械学習のお勉強(DeepPose, OpenPose)

やること pythonでのcaffe環境構築 OpenPoseを動かしてみる Caffe Install 設定(GPU) 【Caffe】はじめてCaffeをmakeするまでOn Ubuntu16.04 - 緑茶思考ブログ Ubuntu 14.04にCaffeをインストール(GPU編) - Qiita Installing Caffe on Ubuntu (CPU-ONLY) - Ch…

sumoをros(kinetic)で動かしてみる

動かし方 基本的には以下のREADMEの通り GitHub - arnaud-ramey/rossumo: Wrapper of the ARDroneSDK3 sample "JumpingSumoPiloting.c" as a C++ lightweight class for ROS. はじめに、WIFIでsumo(名前:Jett~)と接続しておく 変更点 catkin_make --only-pk…

chainerで動かしたいものリスト

動かしながら理解を深めたい ひとつずつ動かしていく〜(TBD) サンプル集 Chainerのサンプルコードを集めてみた(メモ) - あおのたすのブログ 2D-CNN Chainerによる畳み込みニューラルネットワークの実装 - 人工知能に関する断創録 3D-CNN VoxcelChain 3…

クラスタリング(k-means)のお勉強

k-meansでクラスタリング(教師なし) import numpy as np from sklearn.cluster import KMeans # size 量的データ features = np.array([ [20, 95, 190], [52, 103, 103], [50, 70, 280], [65, 65, 210], [84, 84, 96], [20, 50, 140], [28, 49, 176], [40,…

PyQtのお勉強

MyEnigmaさんの以下の記事が非常にわかりやすい↓ myenigma.hatenablog.com 環境設定 sudo apt-get install python-qt4 解説内容 Windowを作る ステータスバーに文字などを表示する メニューバーを作る ツールバーを作る 一行のフォームに文字や数値を表示す…

ロボットをGazebo + ROS(kinetic)上で作って、動かしてみる

ROS

Gazebo ROS Demos GitHub - ros-simulation/gazebo_ros_demos: Example robots and code for interfacing Gazebo with ROS Quick Start Rviz: roslaunch rrbot_description rrbot_rviz.launch Gazebo: roslaunch rrbot_gazebo rrbot_world.launch ROS Contro…

HOG+SVMで物体認識(OpenCV3)

HOG+SVM HOG : 局所領域 (セル) の輝度の勾配方向をヒストグラム化 SVM : サポートベクターマシン(SVM) 2class の分類を行う sample1とsample2ディレクトリに分類したい画像を同じ枚数用意 予測したい画像を用意(test.png) 実行方法 python hog_svm_2cla…

Hough変換で直線、円検出をやってみる

import cv2 import numpy as np img = cv2.imread('dave.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray,50,150,apertureSize = 3) lines = cv2.HoughLines(edges,1,np.pi/180,200) for rho,theta in lines[0]: a = np.cos(thet…

マーカーを用いたカメラ位置姿勢推定(OpenCV+ArUco)

ArUcoのマーカー種類 SingleMarker Board ChessBoard Diamond Single マーカの一辺の長さを指定。 マーカとカメラ間の位置関係を求める。 Board マーカの一辺の長さとマーカ間の長さを指定。 ボードとカメラ間の位置関係を求める。 単一マーカより精度は良い…

物体追跡をやってみる(ピンクのボールを追いかける)

やりたいこと:ピンクボールの追跡 OpenCV-Python tutorial OpenCV-Pythonチュートリアル — OpenCV-Python Tutorials 1 documentation OpenCVでのHSVの扱い OpenCVでのHSV色空間lower,upperの取り扱い - Qiita ピンクの色相の検出 lightsalmon : 255,160,167…

機械学習のお勉強(ベイズ推定)

パラメトリックモデルの3つのステップ パラメータを含むモデル(数式)を設定する パラメータを評価する 最良の評価を与えるパラメータを決定する ここで、2.においてパラメータを評価する基準として大きく2つある * 1つは誤差を定義して誤差を最小にするパ…

機械学習のお勉強(特徴量)

TBD Haar-Like 物体の局所的な明暗差の組み合わせにより、画像を判別する LBP(Local Binary Pattern) 物体の局所的な輝度の分布の組み合わせにより、画像を判別する HOG(Histogram of Oriented Gradients) 物体の局所的な輝度の勾配方向の分布の組み合わ…

機械学習のお勉強(最小二乗法、最尤推定法、パーセプトロン)

最小二乗法 ex: 観測値と真値の二乗誤差を最小にするようにn次多項式を解く。 データセットがn以上あると解析的に平方根平均二乗誤差が0の多項式を導くことができる。 平方根平均二乗誤差:解いて求めた多項式から推定する値とデータセットとの値が平均的に…

ネットワークのお勉強その2

SSIDとは Service Set IDentifier! SSIDとは、無線LANのアクセスポイントを識別するための名前のこと。 参考: SSIDとは - IT用語辞典 Weblio辞書 無線LANルーターのSSIDとは?-ELECOM WEB SITE! アクセスポイントとは 「アクセスポイント」は、Wi-Fiの通信…

keras2とchainerの使い方をCNNでくらべてみる

目的:keras2とchainerの使い方の違いを知る まとめ: keras2はmodelの最初の層以外の入力は記述しなくても良い。バックエンドがtheanoとtensorflowで入力の配列が異なる。 chainerはmodelの層追加時、入力と出力の数を記入。入力でNoneと記述すると自動的に…

c++のお勉強~その2~

cpp

一歩ずつ! 型・インスタンス・オブジェクト 構造体は型、型を使って作られた変数はインスタンス。特に、構造体は意味のある情報の塊なので、構造体変数のことをオブジェクトということがある。 アクセスの仕方:①オブジェクト.メンバ ②オブジェクトのポイン…

分類のお勉強

sklearnを用いた2クラス分類 画像データの2クラス分類 sklearnを用いた2クラス分類 #!/usr/bin/env python # coding: utf-8 import numpy as np from sklearn import datasets from sklearn import cross_validation from sklearn import metrics # DataSet…

オブジェクト指向プログラミング(OOP)のお勉強

cpp

c++のコンパイルの仕方 構造化言語では解決できない2つの問題 OOPの優れた3つの仕組み クラスとは クラスの効能1:まとめる クラスの効能2:隠す クラスの効能3:たくさん作る インスタンス変数、グローバル変数、ローカル変数 インスタンス変数 ポリモーフィ…

ROSのスクリプト構成を考えてみる

C++編 pattern1 package 構成: func.h , func.cpp, func_node.cpp func.h include <必要なファイル> namespaceをパッケージ名で作成 Funcクラスを作成 コンストラクタとデストラクタの定義(Public) pubやsub,callbackを定義(Private) その他、必要な変数や…

tmuxの設定をいじっていみる

設定方法 .tmux.confに設定を記入 設定が反映されない時 tmuxのプロセスをkillしてから立ち上げる 設定内容 tmux v2.1~ :マウスの設定変わっている shift + 右クリック tmux v2.1からmouse関連の設定が変わった - Qiita tmuxチートシート - Qiita tmuxの個…

kerasを動かしてみる~その2:CNN~

tensorflowをバックエンドで動かす .keras/keras.jsonを以下のように書き換え { "image_dim_ordering": "tf", "epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow" } GPUで使う pip install tensorflow-gpu (TBD) CNNのサンプル GitHub - fchol…

画像読み込みのお勉強

例えばros kinect のdepth imageは Data published on /camera/depth/image_raw is the depth in millimeters as a 16 bit unsigned integer. のようにパブされている。 [PARTLY UNSOLVED] Raw Kinect Depth Data - ROS Answers: Open Source Q&A Forum グレ…

機械学習のお勉強(ChainerCV)

ChainerCV↓ コード GitHub - chainer/chainercv: ChainerCV: a Library for Computer Vision in Deep Learning ドキュメント ChainerCV — ChainerCV 0.2.1 documentation Detection Models Faster R-CNN Single Shot Multibox Detector (SSD) Semantic Segme…

機械学習のお勉強(SVM,ニューラルネット、CNN、FCN,YOLO,SegNet etc ...)~参考まとめ~

SVM NN CNN AlexNet VGG FCN YOLO SSD SegNet 3D-CNN chainer sample Fine-tuning インデックスカラー 画像のセグメンテーション keras2とchainerが使いやすそう SVM SVM、ニューラルネットなどに共通する分類問題における考え方 - HELLO CYBERNETICS http:/…

RGBDデータセットのお勉強

参考:List of RGBD datasets INDOOR NYU Dataset v1 ☆ NYU Dataset v2 ☆ SUN 3D ☆ SUN RGB-D ☆ ViDRILO: The Visual and Depth Robot Indoor Localization with Objects information dataset ☆ SceneNN: A Scene Meshes Dataset with aNNotations ☆ Stanfor…

ROS message_filtersのお勉強

複数のトピックの時間の同期を取りたいときなどに使用する。 Time Synchronizer ApproximateTime Policy Time Synchronizer imageとcamera_infoの同期をとっている The TimeSynchronizer filter synchronizes incoming channels by the timestamps contained…

フィルタのお勉強

Finite Impulse Resposeフィルタ(移動平均) Infinite Impulse Responseフィルタ 双2次フィルタ 逆フーリエ&ローパス カルマンフィルタ すごくわかりやすい資料 Finite Impulse Resposeフィルタ(移動平均) y[n] = 1/2 * (x[n] + x[n-1]) Infinite Impuls…

Deep learningの論文まとめサイト&キャッチアップ方法

論文まとめ aonotas.hateblo.jp 2016年のディープラーニング論文100選 - Qiita DeepLearning研究 2016年のまとめ - Qiita Deep Learningの理論的論文リスト - Obey Your MATHEMATICS. わかりやすいブログ Twitter社が発表した超解像ネットワークをchainerで…

エッジ検出のお勉強(OpenCV+python)

Sobel Edge Detection Laplacian Edge Detection Canny Edge Detection Sobel Edge Detection import cv2 image = cv2.imread('iron_man.png') gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) gray_sobel_x = cv2.Sobel(gray_image,cv2.CV_32F,1,0) c…

テストを学ぼう(3)!~テストダブル~

理想的なユニットテストでは、依存するすべてのシステムを利用して行う。しかし、依存する本物のオブジェクトを常に使用できるとは限らない。 こんな時、リファクタリングをしたり、仮のオブジェクトを用いてテストを行うことができる。 テスタビリティ リフ…

ROSrviz/rqtのお勉強

ROS

rviz $ rosrun rviz rviz 左のaddからいろいろ追加してみよう rqt 素のrqt $ rqt rqt_plot $ rqt_plot topic指定 $ rqt_plot /turtle1/cmd_vel/linear/x rqt_image_view $ rosrun uvc_camera uvc_camera_node $ rqt そして Plugins->Visualization->ImageVie…

ROStfのお勉強

ROS

TFコマンド フレームツリーグラフ $ rosrun tf view_frames $ evince frames.pdf フレーム関係 $ roslaunch turtle_tf turtle_tf_demo.launch $ rosrun tf tf_echo world turtle1 At time 1496036356.439 - Translation: [5.544, 5.544, 0.000] - Rotation: …

ROSプラグインのお勉強

ROS

プラグインプログラムの作成 プラグインをエクスポート プラグインの登録 プラグインの記述 プラグインライブラリの構築 プラグインを利用する 実行 プラグインプログラムの作成 ベースプラグインクラス プラグインクラス で構成される プラグインをエクスポ…

ROSアクションのお勉強

ROS

rosアクションの復習 アクションの作成 型の定義 設定 actionの実装例 アクションの作成 型の定義 $ roscd sample $ mkdir action $ cd action $ touch sample.action sample.actionの中身↓ uint16[] freqs --- bool finished --- uint32 steps 上からGoal,R…

ROSメッセージのお勉強

ROS

rosメッセージの復習 メッセージコマンド メッセージファイルの作成 メッセージコマンド すべてのメッセージを表示 $ rosmsg list 指定したメッセージの型を表示 $ rosmsg show geometry_msgs/Twist geometry_msgs/Vector3 linear float64 x float64 y float…

ROSランチのお勉強

ROS

rosランチの復習 node include param arg remap,group node <launch> <node pkg="turtlesim" name="sim" type="turtlesim_node" output="screen" required="true" /> </launch> include 他のランチファイルの立ち上げる時 <launch> <include file="$(find beginner_tutorials)/launch/turtlemimic.launch" /> </launch> param <launch> </launch>

ROSパラムのお勉強

ROS

rosパラムの復習 利用可能なパラメータの表示 list get set delete launch 利用可能なパラメータの表示 set : パラメータを設定する get : パラメータを取得する load : ファイルからパラメータを取り込む dump : ファイルにパラメータを格納する delete : …

ROSサービスのお勉強

ROS

rosサービスの復習 全サービスを調べる あるノードが提供してるサービスを調べる あるサービスを提供するnodeを探したいとき サービスの情報を調べる サービスの利用 サービスの作成 サービスのmsgの作成 サービスサーバーの作成 サービスクライアントの作成…

テストを学ぼう(2)!~スローテスト問題~

スローテスト問題 スローテスト問題とは? テストの実行に時間がかかること ex: 全ユニットテストの実行に10分以上かかる etc… 対策 実行時間の短縮 実行環境の強化 並列で実行する 実行するものを絞り込む 実行時間の短縮方法 テストデータの共有化(*) モッ…

Deep Learningの環境構築(Ubuntu14.04+GTX 950M+CUDA+cuDNN)

これから過酷な戦いが始まる… ノートパソコンにDeep Learningの環境をつくってみる. PC環境 目標 Nvidia Driver 悪名高き?ドライバnouveau Nvidia Driverのインストール nvidia-smiについて CUDA CUDA対応GPU CUDAのドライバ CUDAのインストール方法 CUDA環…

Ubuntuのお勉強1~フォルダ構成~

問題が起こった時にログから問題を特定できるようになりたい /sys、/tmp、/usr、/varについて /var/logについて /var/log/syslogについて /var/log/auth.log 参考 /sys、/tmp、/usr、/varについて 参考: Ubuntu システムログ その1 - /var/log以下に生成さ…

人力ヘリコプターについて

大好きな空飛ぶ自転車のお話 シコルスキー賞 人力ヘリコプター ダビンチ3 YURI-I GameraⅡ Atlas シコルスキー賞 アメリカ・ヘリコプター協会が1980年に設立した賞で賞金2500万円。 受賞基準が以下の三点 人力で60秒間 10フィート(約3メートル)以上の高度を…

ネットワークのお勉強その1

IPアドレス ネットマスク ゲートウェイ 例 IPアドレス 192.168.1.128 以下の2つから構成されている ネットワーク・アドレス(192.168.1.) ホスト・アドレス(128) ネットワーク・アドレスは、ネットワーク全体でお互いのネットワークを識別するために使われ、…

ffmpegとpythonで動画をいじろう

ffmpegのインストール 動画の変換 動画の結合 動画の倍速方法 pythonでフォルダ内の指定ファイルをの取り込み pythonでコマンド実行するには フォルダ内の.MOVファイルをmp4ファイルに変換して、結合するdamedameコード ffmpegのインストール sudo apt-get i…

rosを使ってセンサ取得データの保存

ROS

rosを使ってセンサ取得データを保存する。 環境 os: ubuntu16.04 ros: kinetic usb_cam編 インストール usb_camのインストール 参考:づーまー日記: 【備忘録】 ROS Kinetic でusb-camのインストール方法&使い方 データの表示 ターミナル1 $ roscore ター…

環境構築 ~ Docker / Jupyter のインストール ~

Jupyter Docker Jupyter 参考: Jupyter Notebook(IPython)のインストールと始め方 - TASK NOTES Docker 参考: Ubuntu 16.04 LTS Dockerをインストール - Qiita

Numpy / pandasのお勉強

numpy 配列も@で行列のように計算できる。python3.5以降。 In [7]: import numpy as np In [8]: A = np.array([[1,2],[3,4]]) In [9]: B = np.array([[5,6],[7,8]]) In [10]: C = A @ B @ A.T In [11]: C Out[11]: array([[ 63, 145], [143, 329]]) 以下は同…