Note
本リポジトリは、コンピューター・サイエンス&テクノロジ専門誌Interface2026年6月号に掲載の記事「自己位置推定や経路計画,経路追従制御,車両制御の全体像をつかむ GNSSを利用した自律移動ロボット・プログラミング」のサンプルコードです。
本リポジトリは ROS 2 上で動作する GNSS ベースの自律移動ロボット のサンプルコードです。
- 自己位置推定: 2 基の GNSS 受信機(
/gnss・/gnss1)から位置と方位を算出し、緯度経度を平面直交座標に変換します。 - 経路追従制御: Pure Pursuit アルゴリズムで CSV ファイルに記述された目標経路を追従し、
cmd_velに速度コマンドを出力します。 - シミュレーション: 差動二輪モデルの簡易シミュレータにより、実機なしでアルゴリズムを検証できます。
- 実データ再生: 実環境で収録した rosbag(fix/float 測位、S字走行など)でナビゲーションを評価できます。
- 可視化: Rviz2 で目標経路・自己位置・TF をリアルタイムに表示できます。
| パッケージ | 説明 |
|---|---|
simple_gnss_navigation |
GNSSベースのナビゲーションノード。2基のGNSS受信機から自己位置・方位を推定し、Pure Pursuit で経路追従制御を行います。Rviz2 での可視化にも対応しています。 |
diff_drive_sim |
差動二輪モデルの簡易シミュレータ。cmd_vel を受け取り、/gnss・/gnss1・/odom・/imu トピックを生成します。実機がなくてもアルゴリズムの検証が可能です。 |
- Ubuntu 24.04
- ROS 2 Jazzy
ROS 2 Jazzy がインストールされた環境で以下を実行してください。
cd ~/colcon_ws/src
git clone https://github.com/Panasonic-Advanced-Technology/gnss_tutorial.git
cd ~/colcon_ws
colcon build --symlink-install
source install/setup.bash簡易シミュレータとナビゲーションノードを同時に起動し、Rviz2 上で経路追従の動作を確認できます。
ros2 launch simple_gnss_navigation simulation.launch.xml経路やパラメータを変更する場合は引数で指定します。
# S字経路で実行
ros2 launch simple_gnss_navigation simulation.launch.xml path_name:=s_curve
# Lookahead distance を変更
ros2 launch simple_gnss_navigation simulation.launch.xml lookahead_dist:=5.0実環境で取得した GNSS データを再生してナビゲーションを実行します。
ros2 launch simple_gnss_navigation rosbag.launch.xml別の経路データを再生する場合:
ros2 launch simple_gnss_navigation rosbag.launch.xml path_name:=fix1| データ名 | 説明 |
|---|---|
float1(デフォルト) |
GNSS の測位精度が一部低下するデータ 1 |
float2 |
GNSS の測位精度が一部低下するデータ 2 |
fix1 |
GNSS の測位精度が良好なデータ 1 |
fix2 |
GNSS の測位精度が良好なデータ 2 |
s_curve |
GNSS の測位精度が良好な S 字走行のデータ |
| パラメータ | 既定値 | 効果 |
|---|---|---|
lookahead_dist |
2.0 m | 小さい→蛇行しやすい、大きい→カーブで膨らむ |
max_speed |
0.5 m/s | 直進速度。速度を上げると経路追従が難しくなる |
goal_tolerance |
0.5 m | ゴール判定距離。厳しすぎると停止しない、緩すぎると手前で止まる |