Raspberry Pi Kame プロトタイプ Mark0
raspi-kame作成
これまでやってきたことを組み合わせて、raspberry pi kameを作りました↓
【ハード】
dcモーター×2
サーボモータ×1(16個まで拡張可)
超音波センサ
カメラ
【ソフト】
- ros : kinetic kame
ちょっとした段差なら登ります〜
なんか変な人が乗ってる(;・∀・)
これからこれを使って自律移動や画像認識をしていきたい
参考:
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の方法
プログラムを自動起動にする方法
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つ動きます〜
動作は正回転、停止、逆回転、停止です。
これで車と腕を動かせるようになりました。次はモバイルマニピュレータをつくりたいっす