他の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の方法
プログラムを自動起動にする方法
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種類の方法を比較・解説
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つ動きます〜
動作は正回転、停止、逆回転、停止です。
これで車と腕を動かせるようになりました。次はモバイルマニピュレータをつくりたいっす
raspberry pi 3でサーボモータをいっぱい動かす(PCA9685を使う)
raspi3でサーボモータを動かす
いずれアームを作りたい
サーボブラケットをどう作るか…
準備するもの
- raspi3
- servo motor
- PCA9685
- 電池
- ブレットボード
- ピン etc…
ハードセットアップ
- GND<->GND,5V<->Vcc, SCL<->SCL, SDA<->SDAをつなぐ。左がraspi右がPCA9685。
- PCA9685にサーボをセット(0~16個)
- PCA9685に電源をセット(試したのは単三電池4個=6Vくらい)
ピン配参考
Raspberry Pi2 & 3 Pin Mappings | Windows IoT
ソフトセットアップ
sudo raspi-config
でI2C設定をONに
次に
sudo apt-get install git build-essential python-dev cd ~ git clone https://github.com/adafruit/Adafruit_Python_PCA9685.git cd Adafruit_Python_PCA9685 sudo python setup.py install
でソフトの準備完了
あとは、サーボをPCA9685の0にセットして↓
cd examples python simpletest.py
でサーボが動きます〜
たくさん動かしたいときは simpletest.pyのpwm.set_pwm(0, 0, servo_xxx)のひとつめの0をPCA9685にさしたサーボの番号に指定すればOK
参考:
次はDCモータとかカメラをつけて遊びたい
OpenCVちゃんと動くかな…
YOLOの参考資料まとめ(Deep Learning Tool)
Deep Learningでの認識に興味がありやす
時間があるときに論文よみたい
参考:
YOLOv2/YOLOv2.md at master · leetenki/YOLOv2 · GitHub
GitHub - leetenki/YOLOv2: YOLOv2のchainerの再現実装です(darknetのchainerローダと、完全なchainer上での訓練コードを含みます)
ペンパイナッポーとアッポーペンを識別する(ChainerでYOLO ver2) - Qiita
Deep Learningをお手軽に試してみる : Darknetを使ってオブジェクト認識 - Qiita
Visual SLAM参考資料まとめ
単眼カメラでの位置計測や自己位置推定に興味がありやす
- Monocular Visual Odometry
- Direct Sparse Odometry
- LSD-SLAM
- ORB-SLAM
- PTAM
Visual SLAM
Monocular Visual Odometryがおもしろそう
Good! OpenCVでカメラ画像から自己位置認識 (Visual Odometry)
Good! LSD-SLAMを使える環境を作るまでのあれこれ[後輩用] · GitHub
Good! 趣味なし奴のメモ帳: LSD-SLAMをROSで試す1-インストールとビルドとクイックスタート-
Good! Visual SLAM勉強日記
Good! 第2回cv勉強会@九州 LSD-SLAM
GitHub - marknabil/SFM-Visual-SLAM
GitHub - tum-vision/lsd_slam: LSD-SLAM
単眼カメラで距離計測
Good! Python版OpenCVとカメラで簡易距離計測
http://www.ittc.co.jp/sproduct/photocalc/info/idea/idea.htm
単眼カメラで「距離」も測定できる新技術を東芝が開発。画像も同時取得、早期実用化目指す - Engadget 日本版
単眼カメラで撮影した1枚の画像から距離計測できる撮像技術 | 光と画像の技術月刊誌「OplusE」