発情検知実験を続けています⑤

2024年 7月 11
 by ノルドマルク

 

そもそも放牧牛に取付ける端末は以下の要件を満たしていなければなりません。

 

1.放牧牛の激しい動きに耐えうる頑丈な端末をつくること

2.電池が長持ちすること

 

これを実現するまで4年近くかかっています。最難関は「3.遠くにいる牛の発情を検知できること」です。大きな課題と解決法についてまとめてみます。

 

①動態判別行うために十分なデータを遠くの牛からゲートウェイに送信できない>端末にシゴトをさせ、少ないデータで動態を判別できるようにする

②つなぎ飼い牛と異なり放牧牛の動きが激しく、端末を首頂部右横に固定できない>顎下でも動態判別できるようにする。錘も不要なので牛への負担が少ない

➂肉牛、乳牛、放牧されている場所、牛群タイプによって牛の動きは異なる>各端末に学習期間を持たせ、各端末が装着されている牛の「基準」を持つようにする

 

現在台湾3カ所、日本国内4か所の牧場での実験を続けています。日本国内の実験牧場の牛に取付けた端末が発情検知すると、私(実運用では牧場管理者)にメールが届きます。アプリ上でも発情可能性を位置情報とともに表示します。検知率を高めることはもちろんですが、2023年より実験をつづけるうちに、さまざまな問題も浮かび上がってきました。

 

・ある牛に取付けた「うしみる首輪」を一か月後に別の牛に取付けた場合、過去の学習データはどうなるのか?

・「うしみる首輪」を取付けてから一定期間その牛を牛舎にとどめ、その後草地に放った場合はどうなるのか?

・首輪を装着する際に装着する人の個人差により、ゆるめに取付けてしまった場合はどうなるのか?

・発情の有無にかかわらず、PG*投与により発情誘引を行った場合も正しく検知できるのか

*投与することにより黄体を退行させ、発情を誘起する

 

どうにも解決できない問題もありますが、運用や改良で解決できる課題もあります。

 

発情検知実験を続けています⑥に続く

 


発情検知実験を続けています①はこちら

発情検知実験を続けています②はこちら

発情検知実験を続けています③はこちら

発情検知実験を続けています④はこちら

 

発情検知実験を続けています②

2024619日
 by ノルドマルク

3軸加速度センサーによる 最初の一歩の実験 が終わりました。

3軸加速度センサーの十分なデータ量があれば牛の動態を高精度で判別できるということがわかりました。LoRa通信でのデータ送信量を少なくするために、3軸を合成軸などにするとすぐに精度は落ちてしまいます。人の背中に装着した加速度センサーなどとは異なり、牛の首では人の腕時計に内蔵された加速度センサー同様、オリエンテーション(軸の方向)が容易に変わってしまいます。つなぎ飼いの牛用端末は薄型で首上部に固定しやすいものが多いです。またつなぎ飼いなので動きも限られます。しかし放牧牛用端末ではGPSモジュールなども内蔵しているため厚みもあり、顎下に錘をつけても牛によっては端末が徐々に顎下の錘に近づいてくることがありました。首輪の形状などで物理的に解決しようとしてもなかなかうまくいきません。

 

当初は左画像のように首上で端末を固定していました。錘も必要でした。現在は錘なしで顎下に取付けています。電源ボタンは右耳よりにくるように取付けしています。この取付け方で同じような精度での発情検知を目指しています。

 

 

 

「うしみる」の発情検知では端末がシゴトをしてLoRa通信による制限を補っています。20分毎に位置情報を送信して、電池が長持ち(「うしみる首輪2号」では5年間)するためには、放牧牛に取付けた端末がシゴトをしなければなりません。具体的には端末自信が「あれっ?いつもよりこの牛、活動量が増えてきたな・・・。」と思い、ある基準を超えた時に自らアラートを発信しなければなりません。

 

発情検知実験を続けています➂に続く


発情検知実験を続けています①はこちら

 

 

 

発情検知実験を続けています①

2024612日
 by ノルドマルク

 

公共牧場への入牧もやっと終盤を迎え、発情検知の実験も準備が整ってきました。弊社では台湾のメーカーと協力して、北海道で3か所、九州で1か所、台湾で3か所の牧場で実験を行っています。

放牧牛端末開発にはいくつかの「越えなければならない壁」があります。まず大前提として端末は夏季放牧期間中電池がもたなければなりません。適正な送信間隔を維持しつつ、電池が6カ月間はもたなければなりません。公共牧場などではそうそう簡単に牛を捕まえて、首輪の付け替えなどできません。弊社の「うしみる首輪1号」は20分毎の送信間隔で約6カ月間電池がもちました。まあ「最低限の基準はクリアできた」というところです。それでも700頭近く放牧している牧場にとって、夏季放牧前の電池交換は大変な人手と時間を要しました。

 

次なる壁は端末の堅牢性です。弊社が実験をさせていただいている斉藤牧場は、開拓団が割り当てられた石だらけの山に切り開いた牧場です。牛の活動量は他の公共牧場とは比較にならないほど多く、牛は人の背丈ほどある笹の中や、谷の中を突き進んでいきます。端末は石にゴリゴリこすられたり、水飲み場では水没したりもします。そんな環境でも問題なく動作する端末でなければなりません。弊社では様々な環境の牧場で実験を続けることにより、より堅牢な「うしみる首輪2号」をリリースすることとなりました。

 

3つ目の大きな壁は牛舎から5㎞など遠くにいる牛の発情をどのように検知するかという点でした。「つなぎ飼い牛の発情検知システムはいくつもあるのに、放牧牛の発情検知システムはほとんど見かけない」というのは、「遠くにいる牛からのデータ送信の難しさ」に理由があります。発情検知には体温などによるものもありますが、加速度センサーを使ったものが多いです。LoRa方式では3軸加速度センサーのデータを、1秒間に10回送るというような用途には向きません。「では4Gなど使えばよいのでは?」という質問も承りますが、それでは端末の電池がもちません。とんでもなく大きな電池を内蔵した端末を牛にとりつけることになってしまいます。動態判別には大量にデータが必要となりますが、特殊なデータ圧縮技術を使い送信するという方法もあります。しかし弊社と台湾のメーカーでは「端末にシゴトをさせる」という途を選びました。ただその前にまずはイチから「加速度センサーによる動態判別」の実験をやらなければなりませんでした。

 

1. 通信機能なしの三軸加速度センサーロガーを放牧牛に取付け、データをログする

2. 同時に牛のビデオを撮り続ける

3. 持ち帰ったビデオを牛の動態(採食、反芻、横臥、歩行)に時間ごとに仕分ける

4. ログしたデータをある式にあてはめ、上記動態と比較を行う

 

データ取りは134時間程度何日も行います。「最初の一歩」の実験となりますが、まずまず3軸加速度センサーで牛の動態判別が高精度で行うことができるということが理解できました。

 


 

※発情検知実験を続けています②に続く

旭川北部でも入牧が始まります

2024522
by ノルドマルク

 

こちら旭川北部は旭川市内より降雪量が多いです。積雪の少なかった昨年より雪解けは1週間ほど遅れたようです。こちらの牧場は旭川北部の小高い丘の上にあり、北海道民の私でも「これが北海道だな」と感じるような景色が広がります。

この牧場にも5月最終週には80頭程度の牛が農家さんの手をはなれて入牧します。こちらの牧場では弊社の発情検知システムの実験にご協力いただいています。

つなぎ飼いの牛と異なり、放牧牛の発情検知には越えなければならない技術的ハードルがいくつかあります。そのため放牧牛の発情検知に参入している会社は世界的にも多くはありません。少しのデータをできるだけ遠くまで飛ばすLoRa通信環境下においては、三軸加速度センサーの三軸それぞれの値を1秒間に10回飛ばすようなことは容易ではありません。弊社ではその膨大なデータを圧縮技術の力技でデータをサーバーに送るのではなく、首輪につけてある端末に「シゴトをさせる」ことによって、発情を検知できるようなシステムを開発しています。肉牛、乳牛、放牧地の起伏などによっても牛の活動量は異なります。弊社ではそれぞれの環境において、異なるタイプの牛の発情を検知できるよう柔軟なアルゴリズムを開発中です。

 

 

この広々としたさわやかな牧場に牛たちが入ってくる日が待ち遠しい今日この頃です!

ThingsBoard でトラッカーの位置情報を表示する

2021年03月15日
by RAMBO

 

前回のMetabaseによるデータ可視化に続いて、今回はTnigsBoardを紹介します。

ThingsBoardとは、オープンソースのIoTプラットフォームで、データを収集し、可視化できます。
一般的な可視化ツールと違い、データベースをシステム内に持ち、そこにデータが保管されるため、データベース設計が不要となります。

サンプルとして位置情報を取得し、OpenStreetMap上へプロットされるダッシュボードを作成してみます。

Amazon EC2 上に構築したThingsBoard Community Edition を使用しています。

 


1. ログイン

ブラウザでThingsBoardのURLにアクセスし、ログインします。

 

2. デバイスの追加

左側メニューから[デバイス]を選択します。
「デバイス」の画面が表示されます。
[+]をクリックし、表示されるリストから[新しいデバイスを追加する]を選択します。

「新しいデバイスを追加する」ダイアログが表示されます。
デバイスの名称を入力し、[追加]をクリックします。

デバイスが登録されます。

をクリックします。

「デバイス資格情報」ダイアログが表示されます。
アクセストークンをメモし、[キャンセル]でダイアログを閉じます。

3. データの送信

ThingsBoard の REST API を使用してデータを送信します。
今回は実際のデバイスではなく、Windows PCからの curl コマンドでデータを送信してみます。

緯度・経度と温度を送ってみます。
送信するデータは次のJSONです。


{
"latitude": 43.692332,
"longitude": 142.513703,
"temperature": 35
}

送信する curl コマンドは次になります。

「XXX.XXX.XXX.XXX」はIPアドレス、「PPPP」はポート番号、「AAAAAAAAAAAAAAAAAAA」はデバイスのアクセストークンに置き換えてください。


curl --request POST --header "Content-Type:application/json"  --data "{\"latitude\": 43.692332, \"longitude\": 142.513703, \"temperature\": 35}" http://XXX.XXX.XXX.XXX:PPPP/api/v1/AAAAAAAAAAAAAAAAAAA/telemetry

ThingsBoard の「デバイス」画面で、追加したデバイスをクリックします。
表示される「デバイスの詳細」画面で、[最新テレメトリ]をクリックします。

上記 curl コマンドを実行すると、最新テレメトリにデータが表示されます。

4. ダッシュボードの作成

左側メニューから[ダッシュボード]を選択します。
「ダッシュボード」の画面が表示されます。
[+]をクリックし、表示されるリストから[新しいダッシュボードを作成…]を選択します。

「ダッシュボードを追加」ダイアログが表示されます。
タイトルを入力し、[追加]をクリックします。

ダッシュボードが登録されます。

をクリックします。

空のダッシュボードが表示されます。
右下の編集アイコンをクリックします。

エンティティエイリアスアイコンをクリックします。

「エンティティエイリアス」ダイアログが表示されます。
[エイリアスを追加する]をクリックします。

「エイリアスを追加する」ダイアログが表示されます。
下記のように設定します。

設定したら、[追加]をクリックします。

「エンティティエイリアス」ダイアログに戻ります。
[セーブ]をクリックします。

 

[+ 新しいウィジェットを追加]をクリックします。

「ウィジェットを選択」画面が表示されます。
現在のバンドルで Maps を選択し、
時系列から Route Map – OpenStreetMap を選択します。

「ウィジェットを追加」ダイアログが表示されます。
[データ]でデータソースを追加し、[追加]をクリックします。

ダッシュボードの編集画面に戻ります。
作成したMapのウィジェットが表示されるので、curl コマンドでデータを送信してみます。
マーカーがプロットされることを確認し、保存アイコンをクリックします。

以上でサンプル作成については終了です。

今回はMap上にマーカーをプロットしましたが、他にもいろいろな可視化用ウィジェットが用意されています。 リアルタイムにデータを確認する用途ではなかなか使えるのではないでしょうか。