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

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

機械学習の参考まとめ

機械学習

  1. 機械学習を知識ゼロから学ぶpdf - NAVER まとめ

  2. 機械学習はじめの一歩に役立つ記事のまとめ - Qiita

Deep Learning

  1. Deep Insider: 機械学習エンジニアを目指す人~初中級者のための技術情報サイト

  2. Deep Learningによる一般物体検出アルゴリズムの紹介 - ABEJA Arts Blog

  3. http://wazalabo.com/wp-content/uploads/2014/09/20140905_section_2_isp.pdf

CNN

  1. 定番のConvolutional Neural Networkをゼロから理解する - DeepAge

  2. pythonによる深層学習[CNNフルスクラッチ編] - ぱろっくの日記

  3. Convolutional Neural Networkを実装する - Qiita

  4. numpyだけでCNN実装 - Qiita

  5. 数式で書き下す Convolutional Neural Networks (CNN) - Yusuke Sugomori's Blog

Semantic Segmentation

  1. Good! Semantic Segmentationのサーベイ - takminの書きっぱなし備忘録

  2. 道路状況を見る目――自律走行車はどうやって周囲を認識するのか | NVIDIA

  3. Fully Convolutional Networks for Semantic Segmentationのcaffe実装を試す - おみブロZ

tensor flow

  1. Good! 機械学習を始めたい方に見て欲しいTensorflow入門資料まとめ

  2. Deep Insider: 機械学習エンジニアを目指す人~初中級者のための技術情報サイト

  3. 知識ゼロからTensorFlowを使った機械学習で人工知能を作るー入門編1 - Qiita

  4. TensorFlowの日本語まとめ

MRFとCRF

  1. マルコフ確率場 (MRF) と条件付き確率場 (CRF) の違い - LESS IS MORE

     

Raspberry Pi Kame プロトタイプ Mark0

raspi-kame作成

これまでやってきたことを組み合わせて、raspberry pi kameを作りました↓

【ハード】

【ソフト】

  • ros : kinetic kame

ちょっとした段差なら登ります〜

なんか変な人が乗ってる(;・∀・)

これからこれを使って自律移動や画像認識をしていきたい

参考:

robonchu.hatenablog.com

robonchu.hatenablog.com

robonchu.hatenablog.com

robonchu.hatenablog.com

robonchu.hatenablog.com

robonchu.hatenablog.com

raspberry pi 3 で超音波距離センサ(HC-SR04)を使う

raspberry pi 3で超音波センサを使ってみる

ハード準備
  • 配線は以下を参考

参考:

Building a Raspberry Pi Motion Sensor with Realtime Alerts | PubNub

  • 抵抗は1kΩと2kΩを使用
ソフト準備

Ultrasonic range detection with the Raspberry Pi | Knight of Pi

さんのFullScriptを参考

このscriptのLED部を消して実行

精度に関しては?なところもあるけど、無事動きました〜

今までの内容を組み合わせてraspi-kameをつくります(*´∀`)

他のPCへ向けてrosの指令を送る方法

ROS_MASTER_URIを変更する

  • .bashrcに以下のように記載しておくと便利

alias raspi_robot_mode='export ROS_MASTER_URI=http://{IPアドレス}:11311 export PS1="[\033[41;1;37m]<raspi_robo>[\033[0m]\w$ "'

こうすることで、他PCでroscoreが立ち上がっていると、自PCで動かしたプログラムで他PCにrosの指令を送ることができる〜

設定方法

ja/ROS/NetworkSetup - ROS Wiki

set ROS_HOSTNAME on robot PC to its own ip,

set ROS_HOSTNAME on base PC to its own ip

set ROS_IP on robot PC to base IP

set ROS_MASTER_URI to base IP:11311 both machines.

ubuntu 16.04 mateのautologinの方法

起動したときにデスクトップ画面に自動ログインする設定

  • System -> Administration -> Users and Groups -> password をNot asked on loginに変更
  • /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.confに以下を記載
autologin-user=pi (<- ユーザ名)

これで再起動すると自動的にdesktop画面へ

sshからshutdownする方法

sudo poweroff

scpの使い方

以下参考:

SCPコマンドでローカルのファイルをサーバにアップ&サーバ上のファイルをDL - Qiita

プログラムを自動起動にする方法

PCを再起動した時にプログラムを自動起動する方法

sudo crontab -e

でeditorを選択して、一番下に

@reboot /home/user/test.sh > /home/user/test.txt

を追加。ここで、最終行に空行をいれること。

test.sh

#!/bin/sh

echo "test!!!"

これで再起動時にtest.txtが生成されている。 起動時にshスクリプト自動起動していることが確認できました〜

参考:

Raspberry Piでプログラムを自動起動する5種類の方法を比較・解説

linux起動時に自動的に実行するコマンド(プログラム)の設定 - Qiita

【Ubuntu】OS起動時に自作スクリプトを動かす - パンジェンシーの「汗だく開発日誌」

raspberry pi 3でDCモータを2つ動かす(TA7291Pを使う)

raspi3でDCモーターを2つ動かす

 準備
  • raspi3
  • dc motor 2つ
  • TA7291P 2つ
  • 電池
  • ブレッドボード
  • ピン

etc …

ハードセットアップ
  • 配線の仕方は以下参考。こちらはraspi 12ピンをpwmに設定。さらにraspi 16 18 32 ピンを同様に使用。32にpwmをセット。

参考:↓わかりやすい内容ありがとうございます↓

Raspberry Pi 3 でモーター制御(USB電源) | manspace

Raspberry Pi 2でDCモーターを2つ制御する - カイワレスタイル

  • 電源をセット(試したのは単三電池4個=6Vくらい)
ソフトセットアップ
sudo apt-get install python-rpi.gpio

RPi.GPIOパッケージのインストール

import time
import RPi.GPIO as GPIO

time.sleep(3)
                                                                                                                                                                                    
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)

GPIO.setup(8,  GPIO.OUT)
GPIO.setup(10, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)

GPIO.setup(16,  GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(32, GPIO.OUT)

pwmR = GPIO.PWM(12, 50)
pwmR.start(0)
pwmL = GPIO.PWM(32, 50)
pwmL.start(0)

pwmR.ChangeDutyCycle(0)
GPIO.output(8,  1)
GPIO.output(10, 0)
pwmL.ChangeDutyCycle(0)
GPIO.output(16,  1)
GPIO.output(18, 0)

pwmR.ChangeDutyCycle(100)
pwmL.ChangeDutyCycle(100)
time.sleep(3)

GPIO.output(8,  0)
GPIO.output(10, 0)
GPIO.output(16,  0)
GPIO.output(18, 0)
time.sleep(3)

pwmR.ChangeDutyCycle(0)
GPIO.output(8,  0)
GPIO.output(10, 1)
pwmL.ChangeDutyCycle(0)
GPIO.output(16,  0)
GPIO.output(18, 1)

pwmR.ChangeDutyCycle(100)
pwmL.ChangeDutyCycle(100)
time.sleep(3)

GPIO.output(8, 1)
GPIO.output(10, 1)
GPIO.output(16, 1)
GPIO.output(18, 1)
time.sleep(3)
                                                                                      
GPIO.output(8, 0)
GPIO.output(10, 0)
GPIO.output(16, 0)
GPIO.output(18, 0)
pwmR.stop()
pwmL.stop()

GPIO.cleanup()
time.sleep(1)

これを実行するとモーターが2つ動きます〜

動作は正回転、停止、逆回転、停止です。

これで車と腕を動かせるようになりました。次はモバイルマニピュレータをつくりたいっす