Skip to content

Latest commit

 

History

History
353 lines (224 loc) · 14 KB

File metadata and controls

353 lines (224 loc) · 14 KB

PybulletRobotics

Click here for English README

本リポジトリでは、ロボティクスにおけるpybulletの基本的な使用方法や、ロボティクスに関連する様々なアルゴリズムをpybulletを用いて実装する方法を紹介します。

目次

インストール方法

pybulletでロボティクスのシミュレーションを実施する際に必要なライブラリをインストールする手順は以下になります。

なお、動作確認した際の各ライブラリのバージョンは、各コマンドの隣にコメントとして記載しています。

動作確認環境:Ubuntu (WSLでも可)

sudo apt update
sudo apt install python3-pip
pip3 install pybullet # version 3.2.6
pip3 install numpy # version 1.24.3
pip3 install matplotlib # version 3.5.1
pip3 install opencv-contrib-python # version 4.5.4
pip install scipy # version 1.11.3
pip install ffmpeg-python # version 0.2.0
sudo apt install ffmpeg

全般

Pybulletの基本的な使用方法

以下に示すpybulletを用いたロボティクスの基本的な使用方法を紹介します。

  • 環境の作成
  • urdfファイルからのロボットの読み込み
  • シミュレーションの実行

詳細は「pybullet_basic.ipynb」を参照。

ARマーカーの位置·姿勢の検出

カメラから取得した画像から、ARマーカーの位置と姿勢を検出する方法を紹介します。


また、ARマーカを貼り付けたボックスを作成する方法も紹介します(blenderを使用)。

詳細は「ar_marker_detect.ipynb」を参照。

移動ロボット

基本

移動ロボットの基本的な制御

2輪移動ロボットを移動させるシンプルなコードを紹介します。

詳細は「mobile_robot_basic.ipynb」を参照。

移動ロボットにおけるセンサーの利用

2輪移動ロボットにおける以下のセンサーの利用方法を紹介します。

  • 超音波センサー
  • カメラ
  • LiDAR
  • 落下防止センサー
  • バンパー


超音波センサ


カメラ


Lidar


落下防止センサー


バンパー

詳細は「mobile_robot_sensor.ipynb」を参照。

移動ロボットによるライントレース

2輪の輪動ロボットのボトムカメラを使用してライントレースを行う方法を紹介します。

詳細は「mobile_robot_line_trace.ipynb」を参照。

wheel odometryによる位置推定

2輪移動ロボットにおけるwheel odometryによる位置推定を行う方法を紹介します。

詳細は「mobile_robot_wheel_odometry.ipynb」を参照。

particle filterによる位置推定

2輪移動ロボットにおけるparticle filterによる位置推定を行う方法を紹介します。

詳細は、「mobile_robot_particle_filter.ipynb」を参照。

拡張カルマンフィルタ(EKF)による位置推定

2輪移動ロボットにおける拡張カルマンフィルタによる位置推定を行う方法を紹介します。

(赤点が動作モデルのみによる推定位置、緑がEKFによる推定位置)

詳細は「mobile_robot_extended_kalman_filter.ipynb」を参照。

A*によるグローバルパスプランニング

2輪移動ロボットにおけるA*によるグローバルパスプランニングを行う方法を紹介します。

詳細は、「mobile_robot_global_path_planning_a_star.ipynb」を参照。

Dynamic Window Approach(DWA)によるローカルパスプランニング

2輪移動ロボットにおけるDynamic Window Approach(DWA)によるローカルパスプランニングを行う方法を紹介します。

詳細は「mobile_robot_local_path_planning_dwa.ipynb」を参照。

Q学習(強化学習)によるライントレース

2輪移動ロボットにおけるQ学習によるライントレースを行う方法を紹介します。

詳細は「mobile_robot_q_learning.ipynb」を参照。

そのた追加予定のコンテンツ

  • SLAM
  • 強化学習(Q学習)

ロボットアーム

基本

ロボットアームの基本的な制御

2軸ロボットアームを制御(位置制御、速度制御、トルク制御)するシンプルなコードを紹介します。

位置制御


速度制御


トルク制御

詳細は「robot_arm_basic.ipynb」を参照。

ロボットアームにおけるセンサーの利用

2軸ロボットアームにおける以下のセンサーの利用方法を紹介します。

  • 手先のカメラ
  • 手先の力センサー


手先のカメラ


手先の力センサー

詳細は「robot_arm_sensor.ipynb」を参照。

衝突判定

ロボットアームと物体の衝突判定を行う方法を紹介します。

詳細は「robot_arm_collision_check.ipynb」を参照。

運動学

三角関数による順運動学

三角関数を用いたロボットアームの順運動学を紹介します。

詳細は「robot_arm_trigonometric_forward_kinematics.ipynb」を参照。

同次変換行列を用いた順運動学

同次変換行列を用いたロボットアームの順運動学を紹介します。

詳細は「robot_arm_homogeneous_matrix_forward_kinematics.ipynb」を参照。

解析的解法による逆運動学

解析的解法を用いたロボットアームの逆運動学を紹介します。

詳細は「robot_arm_analytical_inverse_kinematics.ipynb」を参照。

数値的解法によるヤコビ行列を用いた逆運動学

数値的解法を用いたロボットアームの逆運動学を紹介します。

詳細は「robot_arm_jacobian_inverse_kinematics.ipynb」を参照。

eye to hand による物体位置の推定

eye to hand による物体位置の推定を行う方法を紹介します。

詳細は「robot_arm_eye_to_hand.ipynb」を参照。

eye in hand による物体位置の推定

eye in hand による物体位置の推定を行う方法を紹介します。

詳細は「robot_arm_eye_in_hand.ipynb」を参照。

image based visual servo

画像ベースのビジュアルサーボを行う方法を紹介します。

詳細は「robot_arm_image_based_visual_servo.ipynb」を参照。

その他、追加予定のコンテンツ

  • PID制御
  • コンフィギュレーション空間を用いた動作計画
  • 力制御
  • 位置と力のハイブリッド制御
  • コンプライアンス制御

参考サイトなど

  • pybullet_quickstart_guide:Pybulletで使用可能な関数がまとめられたスタートガイドです(公式)
  • PythonRobotics:Pythonで実装されたロボティクスのアルゴリズムがまとめられたリポジトリです。様々なアルゴリズムが掲載されており、ロボティクスの勉強に最適な神リポジトリです。

筆者作成