シミュレーションは自動運転の研究開発において重要な役割を果たしており、研究開発の効率を大幅に向上させ、アルゴリズムの信頼性を保証することができます。 Baidu Apollo システムは、優れたオープンソース プラットフォームなので、自動運転の学習に興味がある友人による研究に非常に適しています。さらに、Carsim/Trucksim は、高く評価されている古典的な車両ダイナミクス シミュレーション ツールです。
この記事では、ApolloとTrucksimを組み合わせてローカルリアルタイムシミュレーションを実現する方法を紹介します。初心者がシミュレーション プラットフォームを構築し、Apollo システムを学習するのに適しています。
Apollo プロジェクトのコア コードは C で実装されています。 Trucksim の一般的なインターフェイスには、simulink、Python、C 言語などがあります。この記事では、まず Apollo、simulink、および Trucksim 共同シミュレーションのアーキテクチャを紹介し、このシミュレーション システムに存在する問題について説明します。次に、Apollo と Trucksim の共同シミュレーションに焦点を当てます。
Simulink と Apollo は、ROS を介して通信できます。 Apollo のメッセージ データ形式は protobuf であり、Simulink の ROS ツールは標準 ROS メッセージ (ROS msg) のみをサポートするため、形式変換ノードを Apollo に追加して互換性を実現できます。 Simulink が Trucksim を呼び出す解決策については、インターネット上に参考となるリソースが多数あるため、詳細は説明しません。
simulink ソリューションの図
QT プロジェクトと Apollo プロジェクト間の WebSocket 通信を確立します。 Apollo プロジェクトでは、rosbridge (または cyber_bridge) モジュールを追加することで、ros メッセージ (またはサイバー メッセージ) と Websocket の相互変換を実現しています。 QT プロジェクトは WebSocket クライアントとして C で実装されており、Trucksim の動的ライブラリを呼び出して、Trucksim をリアルタイムで実行する機能を実現します。
rosbridge ソリューション図
3.1.1 Simulink 構成
Simulink ツールキットには ROS サポート パッケージが含まれており、ROS ネットワーク アドレスは図 2 に示すように構成されます。ホスト名/IP アドレスとポートは、それぞれ上記の通信メカニズムで説明した ROS_MASTER_URI のアドレスとポート番号です。
ROS ネットワーク アドレスの設定
ROS サブスクライバはインターフェイスからメッセージを受信するため、トピック、メッセージ タイプ、およびサンプル時間は、インターフェース。
ros subcribe の構成
デバッグと検証を容易にするために、MATLAB 側で ROS を起動します。構成プロセスは次のとおりです。
MATLAB 設定手順:
>> setenv('ROS_MASTER_URI','http://192.168.103.122:11311')>> setenv('ROS_IP','192.168.103.198')>> rosinit('192.168.103.122')
3.1.2 TruckSim 構成
構成インターフェイス
Trucksim はウィザードベースのプログラミングです。パラメータ構成インターフェイス: トラックには 5A トラクター (SS_SSS) を選択します。特定のパラメータについては図 3 を参照してください。制御インターフェイス: モデルには simulink を選択してください。
#メインインターフェイス 入力パラメータ設定インターフェイス 出力パラメータ設定インターフェイス3.2 Apollo、rosbridge、および Trucksim ソリューション3.2.1 apollo での rosbridge の設定
rosbridge のオンライン チュートリアルが多数あります。この記事では詳細については説明しません。 使用方法は次のとおりです。cd ros_pkgs_wscatkin_makerosbridgeを起動しますsource /apollo/ros_pkgs_ws/devel/setup .bash PATH=/usr/local/miniconda2/bin:$PATHroslaunch rosbridge_server rosbridge_websocket.launch3.2.1 Qt プロジェクトの構成手順
3.2.1.1 Qt と CMake のバージョン情報 3.2.1.3 Apollo プロジェクトと QT プロジェクトのインターフェイス定義/アポロ/トラックシム/ポーズ
{"op":"publish","topic":"/apollo/tucksim/pose","msg": {"header": {"timestamp_sec":1572253610.76292, "sequence_num":77}, "trucksimpose": {"XCG_TM":30.9964522249, // 单位:m "YCG_TM":0.657853758823, // 单位:m "ZCG_TM":1.00644079555, // 单位:m "YAW":-0.015505948987, // 单位:rad "VX":7.81497285565, // 单位:m/s "STEER_SW":2.84450684087, // 单位:rad "AV_Y":0.133153549217, // 单位:rad/s "GEARSTAT":5.0, // 无单位 "XCG_TM2":22.5890979801, // 单位:m "YCG_TM2":-0.471483304991, // 单位:m "ZCG_TM2":2.08466406388, // 单位:m "YAW_2":-0.0253130178796, // 单位:rad "VY":0.326368169782, // 单位:m/s "DISTANCE":31.0034324244, // 单位:m "DELTA_YAW":-0.015505948987, // 单位:rad "DISTANCE_2":22.5940178822, // 单位:m "DELTA_YAW_2":-0.0253130178796 // 单位:rad/s } }}
注释:
1)真车是一个高阶非线性连续系统,TruckSim通过固定时间步长离散系统来模拟真车,当模型步长选择较大时(如之前设置的0.01s),模型较不准;TruckSim模型是由悬架系统-动力系统-转向系统-制动系统-轮胎模型-空气动力学等系统构成的复杂系统,当其中一个或多个系统因为时间步长太大而很不准时,就会出现车抖动比较明显的现象。
2)模型更新频率设为1000hz是TruckSim官网推荐的,经验证,这个频率能解决车抖动问题。
注释:
受3中积分方法决定,当选择每个步长更新两次的积分方法,VS_EXT_EQ_IN和VS_EXT_EQ_OUT更新频率是加载频率的2倍,为2000hz。
原文链接:https://mp.weixin.qq.com/s/8QNp5iQebE3lPJzEgq_bOA
以上がApollo は共同シミュレーションのために Carsim/TruckSim と提携の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。