Example 2022.5.26

Forever Level VIVIWARE Cell Motionを用いた「いつも水平台」

加速度センサを内蔵したVIVIWARE Cell Motionを使って、ロボットが傾いても、荷物を載せる台がいつも水平になる仕組みを紹介 加速度センサを内蔵したVIVIWARE Cell Motionを使って、ロボットが傾いても、荷物を載せる台がいつも水平になる仕組みを紹介

使っているVIVIWARE Cell VIVIWARE Cell

  • Core
  • Motion
  • Servo Driver

その他使っているもの Other Parts

  • 付属の大サーボLarge Servo (Included in the set)
  • 付属の電池ボックスBattery Box (Included in the set)
  • 単3電池(4本)AA Batteries (4 pcs)
  • 付属の大サーボLarge Servo (Included in the set)
  • 付属の電池ボックスBattery Box (Included in the set)
  • 単3電池(4本)AA Batteries (4 pcs)

 

「いつも水平台」ってどんなもの?

ロボットでモノを運ぶ時に、載せるモノを水平に維持したまま坂道を登りたい、なんてことはないですか?
私はありました。

ロボットが坂道を登るときに水平を維持したいと思った時が!
(詳しくは配膳ロボコンのblogをどうぞ! https://blog.vivita.io/entry/2022/05/03/114529

これがその時に使った方法です。

「いつも水平台」の仕組み

外観(写真の白い円形の所が水平台)

このシステムを説明します。

これ全体は車輪移動のロボットで、その中央に回転する台がついています。
その台はRCサーボで本体に対して回転する構造になっています。

「重力方向(=下)」を識別するためにMotionセンサーの加速度情報を使っています。

VIVIWARE Cell Motion(以降、Motion Cell)からどのような信号が出てくるかはこちらを参照ください。
https://cell.viviware.com/support/usage/hardware/motion/

マニュアルの各軸方向の定義と、実際の写真に取り付けたセンサの向きを合わせてみると、このセンサのY軸の加速度情報を用いて、重力の方向を判定できることがわかります。

Y軸の加速度が0の時には、ちょうど真下の方向が重力、+50の時にはロボットが90度傾いた状態、ということです。

また、真下の方向が重力の時に、サーボの値が50になるような信号に変換します。

その後、時間平均を取ります。

これはセンサからでるノイズ等の影響を減らすためにおこないます。

なお、今回の説明では車輪に関する配線は外し、この台に関連する配線のみを繋いでいます。

プログラム

ソフトウェア概要

VIVIWARE Cell Appでプログラムを作成します。

まずはAccelerometerモジュール加速度センサー)とServo1モジュールを右のパレットから引き出します。

その次に、重力の方向からサーボの指示値への変換のためにScaleモジュールを使います。

ちょうど-75から75までの値を100から0にするようなパラメータとなりました。
これは利用するサーボなどによって値が変わります。

例えば、Motion Cellの取付位置が逆になると出力は0から100になると思いますが、この辺は実機に合わせて変更して下さい。

次にMeanモジュールです。
これにより平均を取っています。

私は0.5秒の間の平均値を出していますが、ロボットの姿勢変更の速さに合わせて変更が可能です。

値を小さくしすぎると、普通に走行しているときにガタガタと水平台が揺れてしまうので、その影響を減らすためには値を大きくすると良いです。

最後にこの値をサーボに送ります。

実験

 

実験してみると、このように水平が維持されることがわかります。

おわりに

VIVIWARE Cell Motionを使う事で、このように水平を維持する台を実現できました。

この方法を応用すると、今回は前後だけでしたが、左右の動きについても追従して水平を維持するようなことも可能です。
 

 
(Created by Hideaki Nii)

「いつも水平台」ってどんなもの?

ロボットでモノを運ぶ時に、載せるモノを水平に維持したまま坂道を登りたい、なんてことはないですか?
私はありました。

ロボットが坂道を登るときに水平を維持したいと思った時が!
(詳しくは配膳ロボコンのblogをどうぞ! https://blog.vivita.io/entry/2022/05/03/114529

これがその時に使った方法です。

「いつも水平台」の仕組み

外観(写真の白い円形の所が水平台)

このシステムを説明します。

これ全体は車輪移動のロボットで、その中央に回転する台がついています。
その台はRCサーボで本体に対して回転する構造になっています。

「重力方向(=下)」を識別するためにMotionセンサーの加速度情報を使っています。

VIVIWARE Cell Motion(以降、Motion Cell)からどのような信号が出てくるかはこちらを参照ください。
https://cell.viviware.com/support/usage/hardware/motion/

マニュアルの各軸方向の定義と、実際の写真に取り付けたセンサの向きを合わせてみると、このセンサのY軸の加速度情報を用いて、重力の方向を判定できることがわかります。

Y軸の加速度が0の時には、ちょうど真下の方向が重力、+50の時にはロボットが90度傾いた状態、ということです。

また、真下の方向が重力の時に、サーボの値が50になるような信号に変換します。

その後、時間平均を取ります。

これはセンサからでるノイズ等の影響を減らすためにおこないます。

なお、今回の説明では車輪に関する配線は外し、この台に関連する配線のみを繋いでいます。

プログラム

ソフトウェア概要

VIVIWARE Cell Appでプログラムを作成します。

まずはAccelerometerモジュール加速度センサー)とServo1モジュールを右のパレットから引き出します。

その次に、重力の方向からサーボの指示値への変換のためにScaleモジュールを使います。

ちょうど-75から75までの値を100から0にするようなパラメータとなりました。
これは利用するサーボなどによって値が変わります。

例えば、Motion Cellの取付位置が逆になると出力は0から100になると思いますが、この辺は実機に合わせて変更して下さい。

次にMeanモジュールです。
これにより平均を取っています。

私は0.5秒の間の平均値を出していますが、ロボットの姿勢変更の速さに合わせて変更が可能です。

値を小さくしすぎると、普通に走行しているときにガタガタと水平台が揺れてしまうので、その影響を減らすためには値を大きくすると良いです。

最後にこの値をサーボに送ります。

実験

実験してみると、このように水平が維持されることがわかります。

おわりに

VIVIWARE Cell Motionを使う事で、このように水平を維持する台を実現できました。

この方法を応用すると、今回は前後だけでしたが、左右の動きについても追従して水平を維持するようなことも可能です。
 

 
(Created by Hideaki Nii)

Share

share
close

Share