田畑を守る【メカ☆イノシシ】を作る!!
※注意)Qiitaからの移転で、2020年12月15日に投稿した記事で、情報が古い可能性が高いです
※害獣被害については、まだまだ勉強不足で、もし誤り等あればご指摘くださいmm
目的 (やりたいこと)
実家の畑を、害獣たちから守りたい!
背景・動機
コツコツと手間ひまかけて育てた農作物を、収穫直前にことごとく食い散らかすイノシシたち。
大切に育てたサツマイモもとうもろこしも、ほぼ全滅。
小規模とはいえ、「家族のために」と愛情込めて作った農作物を荒らされるのは、さすがにツラすぎます。
そこで、ない知識を振り絞りながら、私はIoTによる害獣対策の研究を開始しました。
作ったもの
9月にはじめた私の研究は、
- 監視カメラ設置 (広角・赤外線ナイトビジョン)
- 動体検知でLINE通知および録画
- 録画されたビデオ一覧をWebから整理可能に
- SORACOM Airでどこでも持ち運び可能に
と着実に進み、
研究からおよそ2ヶ月で
ある程度かたちになってきたので、ここらで軽くお披露目することにしました。
イノシシなどの害獣から、畑を守るための研究
その研究の中から生み出されたマシーン
それが・・・
害獣対策用の最終決戦兵器『メカ☆イノシシ!』!!!
最終とかいってますが、始まったばかりですし、兵器ですらないです。
また、メカ・イノシシというよりは、どうみても某アニメの伊之助ですが、一旦よしとします!
こいつで、まずは害獣たちを追い払う事にします。
うしろ姿がとってもキュート☆
で、どの辺が「メカ」かというと、タイヤが今流行り?の「メカナムホイール」なところでしょうか…
メカナムにしたことによって、シャーシはステアリング機構のない板1枚のシンプル構造になり、ラズパイ等のモジュールを設置しやすくなっています。
また、メカナムなので「向きを変えずに、前後左右斜めへ移動」でき、「その場でくるくる回転」もできます。
※How a Mecanum Drive Works
で、「どうやってイノシシたち害獣を検知し、追い払うか」ですが、
まずより広範囲の索敵を可能にするため、カメラはメカイノシシ自体ではなく、別途設ける方式に一旦しました。
赤外線ナイトビジョン+広角カメラを高台に設置し、動きを検知すると、害獣を追い払うようにgRPCで**メカイノシシへ指令(メッセージ)**を送ります。
※気持ちてきには、獣の呼吸-漆ノ型『空間識覚』
メッセージを受け取ったメカイノシシは、害獣たちを威嚇します。
また、畑などは自宅から離れた場所にあったりするため、自宅のWiFi接続は期待できません。
そこで、監視システムはSORACOM Airでネット接続するものとし、メカ・イノシシ側は監視システムをWiFiアクセスポイントにしてネットに接続します。
以上が、「メカ☆イノシシ」の概要です。
では、さっそく庭先に一晩設置して検証してみます。
↓こちらは検証前日の映像で、
2頭のイノシシが土を掘り返してミミズを食べている様子が映っています。
そして翌日、
庭先にメカ☆イノシシを設置し、イノシシたちが現れるを待ちます。
・・・が、
いつもなら毎晩のように来ていた害獣たちが、その晩に限っては、現れませんでした。
出来れば「メカ☆イノシシを見てビックリして、山へと逃げ帰る」ところを激写しかったところではありますが、残念ながらその映像を抑えることは出来ませんでした。
以上が、現時点での戦果です。
ぶっちゃけ何の成果も出せていませんが、まだまだ勝負はこれからです。
本当の決戦は、次の実りのタイミング「来年の秋」。
これからも検証とバージョンアップを繰り返して、農作物と家族の笑顔を守っていきたい所存です。
作り方
前振りが長くなりましたが、以下、作り方です。
作るデバイスは2種類。「監視システム」と「メカ☆イノシシ」です。
2台とも、RaspberryPi 4 を用いて作ります。
ハードウェアの準備
試行錯誤しているうちにメモが混沌と化してしまった為、過不足あるかと思われますが、概ね以下のハードを取り揃えました。
ハードウェア | 数量 | 参考URL |
---|---|---|
RaspberryPi 4 | 2 | https://www.amazon.co.jp/dp/B07WR5W2D6 |
ラズパイ4用電源アダプタ | 1 | https://www.amazon.co.jp/dp/B07DN5V3VN |
microSDカード | 2 | https://www.amazon.co.jp/dp/B06XSV23T1 |
メカナムラジコン | 1 |
https://ja.aliexpress.com/item/4000201150331.html ※ArduinoやHAT、PSコントローラーは使わない |
モータードライバ | 1 | https://www.amazon.co.jp/gp/product/B0792WJS5H |
SORACOMキット | 1 | https://www.amazon.co.jp/gp/product/B01G1GSYHW |
イノシシの装甲 | 1 | https://www.amazon.co.jp/gp/product/B07ZT2PZHD |
モバイルバッテリー | 1 | https://www.amazon.co.jp/gp/product/B084WTJK62 |
電池ボックス(12V) | 1 |
https://www.amazon.co.jp/dp/B01FSDL9VC https://www.amazon.co.jp/dp/B019XL7XAG https://www.amazon.co.jp/dp/B00NTCH52W |
Raspi用広角赤外線カメラ | 1 | https://www.amazon.co.jp/gp/product/B074DY544H |
赤外線ライト | 1 | https://www.amazon.co.jp/gp/product/B072J8JR6W |
赤外線ライト用電源 | 1 | https://www.amazon.co.jp/dp/B00AJDAPM6 |
ポータブルバッテリー | 1 |
https://www.amazon.co.jp/gp/bestsellers/diy/6766139051/ ※ラズパイ(5V-3A)と赤外線ライト(12V-2A)の電源が取れれば、ここまでゴツくなくても良いです |
以下は必要に応じて。※ケーブル類は必須ですが、特に指定はないです
電子工作関連 | 参考URL |
---|---|
ラズパイ4ケース | https://www.amazon.co.jp/gp/product/B07W5TVZXT |
ジャンパケーブル | https://www.amazon.co.jp/dp/B06Y48V9DL |
15pinフラットケーブル | https://www.amazon.co.jp/gp/product/B07PXJ7BGW |
PHコネクタキット ※モーター用(他のメカナム買うなら不要かも) |
https://www.amazon.co.jp/gp/product/B07DPT2R3F |
シリコーンワイヤー(赤黒) ※18AWGの方が良いかも |
https://www.amazon.co.jp/dp/B077XBWX8V |
はんだスリーブ+ホットガン ※わりと便利 |
https://www.amazon.co.jp/gp/product/B083FJNWHH https://www.amazon.co.jp/gp/product/B07VNG6YCS |
ペンドライバー ※個人的2020年買って良かった大賞 |
https://www.amazon.co.jp/gp/product/B07KSBSK4Z |
監視システム (親機)
メカ☆イノシシ (子機)
ソフトウェア関連
OS入りのSDカード作成方法は、割愛します。
デバイス2台の、それぞれのセットアップ内容は、概ね以下の通りです。
- 監視システム (親機)
- インターネットへの接続 (SORACOM)
- WiFiアクセスポイント化 (hostapd, dnsmasq)
- メカ・イノシシへの指令 (Python, gRPC)
- カメラ映像リアルタイム配信、動体検知からのアクション (motion)
- メカ☆イノシシ (子機)
- アクセスポイント(監視システム)へのWiFi接続
- 指令の待ち受け (Python, gRPC)
- 指令を受け取った際のアクション (Python, GPIO)
以下、コードサンプルをそのまま記していきます。 (2020/12/14時点)
監視システム (親機)
▼まず、インストールすべきものを入れておく。
$ sudo -i
# apt update
# apt install motion hostapd dnsmasq usb-modeswitch wvdial -y
# pip3 install grpcio-tools
▼SORACOM経由でのネット接続
事前に https://console.soracom.io/ で、アカウント登録及びSIMの登録を行っておく。
SORACOM-SIMの入ったUSBドングルがRaspiに刺さっていることを確認して、以下。
# curl -O http://soracom-files.s3.amazonaws.com/connect_air.sh
# chmod 755 connect_air.sh
# mv connect_air.sh /usr/local/sbin/
# connect_air.sh
# curl -s https://gist.githubusercontent.com/ie4/b6257bcee81ea9f0c99fb61cef44dd63/raw/setup_raspi_soracom_ak020.sh | bash
# reboot
https://console.soracom.io/ へアクセスし、該当のSIMが**使用中(オンライン)**になっている事を確認。
該当のSIMのチェックを入れ、該当のSIMを右クリックして「オンデマンドリモートアクセス」を選択し、以降、そこで発行されたエンドポイント経由でSSH接続する。※ユーザー名は適宜変更する(デフォルトのままなら pi )
※**SORACOM経由にすると、当然費用が発生します。**月額数千円にいくような事態にはなっていませんが、ミドルウェアのインストールやライブ動画の視聴などには、一応ご注意ください
▼WiFiアクセスポイント化
SORACOM経由で作業。WiFiは不要になっているので、↓wlan0をAPとして使えるようにwpa_supplicant.confは退避してる。
$ sudo -i
# mv /etc/wpa_supplicant/wpa_supplicant.conf{,.bkup}
# curl -s https://gist.githubusercontent.com/ie4/70000335c8c5d45e9e80c200d92430ef/raw/setup_raspi_ap.sh | bash
# vi /etc/hostapd/hostapd.conf
# 最終行のWiFiパスワード部分: <PASSWORD> を適宜変更
# vi /etc/default/hostapd
# DAEMON_CONF="/etc/hostapd/hostapd.conf"
# vi /etc/sysctl.conf
# net.ipv4.ip_forward=1 # ←コメントアウトを外す
# vi /etc/dhcpcd.conf
# 192.168.2.1/24 部分を既存のWiFiネットワークと被らないように調整(使ってなければそのままでOK)
# vi /etc/dnsmasq.conf
# dhcpcd.conf の変更に合わせて dhcp-range=192.168.2.2,192.168.2.100 を変更
#
# systemctl status hostapd
# systemctl unmask hostapd
# systemctl enable hostapd
# systemctl start hostapd
# systemctl status hostapd
#
# vi /etc/rc.local
# iptables-restore < /etc/iptables.ipv4.nat # ←を exit 0 の1行前に追記
# reboot
▼Motionの設定
# mv /etc/motion/motion.conf{,.bkup}
# curl https://gist.githubusercontent.com/ie4/22c6cdde7e15cc8b02d03b44a59e4beb/raw/motion.conf -o /etc/motion/motion.conf
# vi /etc/rc.local
# motion & # ←を exit 0 の1行前に追記
# reboot
▼以下は、メカ☆イノシシが監視システムにWiFi接続できてから実行
$ cat /var/lib/misc/dnsmasq.leases
# メカ☆イノシシのIPアドレスが表示されるのでメモ
$ git clone https://github.com/ie4/ino44-grpc-sample.git /home/pi/grpc
$ cd /home/pi/grpc
$ python3 codegen.py
$ vi client.py
# localhost 部分をメカ☆イノシシの正しいIPアドレスに書き換える
メカ☆イノシシ (子機)
$ sudo -i
# apt update
# pip3 install grpcio-tools
# git clone https://github.com/ie4/ino44-grpc-sample.git /root/grpc
# cd /root/grpc
# python3 codegen.py
# iwlist wlan0 scan | grep SSID
# 監視システムのSSID'ino44kanshi'があるのを確認する
# mv /etc/wpa_supplicant/wpa_supplicant.conf{,.bkup}
# curl https://gist.githubusercontent.com/ie4/bc1d97274d1f4f53d64197f26119832f/raw/wpa_supplicant.conf -o /etc/wpa_supplicant/wpa_supplicant.conf
# vi /etc/wpa_supplicant/wpa_supplicant.conf
# <PASSWORD> を上記で設定したWiFiパスワードに変更
# vi /etc/rc.local
# /usr/bin/python3 /root/grpc/server.py & # ←を exit 0 の1行前に追記
# reboot
余談
課題と今後
-
メカナムホイール、実はメカ・イノシシに向いてない問題
- 実は、庭先などの芝生が生い茂っているような場所では、メカナムはタイヤが空回りする事が多く、期待しているような走行をしてくれません・・・(それを今言うのかよ、という感じですが…)
- 当面は、踏み固められた砂利道か、舗装路での利用(パトロール)を進めようと考えています
- また、キャタピラや多脚系のロボットも検討中です
- なんと言ってもやっぱAIを使った物体認識を取り入れたい
- motionの動体検知は、何気にチューニングが難しいところがある (仕方ないけど、害獣以外の検知が多い)
- 害獣のみを検知し、アクションを実行できるようにしたい
-
メカ☆イノシシがまだまだLv.1状態
- かの有名な「スーパーモンスターウルフ」くらい圧倒的なインパクトを獲得したい
- メカ☆イノシシにもっと盛りだくさんなパワーアップアイテムを装備させて、光らせたり、叫んだり、害獣を追いかけまわしたりさせたい
- 複数台のメカ☆イノシシを連なって走行させてみたい
害獣について
-
害獣
- シカやイノシシなど「人間や家畜を襲ったり農作物を荒らしたりして、害を加えるけもの (via. goo辞書)」
- 獣害対策にあたって、法律で禁止されていることなど
- 害獣といえども、許可(免許)なく動物を傷つけたり、捕まえたりするのは法律で禁止されています 「鳥獣保護管理法」
-
獣害被害
- 被害額は減少傾向だが、平成30年度は158億円もの鳥獣による農作物被害が出ている 『被害金額は約158億円 野生鳥獣による被害状況 - JAcom 農業協同組合新聞』
参考URL
-
PythonでシンプルなgRPC
https://qiita.com/ny7760/items/1c793e7cd651c4c9e449
※ほぼそのまま流用させて頂いています -
ラズパイを無線LANルーター化する ~アクセスポイント編~
https://www.itmedia.co.jp/news/articles/2008/14/news042.html
※こちらもほぼそのまま頂いています
Discussion
移転前に頂いた応援コメント
移転前に頂いたアドバイスコメント
これは素晴らしい取り組みですね!
猟師が減っていると聞いたので、IT技術を使って害獣駆除をサポート出来るようなものができれば、非常に社会の役に立つと感じました。
罠猟で定番っぽい話なのですが(とっくにご存知でしょうが)、イノシシとシカは罠の金属臭に非常に敏感だと言う話を聞いたことがあります。設置した機器の何らかの匂いで忌避感で来なかったのかなとちらと思いました。
高度な検出システムじゃなくても、とりあえず金属臭振りまきながら、一定区間を徘徊する無能ロボでも割と効果あるのかも?と思いました。
ありがとうございます!
嗅覚がすごいのは知ってましたが、そうか、金属臭は自然界にはあまり無さそうだから、「金属臭」=「人間が何か策を講じた臭い」と察知されてもおかしくないですね。
これ、すごく面白いですね☆
ちょうど似たようなコンセプト(ただ徘徊するだけ)のマシンは作ろうとしていたので、是非試してみようと思います。
あと、紹介してもらった記事も拝見しました。
面白いですねぇ。まさにイノシシとの騙しあいですよね。
特に、これには「おお!」と思いました。やっぱそうなのだなぁ、と。
ここ数か月、複数台の監視カメラで畑を監視してきましたが、雨上がりに現れる確率が非常に高かったんですよね。他のヒントも凄く参考になりました。何度か読み返すことになりそうな記事ですねぇ。
自分も「うちの近所のイノシシ」の特徴にはなりますが、いくつか傾向が掴めているので、個人ブログかどこかに今後まとめていけたらと思っています。
貴重な情報ありがとうございました!