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の試み:地図や訓練なしでロボットに物理的なナビゲーションを教える

Meta Platformsの人工知能部門は最近、少量のトレーニングデータのサポートにより、AIモデ...

Objective-C 実装と主要なソートアルゴリズムのグラフィカルなデモンストレーション比較

[[176714]] Objective-C を使用していくつかの基本的なソート アルゴリズムを実装...

人工知能と機械学習の違いは何ですか?

[[197626]]人工知能は新しい用語ではなく、その開発の歴史は数十年にわたります。それは 19...

金融や視覚分野に加えて、AIはゲーム開発においても破壊的な技術となっている。

機械学習は、ゲームプログラミングではなく、ゲーム開発トレーニングへの扉を開きます。 「ゲーム開発」は...

UBS: AI需要は2022年から2027年の間に年平均61%の成長率で増加すると予想

金融投資機関UBSは最近、人工知能端末の需要に関する長期予測を、2020年から2025年までの年平均...

人工知能技術はますます普及してきています。どの開発言語が優れているのでしょうか?

人工知能産業が台頭から急速な発展へと進む過程において、AIトップ人材の主導的役割は特に重要です。国か...

AI画像合成技術の新たな波:Stable Diffusion 3とSoraアーキテクチャのブレークスルー

人工知能の黄金時代を迎え、画像合成技術はかつてない速さで発展しています。単純な画像編集から複雑なシー...

フェイフェイ・リーのチームの新しい研究:脳制御ロボットが家事を行い、脳コンピューターインターフェースに少ないサンプルで学習する能力を与える

将来的には、考えただけでロボットに家事を任せることができるようになるかもしれません。スタンフォード大...

Uber劉延東:Uberがフードデリバリーサービスを開始したとき、世界中のフードデリバリー会社は衝撃を受けた

[ 51CTO.comより引用 ] 2017年7月21日から22日まで、51CTOが主催する人工知能...

今日から彼は、黄仁訓院士です!米国工学アカデミーの2024年会員リストが発表され、清華大学の黄一東氏らが外国人会員に選出される

本日、2024年度の米国工学アカデミーの新会員リストが発表されました! Nvidiaの黄氏が選出され...

この方法を使えば誰でもLeetCodeで1位を獲得できる(再現可能)

数日前、GPT を使用して LeetCode の問題を練習し、アルゴリズムを学び、アイデアを刺激し、...

顔認識カメラはあなたの顔を盗みますが、なぜ「精密マーケティング」に使われるのでしょうか?

今年3月15日にCCTVで暴露された事件は、オフラインのショッピング施設に入ったことのある人全員に衝...

...

新たな自動運転ランキングが発表

最近、米国の市場調査機関であるナビガントリサーチが、自動運転の競争力に関する新たなランキングを発表し...