Autowareノート番号5-- GNSSベースポジショニング

1.はじめに

前のノートで第2番は、私たちが直接ポジショニングの実装方法をndt_matching使用しますが、オープンrvizを必要とし、2Dで初期位置を指定する姿勢推定を。GNSSを追加した後、あなたは最初の位置を見つけるndt_matching助けることができる、とndt_matchingマッチが失敗した場合、運動中のGNSSは、再配置を助けることができます。

ここでは、ドライ

 

2. GNSSは、コンフィギュレーションデータを読み込み、

私たちは、ブランドのGNSSデバイス、シリアルポート経由で読み込まれた情報を使用し、最初のポートは、次の図にAutowareで読み取るように設定されています。

 

設定が成功した後の最初の設定のシリアルGNSSのGNSS構成、当社のシリアルデバイス名GNSSデバイスは/ dev / ttyS0は、115200のボーレートの、保存して、シリアルGNSSオプションをクリックし、[OK]をクリックし、エラーメッセージが表示されます。

ERROR:[nmea_navsat_driver /タイプのノードを起動することはできませんnmea_topic_serial_reader]:nmea_navsat_driver 
ROSパス[ 0 ] =は/ opt / ROS /運動/共有/ ROS 
ROSパスを[ 1 ] = /ホーム/ A / autoware / ROS / SRC 
ROSパス[ 2 ] = /ホーム/ A / catkin_ws / SRC 
ROSパス[ 3 ] =は/ opt / ROS /運動/ 共有
ERROR:タイプのノードを起動することはできません[nmea_navsat_driver / nmea_topic_driver]:nmea_navsat_driver 
ROSパス[ 0 ] =は/ opt / ROS /運動/共有/ ROS 
ROSパス[ 1 ] = /ホーム/ A / autoware / ROS / SRC 
ROSパス[ 2] = /ホーム/ A / catkin_ws / SRC 
ROSパス[ 3 ] =は/ opt / ROS /運動/共有

Autowareこの場合、シリアルポートドライバがインストールされていないため、autoware / ROS / SRC /センシング/ドライバ/ GNSS /パッケージ/ nmea_navsat /スクリプト/ README.mdファイルは、ドライバをダウンロードする必要がありますよると、実行しています

$ sudoの apt-getをインストール ROS-運動-NMEA-navsatドライバを

更新されていない場合であってもよく、およびワークスペースautowareにソース、ダウンロードの送信元アドレスからダウンロードマウントします。https:ダウンロードした適切な運動のブランチに切り替えた後、//github.com/ros-drivers/nmea_navsat_driver.gitすなわち、これは、実行することができます。

そして、チェックシリアルGNSSオプションでは、出力がある、とGNSSデータが正常にデバイスを読んでいることを、文章中のコンテンツがある場合は、トピック/ nmea_sentenceを見て。/ Nmea_sentenceデータ内容:

--- 
ヘッダ:
  SEQ223 
  スタンプ:
    秒:1568168594 
    NSECS:571928024 
  frame_id:" / GPS " 
文:" $×××××、0,7847.600,360.000,1.663,0.720,0.0000000,0.0000000,0.00,0.000、 0.000,0.000,0.000,0,0,0C * 0C 

標準$ NMEA *****主流の規格の代表$ GPGGA、$ GPGSA、$ GPGSV、$ GPRMC、$ GPVTG、$ GPGLL。我々が使用するセンサーは標準ではありませんので、NMEAは、独自のデータ分析を記述する必要があります。

異なるGNSS機器、文の標準コンテンツは異なります。

:あなたはNMEAをお知りになりたい場合は、ブログを参照してくださいhttps://blog.csdn.net/jickjiang/article/details/79086202

 

3.データ解析

nmea2tfposeパッケージのAutowareデータ解析プログラム、機器は、私たちが使用する標準プロトコルではありませんが、私たちの契約と$ GPGGAは非常に近いので、我々は$ GPGGAに基づいて使用しているため、改善のnmea2tfpose_core.cppを作りました。

私たちの考え方は変更することです:

(1)まず、話す原点として、基地局の緯度と経度。

(2)$ GPGGA態様を、緯度と経度を原点平面座標系として基地局に座標マップ。

(3)TFにより変換し、ベースの原点は、変換マップ座標に座標系。

私たちは、ソースコードを変更しませんが、nmea2tfposeアウトパック修正、コンパイル、および別途公開します。

トピック/ gnss_poseの最終リリースのためnmea2tfposeパッケージ。一貫性のある場合はその成功した、基本的には同じで放出された場合/ gnss_poseおよび/ ndt_poseデータを参照してください。ここで、私は参照(nmea2tfpose_core.cpp)のための部分的なソースコードを発表しました:

// 基地局の緯度と経度を設定 
geo_.set_originを(longitude_、latitude_)。
    もし((nmea.at 0)== " $××××× "// 見出しピッチロール
    {
       // 直接读取GNSS中の的ロール、ピッチ、ヨー 
      position_time_ = STOD(nmea.at(2 ))。
      roll_ = STOD(nmea.at(5))* M_PI / 180 
      pitch_ = - 1 *のSTOD(nmea.at(4))* M_PI / 180 
      yaw_ = -stod(nmea.at(3))* M_PI / 180+ M_PI * 2 
      
      //ROS_INFO( "ロール:%F、ピッチ:%F、ヨー:%F"、roll_、pitch_、yaw_が); 
      
      // 緯度と経度からGPGGA算出マップローカル座標系へ
      ダブル LAT = STOD(nmea.at(6。));
       ダブル LON = STOD(nmea.at(7 ));
       ダブル H = STOD(nmea.at(8 )); 
      geo_.set_llh_nmea_degrees(LAT、LON、H); 
    }
// 変換元系の座標ベース・マップへの座標系
TFを:: tf_poseポーズ; 
TF :: poseMsgToTF(pose.pose、tf_pose); 
TF ::クォータニオンQ; 
q.setRPY(003.2277); // ベース座標系と原点マップは、角座標 
TFを::変換(Q、TF ::のVector3( - tf_trans 28.1110.79は0));   // 基本マップ座標系の原点は、原点差座標 
tf_pose = tf_transを.inverse()* tf_pose; 
TF :: poseTFToMsg(tf_pose、pose.pose)。

 

4.結果

上記のコードの完了がAutowareは4ノートコンテンツに応じて設定することができた後で、車がトラックに停止し、あなたが2Dせずに、直接場所を見つけることができるどんなには、推定値は初期位置を指定してポーズ。

 

おすすめ

転載: www.cnblogs.com/hgl0417/p/11504570.html