ApolloとCarSim/TruckSimの共同シミュレーション

ApolloとCarSim/TruckSimの共同シミュレーション

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転載したものです。転載については出典元にお問い合わせください。

1. 背景

シミュレーションは自動運転の研究開発において重要な役割を果たしており、研究開発の効率を大幅に向上させ、アルゴリズムの信頼性を保証することができます。 Baidu Apollo システムは、自動運転を学びたい人に適した優れたオープンソース プラットフォームです。 Carsim/Trucksim は、古典的な車両ダイナミクスシミュレーション ツールです。

本日は、Apollo と Trucksim を組み合わせてローカル リアルタイム シミュレーションを実現する方法についてご紹介したいと思います。このドキュメントは、シミュレーション プラットフォームを構築し、アポロ システムを学習する初心者に適しています。

2. 建築設計

Apollo プロジェクトのコア コードは C++ で実装されています。Trucksim でよく使用されるインターフェイスは、simulink、python、C です。この記事では、まず、Apollo、simulink、Trucksim の共同シミュレーションのアーキテクチャと、このシミュレーションの欠点について説明します。 Apollo と Trucksim の共同シミュレーションについてお話しましょう。

2.1 Apollo、Simulink、Trucksimソリューション

Simulink と Apollo は ROS を介して通信できます。Apollo のメッセージ データ形式は protobuf であり、Simulink の ROS ツールは標準の ROS msg のみをサポートしているため、Apollo に形式変換ノードを追加できます。 Simulink を使用して Trucksim を呼び出す方法についてはオンライン リソースが多数あるため、詳細には触れません。

Simulink ソリューション図

2.2 Apollo、rosbridge、Trucksimソリューション

QT プロジェクトを作成し、Websocket を介して Apollo プロジェクトと通信します。Apollo プロジェクトに rosbridge を追加して (Apollo 5.0 以降のバージョンでは cyber_bridge を使用)、ros メッセージ (または cyber メッセージ) と Websocket 間の変換を実現します。 QT プロジェクトは、Websocket クライアントの役割を果たします。 QT は C++ で実装されており、Trucksim の動的ライブラリを呼び出して、Trucksim をリアルタイムで実行する機能を実現します。

ロズブリッジ解図

3. 機能実装

3.1 Apollo、Simulink、Trucksimソリューション

3.1.1 Simulinkの設定

Simulink ツールキットには ROS サポート パッケージが含まれています。ROS ネットワーク アドレスの構成を図 2 に示します。ホスト名/IP アドレスとポートは、それぞれ ROS_MASTER_URI のアドレスとポート番号であり、上記の通信メカニズムで説明されています。

ROSネットワークアドレスを設定する

ROS サブスクライバーはインターフェースからメッセージを受信するため、トピック、メッセージ タイプ、サンプル時間はインターフェース内のプログラムに対応している必要があります。

ROS サブスクリプションの設定

デバッグと検証を容易にするために、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 はウィザードベースのプログラミング プログラムです。パラメータ構成インターフェイス: トラックの場合は 5A Tractor (SS_SSS) を選択します。具体的なパラメータについては、図 3 を参照してください。制御インターフェイス: モデルの場合は simulink を選択します。

メインインターフェース

入力パラメータ設定インターフェース

出力パラメータ設定インターフェース

3.2 Apollo、rosbridge、Trucksimソリューション

3.2.1 apollo での rosbridge の設定

rosbridge のインストールに関するオンライン チュートリアルは多数あるため、この記事では詳細には触れません。

使い方は次のとおりです:

ros_pkgs_ws をCDに追加

キャットキンメイク

rosbridgeを開始

ソース /apollo/ros_pkgs_ws/devel/setup.bash

PATH=/usr/local/miniconda2/bin:$PATH

roslaunch rosbridge_server rosbridge_websocket.launch

3.2.1 Qtプロジェクトの設定手順

3.2.1.1 Qt と CMake のバージョン情報

3.2.1.3 アポロ計画と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 } } }

4. ユーザーエクスペリエンス

  1. TruckSim モデルの離散時間補正は 0.001 秒に設定され、つまりモデル更新頻度は 1000 Hz となり、ステップごとに 2 回の更新を行う積分方法 (AM-2、RK-2 など) が選択されます。

注:
1) 実車は高次の非線形連続システムです。TruckSim は、固定時間ステップ離散化システムを通じて実車をシミュレートします。モデルのステップ サイズが大きい場合 (事前に設定した 0.01 秒など)、モデルの精度は低下します。TruckSim モデルは、サスペンション システム、パワー システム、ステアリング システム、ブレーキ システム、タイヤ モデル、空力などのシステムで構成される複雑なシステムです。これらのシステムの 1 つ以上が大きな時間ステップのために不正確になると、車両の揺れがより顕著になります。

2) モデルの更新頻度は、TruckSim 公式サイトで推奨されている 1000hz に設定されています。この頻度で車両の揺れの問題を解決できることが実証されています。

  1. インターフェイス スレッドの読み込み頻度はタイマーによって制御されます。simfile.sim、ライセンス、および DLL の読み込みと呼び出しの頻度は 1000hz に設定されており、これは Trucksim モデルの離散ステップ長と一致しています。

注:
3 つの積分方法の影響を受け、ステップごとに 2 回の更新を行う積分方法を選択した場合、VS_EXT_EQ_IN と VS_EXT_EQ_OUT の更新頻度は読み込み頻度の 2 倍、つまり 2000hz になります。

オリジナルリンク: https://mp.weixin.qq.com/s/8QNp5iQebE3lPJzEgq_bOA

<<:  未来を受け入れる: 2024 年のホームオートメーションの 5 つのトレンド

>>:  まだ NeRF に取り組んでいますか?リアルタイムレンダリングでリアルな自動運転データを生成!ストリートガウス:すべての SOTA を超えよう!

ブログ    

推薦する

AIによる教育革命:自己主導型およびガイド型適応型学習の包括的分析

適応型学習は、人工知能などの高度なテクノロジーを活用して、パーソナライズされた学習体験を生み出す教育...

音声によるやりとりをより自然にするにはどうすればよいでしょうか?まずはこれら 6 つの重要な知識ポイントをマスターしましょう。

最近、ロボットに関する非常に良い記事をいくつか読んだので、自分の考えを書き留めながら翻訳してみようと...

大規模モデルアプリケーションの探索 - エンタープライズ ナレッジ スチュワード

1. 伝統的なナレッジマネジメントの背景と課題1. 企業知識管理の必要性ナレッジ マネジメントは、あ...

...

Google Research の最新の発見: トレーニング結果が不正確になるのは、データ規模が巨大すぎることが原因です。

[[428092]]現在、AI の大きなトレンドは何ですか?そうです、データセットのサイズを拡大し...

Google 検索と競合する FRESHLLM は、より少ない幻想とより正確な情報で「最新の出来事」を把握しています。

BARD や CHATGPT/GPT-4 などの大規模言語モデルの機能は誰の目にも明らかです。これ...

AIコードツールが人気、複雑な操作が数秒で簡単になり、ネットユーザー:VS Codeを放棄

最近、AIコードエディタCursorが人気になってきました—— GPT-3.5/GPT-4 に接続す...

企業向けの優れたビジネス インテリジェンス ツール 10 選

規模に関係なく、企業はニーズに合わせてカスタマイズされたビジネス インテリジェンス ツールを使用して...

...

原子力 + AI: 原子力技術の未来を創造するのか?

近年、原子力技術と人工知能(AI)の融合により、原子力AIと呼ばれる強力な相乗効果が生み出されていま...

時間変換に基づく初のビデオ移行攻撃アルゴリズム、復旦大学の研究がAAAI 2022に選出

[[441526]]近年、ディープラーニングは一連のタスク(画像認識、物体認識、セマンティックセグメ...

AIに単純なことを教える: ゼロから最初のニューラルネットワークを構築する

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

クラウド AIGC をめぐる戦い: 最後に笑うのは Microsoft か Amazon か?

ChatGPTが11月下旬にリリースされて以来、テクノロジー業界の多くの人々は、OpenAIの資金...

...