先日4月10日(日)に実家にてフィールドテストを実施しました。今回のフィールドテストでは実際にロボットを地面上で動かして、脚部やカメラの動作を確認することです。まず比較的地面が固く、雑草が密集していない場所を選んで動作させてみました。

この時のテストで気になった点としては、

  1. 右前にはさみとアームが配置されている関係でロボット全体が前がかりになり、軌道が直線にはならず、弧を描いてしまっている
  2. 1.と関連するが、右前脚が地面から離れるタイミングでロボット全体が前がかりになるように回転してしまう。右前脚が接地すると姿勢が元に戻る
  3. 動き出しと撮影のタイミングによって写真がぶれることがある
  4. 写真中で明るい部分と暗い部分の差が激しい
  5. 脚部先端部に枯葉が何枚か刺さっている

1,2に関しては先日投稿したように加速度センサ、ホール効果センサ、サーボ角度からロボットの姿勢をフィードバック制御する仕組みが必要だが、現時点では実装していないことが原因となります。

次に場所を変えてもう一度前進歩行パターンの動作テストを実施しました。今度は比較的雑草が密集しており、地面も柔らかい場所を選びました。この時のテストで気になったことは、何といっても

  1. 脚部先端部が地中に刺さってしまい、ロボット全体が沈み込んでしまった。その結果、脚部を振り出すときに雑草に邪魔されてその場でロボットがスタックしてしまった

ことです。元々脚部の第二リンク(真ん中のリンク)の長さが47[mm]で、水平状態から60°まで回転したときの高さの差は約40[mm]です。従ってもし脚部先端部が10[mm]地面に刺さると、残りの30[mm]しか脚部を持ち上げることしかできなくなります。さらに雑草は地面に近い部分が比較的固いので、サーボの出力が十分でないと、雑草に打ち勝つことができなくなります。サーボのパラメータを変えて最大出力を上げることも可能ですが、今度は消費電力が大きくなり、電池の消耗が激しくなり、十分な作業時間が確保できなくなります。

ということで、今後の対策として脚部第二リンクの長さを47[mm]から90[mm]へ変更することにしました。リンク長さが伸びたことで脚部をより高く持ち上げることが可能になるわけですが、その一方で以下のようなデメリットもあります。

  1. 脚部先端部がロボットの重心からより離れ、その結果地面からの反作用によるトルクが大きくなる。従って脚部第二リンクの角度を保持するためにサーボの出力が大きくなり、消費電力が上がってしまう。
  2. 1.と関連するが、ロボット全体の姿勢バランスが崩れる可能性もある
  3. ホール効果センサやサーボ間をつなぐ配線長さを調整する必要が出てくるかもしれない。

いずれにせよ、脚部第二リンクを伸ばした結果についてはこのブログで改めて触れることにします。

現在開発中のカニを模倣した6足草刈ロボットの写真をCAD図面と共に載せました。このロボットはそれぞれの脚部に3つのサーボモータを持ち、脚部先端部には磁気ホールセンサを利用した圧力計測機能を持っています。ロボット前面にははさみが搭載されていてカメラによって撮影された映像を基に自律的に草刈りをおこないます。コントローラはArduino Nano EveryとRaspberry Pi Zero WHによって構成され、前者には加速度センサ、磁気ホールセンサが接続され、Raspberry Pi に定期的にセンサ情報を送信します。Raspberry Piにはカメラが接続され、Arduinoからのセンサ信号を統合してサーボに対して目的角度を送信します。

ここ数年で比較的大型の草刈ロボットがいくつか開発、販売されていますが、6足の自律型ロボットで草刈りをおこなうというのは恐らく初めてと思われます。現在外部への販売に向けてフィールドテストの真っ最中です。テスト結果は随時ホームページ上にアップしていきますので、興味のある方はぜひご覧ください。

合同会社 Nakai Field Robotics
代表社員 鶴井政雄

カメラを除いてロボットに搭載されるセンサは以下の通りです。

  1. 3軸加速度センサ(ADXL345, Analog Devices):姿勢の変化、進行方向の変化、衝突の検知
  2. ホール効果センサ(A1324, Allegro MicroSystems):接地の検知、衝突の検知
  3. サーボモータ(KRS-3301,Kondo Kagaku,目標角度との差):姿勢の変化、衝突の検知

3.のサーボモータは純粋なセンサではありませんが、モーター+センサという構成なのでセンサとして取り扱うことにします。先日投稿したブログでは加速度センサを障害物回避に利用する手順を示しましたが、そこで示したように加速度だけではなく、速度、変位も後付けで計算できるので非常に有用です。まずは加速度センサを姿勢変化の把握のために利用する場合の具体的な方法を以下に示します。

  • 姿勢の変化は、現在の重力加速度ベクトル g_vecと水平時の重力加速度ベクトル g_initの内積をとってそれを1.0と比較することで判断できます。内積をとる前にはまず2つのベクトルを長さ1.0となるように正規化しておきます。水平に近い姿勢の場合は内積の値は1.0に近くなります。また、ロボットがひっくり返ると-1.0に近くなります。
  • 今回はロボットに設置されたはさみ及びアームの重量によって常に前掛りの荷重がかかっています。そこで姿勢を補正して水平時の重力加速度ベクトルになるべく近づけるようにします。ロボットの姿勢が前掛りになっている場合、6本の脚部先端部に埋め込まれたホール効果センサを利用した圧力計測では前脚に最も荷重がかかり、次いで中脚、最も荷重が少ないのは後脚となります。さらにはさみ及びアームの重心は右に寄っているので、右前脚に最も荷重がかかり、対角線上の左後脚は最も荷重が軽くなります。
  • 同時にサーボモータの目標角度からのずれは、前脚が最も大きく、次いで中脚、最も小さいのは後脚となります。さらにはさみ及びアームの重心は右に寄っているので、右前脚のずれが最も大きく、対角線上の左後脚は最もずれが小さくなります。
  • このように加速度センサ、ホール効果センサ、サーボモータそれぞれの出力に関連性が出てきます。姿勢変化の補正はこれら3種類のセンサからの出力を総合的に見て判断します。こうして多角的に見ることで姿勢変化が本当に発生しているかどうかをより精緻に見極めることが可能になります。
  • サーボモータの目標角度は、脚部先端部が予め設定された接地点に一致するように逆運動解析によって計算して求めます。
  • まずはロボットが歩行を開始していない状態で姿勢の補正をおこない、その後リアルタイムでの補正に移行することにします。