自作ロボットカーを自動走行する

使い方

1.GMKの電源を入れてMQTTを立ち上げる
2.ロボットカーに電池をつなぎ起動する(LEDが赤全灯から青1個点灯に変わる)
3.DELL2で使用するROSのノードをまとめて起動する
  ros2 launch My_Navi_basic my_navigation_launch.py                   # デフォルトのmy_mapを使う場合
  ros2 launch My_Navi_basic my_navigation_launch.py map_name:=my_map2 # 地図を指定する場合
4.DELL2にリモートでログインする
5./scanと/odomのパブリッシュを開始する。
  mosquitto_pub -h 192.168.0.110 -t "Roller485/cmd_sw" -m '{"pos": "on"}'     # 起動
  mosquitto_pub -h 192.168.0.110 -t "Roller485/cmd_sw" -m '{"pos": "off"}'    # 停止

# ジョイステックを使う場合

6.コントローラをBluetoothでMiNI2に接続する
7.MiNI2からMy_Mavi.pyを起動する
8.コントローラの三角ボタンを押して、/scanと/odomのパブリッシュを開始する

nav2_params.yamlの変更一覧

項目名所属ノードNav2デフォルト値 (推定)現在設定している値設定変更の理由
inflation_radiusglobal_costmap
local_costmap
0.55 m0.35 m (Global)
0.45 m (Local)
以前(0.75m)は大きすぎて狭い場所を通れなかったため、MPPIの回避能力を信頼して適正値に縮小した。
QoS (reliability)amcl, costmapbest_effortreliableSLAM安定化のためLiDARノードを RELIABLE に変更したことに伴い、Nav2側の購読設定も合わせて通信不整合を防ぐため。
controller_frequencycontroller_server20.0 Hz10.0 Hz【CPU負荷対策】 通信遅延や計算負荷を考慮し、スムーズな制御を行うためのバランス調整。
temperaturecontroller_server
(MPPI)
0.30.2スタート時の「ぎくしゃく感」を抑えるため、ランダム性をわずかに緩和して挙動を安定化させた。
batch_sizecontroller_server
(MPPI)
600 (CPU版)1000経路探索の候補数を増やし、より最適なパスを見つけやすくすることで、複雑な回避動作の精度を向上させた。
time_stepscontroller_server
(MPPI)
5625【CPU負荷対策】 予測ホライズン(先読み時間)を短くして計算量を減らし、近傍の障害物回避にリソースを集中させた。
max_rotational_velbehavior_server1.8 rad/s1.5 rad/s以前(0.75)は制限しすぎてMPPIの解が見つかりにくかったため、ある程度の機動性を確保するために緩和した。
max_vel_theta
wz_max
controller_server1.8 rad/s1.5 rad/sコントローラー側でも旋回速度の制限を緩和し、スムーズな方向転換を可能にした。
max_speed_xy
vx_max
controller_server0.26 ~ 0.5 m/s0.20 m/sマップ追従の安定性を確保しつつ、以前(0.15)より少し速度を上げ、慣性を維持して走りやすくした。
publish_frequencyglobal_costmap
local_costmap
1.0 Hz (Global)
5.0 Hz (Local)
0.5 Hz (Global)
2.0 Hz (Local)
【CPU負荷対策・最重要】 可視化用の配信頻度を下げ、計算リソースを制御処理に回すため。
update_frequencyglobal_costmap
local_costmap
1.0 Hz (Global)
5.0 Hz (Local)
0.5 Hz (Global)
2.0 Hz (Local)
【CPU負荷対策・最重要】 地図更新処理を軽量化し、TF遅延によるデータ欠落(WARN)を防ぐための決定的な調整。
xy_goal_tolerancecontroller_server0.25 m0.30 mゴール直前での微細な位置合わせによる「ふらつき」を減らし、到着判定をスムーズにするため緩和した。
yaw_goal_tolerancecontroller_server0.25 rad0.40 radゴール時の角度合わせの厳密さを緩和し、スムーズに停止動作へ移行させるため。