ロボット掃除機を買いました
だいぶ市民権を得ているようで,今更感はありますが,
友人宅で見かけたことをきっかけに,ロボット掃除機を購入するに至りました.
機種選定
たまたま発見した,ロボット掃除機の代名詞・ルンバのエントリー機種の1万円OFFのキャンペーン.
news.kakaku.com
楽天市場でポイントが付くことも考えれば3万円台前半まで落ちてくるので,
有りかなと思いながら,さらに物色.
制御屋さんとしてはSLAMによるマッピング機能を持つ機種に興味がありますが,
SLAM機種はどんなに安いメーカーでも5万円は超えてきます.
壁に当たるたびに向きを変えて進むランダム走行の機種であれば,1万円台からもありますが,
それはロボットというには少し寂しいかなと思い,
予算3万円台ぐらいで,ランダム走行+αぐらいの機種はないかと思い探していました.
すると,Ankerから発売されている機種が,ジャイロセンサと加速度センサを使って,
慣性航法でマッピングをしているらしいということが分かりました.
ロボット掃除機、安い物はランダム走行、高級品はSLAMが定番だけど、
— めっくろぐ (@mech_log) 2021年8月10日
Ankerには、慣性センサだけ使って地図生成・経路追従するというミドルレンジの製品があるらしい。これは面白そう
Anker、Eufyブランドから新型ロボット掃除機 「RoboVac G30」 シリーズ。https://t.co/7IKMfqmqEc
Anker eufy(ユーフィ)シリーズは,
L70 Hybrid がハイエンドモデル,レーザSLAMを使うタイプで,5万円台.
Hybridは,水拭き機能も一体化しているという意味.
エントリーモデルは,定番・ランダム走行するタイプ,
そしてそれらの間のモデルとして,
慣性航法(スマート・ダイナミック・ナビゲーションという機能名)を使うタイプが用意されています.
加速度・ジャイロセンサを追加することで,
直線状に折返しながら部屋を掃除する制御が可能になり,
ムラなく効率よく掃除できる,というのがウリにされています.
公式なPRではありませんが,当然SLAMに比べてセンサや演算システムが軽くなるので,
価格は安く,そこそこの性能が出せる,というのがポイントだと思います.
当該機能が入るG10 Hybridは,慣性航法モデルの初期型で,
楽天市場ではちょうど20%OFFセール中でした.
そして今年発売されたG30シリーズは,慣性航法機能が強化されており,
新たに追加されたポイントとして,簡易的なマップ作成ができるようになり,
それを使ってどこを掃除したかをアプリで示したり,
次回以降の掃除でパスプランニングに活用したりしているようです.
価格帯もちょうどよく,メカニズムにも非常に興味がわいたので,
このシリーズを購入しました.
ちなみに,名前に「edge」が入るのは,
専用磁気テープを使って進入禁止エリアの設定ができる機能を持つことを表しているそうです.
(edgeが付かないノーマルタイプは,進入制限ができない)
実機
届いた pic.twitter.com/OO3V33cjes
— めっくろぐ (@mech_log) 2021年8月12日
作られたマップ。
— めっくろぐ (@mech_log) 2021年8月12日
SLAMモデルを触ったことがないけど、多分それよりもグリッドが粗いはず。でも慣性航法(+オドメトリ?)だけでここまで出来るのは凄いと思う。 pic.twitter.com/W8yPr1PtT0
しばらく動かして挙動を見ていましたが
- 3軸センサのおかげで,直進走行時は(曲がっていかずに)真っすぐ走る
- マップのグリッドサイズは,本体1個分ぐらい(30 cm程度)
- 生成したマップは,各回のお掃除毎に使い捨て
(ムラなく走行できているか,終了判定の条件に使用?
基地に効率よく戻るためにも使用.
スキャンマッチングできないので,次回のお掃除には利用しない?)
ようにみえました(推測です).
SLAM使用モデルの性能を体験したことはないので比較できませんが,
友人宅にあったランダム走行モデルと比較すると,かなり賢い走行に見えます.
「SLAM入門」サンプルコードを試したメモ
ビルド時にちょっと詰まったので,メモ.
現象・対策としては,以下の情報と同じでした.
littleSLAM構築メモ
— クーリッシュ (@coolish_01) 2019年5月22日
Cmakeハマりポイント
EIGEN3_INCLUDE_DIRにeigen3のpathを追加
boost_INCLUDE_DIRにboostのpathを追加
ここで2日がかりハマった・・
SLAM入門 公式サンプルやってみた!
— でべ (@devemin) 2020年8月18日
CMake でeigen3ヘッダパス通してもエラー出ても気にせず「Generate」ボタン押せばファイル出来た(2時間ハマった)
実行すると廊下やホールのログ再生できる。おもしろ!
実際に動くコードと共にある教科書って最高
公式 LittleSLAMhttps://t.co/mC2bgkAWOX pic.twitter.com/jY3g627Gog
CMakeList.txt を書き換えて四苦八苦した結果,これなら動いたという感じ.
環境は,Windows,CLionを使っています.
project(LittleSLAM) cmake_minimum_required(VERSION 2.8) # SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/boost_1_69_0") SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/boost_1_69_0/libs") FIND_PACKAGE(Boost) IF (Boost_FOUND) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) ADD_DEFINITIONS( "-DHAS_BOOST" ) ENDIF() include_directories(C:/eigen3) ~~~(以下略)
制御のための簡単な二次のローパスフィルタ
二次のローパスフィルタ(LPF)の作り方です*1
カットオフ周波数を [rad/s] としたとき,次式で表されます.
元々は,二次遅れ系の伝達関数の標準形から来ています.
下式で とすると,上式と一致します.
はどこから来ているのか
で,を代入して,周波数領域で考えます.
さらにとして,固有振動数で規格化すると
ここで, のとき, のとき, のときで大きく特性を場合分けできます*2.
このうち, のときのゲインに着目すると,
となるので,この分母が最小になるとき, つまり,
が最小になるとき ,共振ピークが求まります.
そこでで微分すると
この根は
なので,の正の範囲での場合分けで,共振の有無が分かります.
0<<のとき
根がで共振になります.
<のとき
実数根がのみなので,となり
共振は生じません.
一方で,二次遅れ系の伝達関数の特徴を考えると,
が小さいほど,位相遅れが小さいので,
結局,が,
カットオフ周波数において共振ピークを持たず,
かつ,位相遅れが最も小さい二次遅れ系の伝達関数になり,
扱いやすいローパスフィルタだと考えることができます.
【参考1】
実装も含めた,一次のフィルタについては以下.
【参考2】
N次のButterworth Filterの減衰の傾きは,N×20 dB/decadeになります