Webots講座の3回目です.今回は,Webotsの自動運転シミュレータを使ってBMW X5をPython言語により直進させるところまでを学びます.BMWのオーナーになった気分でやっていきましょう!
レファレンス
ユーザインタフェース
- まず,上図に示すWebotsのユーザインタフェース(GUI)を説明します.最上部のメニューと次の4つのウインドウで構成されています.これからの説明で使いますので覚えておきましょう.
- シーンツリー:現在のワールドを構成しているものを階層状に表示
- 3Dウインドウ:3次元シミュレーションの表示と操作
- テキストエディタ:ソースコードの編集とビルド.
- コンソール:Webotsのログ表示.ビルドの出力とコントローラプログラムの出力.
プロジェクトの作成
- まず,次のWebots作業用ディレクトリを作成する.
- C:\ユーザー\ユーザ名\webots
- Webotsを起動する.
- Webots講座2で実施した「新規プロジェクトの作成」の方法でrobot_carプロジェクトを作成する.ディレクトリの選択で\webotsはあるがその下の\robot_carはないので,キーボードから次のように入力する.ユーザー,ユーザ名は自分の環境のものに変える.
- ディレクトリの選択:C:\ユーザー\ユーザ名\webots\robot_car
- World settings: ワールド名empty.wbtをrobot_car.wbtに変更して,他は変えずに「次へ」をクリックする.
ワールドの作成
- 既存のワールドをインポートする機能はないようなので,既存のワールドcity.wbtを開いてから上で作成したrobot_car.wbtに上書き保存する方法を使う.
- メニューからcity.wbtワールドを開く
- [ファイル]→[Open Sample World…]→[vehicles]→[city.wbt]
- ワールドを開くとロボットカーが走り出すので,[Pause]ボタンをクリックしてから,[Reset]ボタンをクリックする.シミュレーションがリセットされて,ロボットカーがスタート地点に戻る.
- ワールドをrobot_car.wbtという名前で保存する.
- [ファイル]→[ワールドファイルを名前を付けて保存する…]
- C:\ユーザー\ユーザ名\webots\robot_car\world\robot_car.wbt
- [ファイル]→[ワールドファイルを名前を付けて保存する…]
コントローラの作成
- Webots講座2で実施した新規ロボットのコントローラ作成と同じ要領でコントローラを作成する.
- メニューの [ウィザード]→[新規ロボットのコントローラ…]から以下を選択する.
- 言語選択:Python
- コントローラの選択:robot_car
- 3Dウインドウの右横にテキストエディタが開き,robot_car.pyが表示される.雛形コードの中身を全部消して,次のサンプルコードと置き換え保存する.
import math # mathモジュールのインポート from vehicle import Driver # vehcleモジュールからDriverクラスのインポート driver = Driver() # Driverクラスのインスタンスを生成 steer_angle = 0 # ステアリング角に0[°]を代入 speed = 20 # 速度に20[km/h]を代入 driver.setSteeringAngle(steer_angle) # ステアリング角度の設定 driver.setCruisingSpeed(speed) # 巡行速度の設定 while driver.step() != -1: # driver.step()はシミュレーションの1ステップを進めるAPI #angle = 0.3 * math.cos(driver.getTime()) #driver.setSteeringAngle(angle) print("time=%f" %driver.getTime()) # シミュレーション時間[s]の表示
- 上のソースコードを説明します.説明をコメントとして記入しているので,ほとんど説明は不要かと思います.これは直進するだけのプログラムです.11行目のdriver.step()でシミュレーションを1ステップ進めます.進める時間はワールドでデフォルト値(シーンツリーのWorldInfo→basicTimeStep)を使います.この例では10[ms]となっています.12,13行目でコメントアウトしている部分は,ステアリンク角度をcos関数で変化させています.driver.getTime()はシミュレーションがスタートしてからの経過時間[s]です.
コントローラの設定
- シーンツリーからBmwX5″vehicle”→controller”autonomouos_vehecle”をクリックする.
- Select controllerから上で作成した”robot_car”を選択して保存する.
実 行
- Pythonの場合はビルドする必要がないので,[Reset]ボタンをクリックしてシミュレーションをリセットしてから,[Run]ボタンをクリックして実行します.なお,[Run]ボタンはクリックされると[Pause]ボタンに変わります.シミュレーションを一時停止したいときは[Pause]ボタンを教えてください.
- ロボットが直進して,ターミナルに経過時間が表示されれば成功.成功するとロボットカーが直進し,コンソールウインドウにシミュレーションの経過時間が表示されます.動かない場合は,[Reset]ボタンをクリックしてから,[Run]ボタンを再度クリックしてみてください.
ハンズオン
- リファレンスを読んで,Webotsの自動運転用のシミュレーションソフトウェアの概要やAPIを理解しよう.
- サンプルコード12,13行目のコメントを外して,ロボットカーを走らせてみよう.
- サンプルコードのAPIだけを使って,ロボットカーをできるだけ遠くまで走らせてみよう.
終わり
コメント