ベジェ曲線
2024年の夏ロボ自動機の走行軌道をベジェ曲線を使い滑らかな曲線走行をしました。ここではベジェ曲線について紹介していきます。
曲線走行を採用した理由
曲線走行は直線走行と比べて遅く、急な加速や減速が少なくなります。そのため、車輪の空転とオムニホイールの滑りとリスクが少なる利点があります。今回の自動走行ではオドメトリはエンコーダのみなので車輪の空転、オムニホイールが滑るとモータの回転数と実際に進んだ距離の誤差が大きくなる。誤差が大きくなるとロボットが安定した動きができなくなるので今回曲線走行を採用しました。
ベジェ曲線とは
始点と終点を結ぶ滑らかに結ぶ曲線である。曲線の形は始点と終点の間にある点(制御点)の位置によって曲線を決まる。ベジェ曲線は曲線を決定するパラメータが少ないという利点があります。パラメータが少ないと曲線が滑らかでシンプルな形となる。
ベジェ曲線の定義
制御点を以下のようにするとベジェ曲線は以下のように定義される
上記の定義式のtを0から1に変化するときに始点と終点を両点となるベジェ曲線を得られる。
pythonを用いたベジェ曲線の描画
pythonのTKinterを用いてGUI操作で簡単にベジェ曲線書けるプログラムを作ったので興味がある方は以下のgitのURLからプログラムをダウンロードして動かしてみてください。
https://github.com/karakuri-robo/karakuri_hp/blob/main/bezier_curve/bezier_curve.py
↑プログラムのURL
操作方法
1.メインウィンドウで制御点をクリックして決める
2.制御点を決めたら「操作」のdrawボタンをクリックする。すると自動でベジェ曲線を描画してくれる。
3.もう一度描画する場合はclearボタンを押してもう一度制御点を決める。
↑動いている様子
まとめ
ベジェ曲線を描くロボットの移動は部内で曲線な綺麗な動きができたら最高だよねみたいな話がきっかけでした。そして実際ロボットを動かしてみると思った以上にきれいな動きでびっくりしました。ロボットの動きは以下のURLから見てみてくだい。