13:45 〜 15:15
[O11-P37] 自律航行が可能なソーラーボートの製作について
キーワード:ソーラーボート、自律航行システム、琵琶湖
湖沼の環境は急激に変化し、ときに様々な環境問題が発生している。問題の発生を予測し、環境を保全していくためには定期的なモニタニングが必要不可欠だ。そこで、日本最大の湖である琵琶湖にて特定の地点を航行して水質調査などを行うことができるロボットを製作することにした。今回は、特定の地点を航行する、という点を重視して指定した座標を航行するプログラムの作成し、その動作試験のために「E/SASV Games」というレース大会に参加した。
現在、琵琶湖では自動的に水質などのデータを収集する観測所がいくつか設置されている。しかし、観測所がない地点では人が出向いて調査を行う必要がある。これをロボットに代替えすることができれば、人の手がかからずに琵琶湖の様々な地点でのデータ収集を自動的に行うことができるのだ。
自律航行のプログラムはPythonで作成した。主な仕組みとしては、まずロボットの現在の情報の収集。ロボットの現在の座標や向きの情報を搭載したGPSとコンパスから入手する。次に目標地点の座標と現在の座標との距離を調べる。この距離が一定以内であれば、目標座標に到着したとみなし目標地点を更新する。最後に目標地点の座標と現在の座標から目標地点の方向を計算し、コンパスから得た自身の方向とにズレがあれば、それを修正するように舵を動かす。
このプログラムの性能試験として、はじめに陸上での動作確認を行った。陸上でいくつかの地点を入力し、そこへ車で移動をする際に装置の向いている方向と、目標地点への方向の差の認識ができているのか、目標地点までの距離を認識し、距離が一定以内の時に目標地点の更新ができるのかを確認した。
はじめは順調に動作していたが、しばらくすると現在の座標として出力されている情報と実際の現在座標に差がではじめ、15分ほど前にいた座標を現在座標として出力するようになった。これはGPSの情報を処理して舵を動かすときに、舵が頻繁に動くとうまく進めないのではないのか、という疑念があったため、情報を得た後に実際に処理を行うまでに待機時間を設けたことにより、処理されていない情報がたまっていたことが原因だった。対策としてGPSから得た情報を処理するまでの待機時間をなくして、情報を得る速度との差をなくすようにした。結果として現在の座標で正しく処理を行うようになった。
次に、実際にプログラムを使用する環境での動作試験と、琵琶湖上を航行するロボットの製作に必要な知識の習得のために「E/SASV Games」というレース大会に参加した。この大会はA,B,Cの3つの地点を順に航行し、C地点で折り返してB,A地点を通って戻ってくるという全長約20kmのコースを航行する速さを競う大会だ。レースに使用するボートは、無人で決められた地点を航行でき、動力は太陽光発電で得る、という条件がある。大会に参加するために、自律航行プログラムで航行可能な全長1m50cm、幅45cmの単胴船を製作した。ボートにはメインコントローラとしてRaspberry Pi Zero Wを使用し、自律航行に必要なコンパスとGPS、動力源となるソーラーパネルと推進のためのモータ、そして方向を制御するための舵を搭載した。
最終的な大会結果は3位だった。順調に決められた地点を航行し、プログラムが正常に動作していることを確認することができただけでなく、大会に参加した他のチームから、琵琶湖上で航行するボートを製作するときに注意している点など、今後に活用できる情報もいただくこともできた。それと同時に、二日間にかけて行われた大会の中でいくつかの課題が見つかった。1つ目に熱による動作不良だ。Raspberry Piの熱対策が不十分であったために処理が正常に行われなくなる事態が発生した。目標としているロボットでは今回の大会よりもより長い距離を航行させたいため、航行中の熱対策はこれからも模索していきたい。2つ目に、今回使用した制御機器によって発生した問題だ。今回は制御機器としてRaspberry Pi Zero Wを使用したが、これはシングル・ボード・コンピュータであり、いくつかの処理を裏で実行しているため時間制御が得意ではなかったことで、サーボが揺れるような動きをして正確に動かすことができなかった。大まかな舵の方向はあっていたのでそのまま参加したが、次の製作ではよりシンプルなマイクロコントローラに制御機器を変更し、サーボの制御を正確にしたい。3つ目にロボット本体の課題として、琵琶湖で航行をするためには想像よりも速度が必要だということだ。琵琶湖上は波が高く、今回のボートではそれに逆らって進むのが難しい場面が何度かあった。また高い波によって動力源となるソーラーパネルが濡れてしまい、発電量が下がってしまったこともあり、速度の維持をするための方法を模索していく必要があることがわかった。
現在、琵琶湖では自動的に水質などのデータを収集する観測所がいくつか設置されている。しかし、観測所がない地点では人が出向いて調査を行う必要がある。これをロボットに代替えすることができれば、人の手がかからずに琵琶湖の様々な地点でのデータ収集を自動的に行うことができるのだ。
自律航行のプログラムはPythonで作成した。主な仕組みとしては、まずロボットの現在の情報の収集。ロボットの現在の座標や向きの情報を搭載したGPSとコンパスから入手する。次に目標地点の座標と現在の座標との距離を調べる。この距離が一定以内であれば、目標座標に到着したとみなし目標地点を更新する。最後に目標地点の座標と現在の座標から目標地点の方向を計算し、コンパスから得た自身の方向とにズレがあれば、それを修正するように舵を動かす。
このプログラムの性能試験として、はじめに陸上での動作確認を行った。陸上でいくつかの地点を入力し、そこへ車で移動をする際に装置の向いている方向と、目標地点への方向の差の認識ができているのか、目標地点までの距離を認識し、距離が一定以内の時に目標地点の更新ができるのかを確認した。
はじめは順調に動作していたが、しばらくすると現在の座標として出力されている情報と実際の現在座標に差がではじめ、15分ほど前にいた座標を現在座標として出力するようになった。これはGPSの情報を処理して舵を動かすときに、舵が頻繁に動くとうまく進めないのではないのか、という疑念があったため、情報を得た後に実際に処理を行うまでに待機時間を設けたことにより、処理されていない情報がたまっていたことが原因だった。対策としてGPSから得た情報を処理するまでの待機時間をなくして、情報を得る速度との差をなくすようにした。結果として現在の座標で正しく処理を行うようになった。
次に、実際にプログラムを使用する環境での動作試験と、琵琶湖上を航行するロボットの製作に必要な知識の習得のために「E/SASV Games」というレース大会に参加した。この大会はA,B,Cの3つの地点を順に航行し、C地点で折り返してB,A地点を通って戻ってくるという全長約20kmのコースを航行する速さを競う大会だ。レースに使用するボートは、無人で決められた地点を航行でき、動力は太陽光発電で得る、という条件がある。大会に参加するために、自律航行プログラムで航行可能な全長1m50cm、幅45cmの単胴船を製作した。ボートにはメインコントローラとしてRaspberry Pi Zero Wを使用し、自律航行に必要なコンパスとGPS、動力源となるソーラーパネルと推進のためのモータ、そして方向を制御するための舵を搭載した。
最終的な大会結果は3位だった。順調に決められた地点を航行し、プログラムが正常に動作していることを確認することができただけでなく、大会に参加した他のチームから、琵琶湖上で航行するボートを製作するときに注意している点など、今後に活用できる情報もいただくこともできた。それと同時に、二日間にかけて行われた大会の中でいくつかの課題が見つかった。1つ目に熱による動作不良だ。Raspberry Piの熱対策が不十分であったために処理が正常に行われなくなる事態が発生した。目標としているロボットでは今回の大会よりもより長い距離を航行させたいため、航行中の熱対策はこれからも模索していきたい。2つ目に、今回使用した制御機器によって発生した問題だ。今回は制御機器としてRaspberry Pi Zero Wを使用したが、これはシングル・ボード・コンピュータであり、いくつかの処理を裏で実行しているため時間制御が得意ではなかったことで、サーボが揺れるような動きをして正確に動かすことができなかった。大まかな舵の方向はあっていたのでそのまま参加したが、次の製作ではよりシンプルなマイクロコントローラに制御機器を変更し、サーボの制御を正確にしたい。3つ目にロボット本体の課題として、琵琶湖で航行をするためには想像よりも速度が必要だということだ。琵琶湖上は波が高く、今回のボートではそれに逆らって進むのが難しい場面が何度かあった。また高い波によって動力源となるソーラーパネルが濡れてしまい、発電量が下がってしまったこともあり、速度の維持をするための方法を模索していく必要があることがわかった。
