ホームページ  >  記事  >  テクノロジー周辺機器  >  Apollo は共同シミュレーションのために Carsim/TruckSim と提携

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

WBOY
WBOY転載
2024-01-13 16:51:161238ブラウズ

1. 背景

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

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

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 メッセージ (ROS msg) のみをサポートするため、形式変換ノードを Apollo に追加して互換性を実現できます。 Simulink が Trucksim を呼び出す解決策については、インターネット上に参考となるリソースが多数あるため、詳細は説明しません。

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

simulink ソリューションの図

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

QT プロジェクトと Apollo プロジェクト間の WebSocket 通信を確立します。 Apollo プロジェクトでは、rosbridge (または cyber_bridge) モジュールを追加することで、ros メッセージ (またはサイバー メッセージ) と Websocket の相互変換を実現しています。 QT プロジェクトは WebSocket クライアントとして C で実装されており、Trucksim の動的ライブラリを呼び出して、Trucksim をリアルタイムで実行する機能を実現します。

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

rosbridge ソリューション図

3. 関数の実装

3.1 Apollo、simulink、および Trucksim ソリューション

3.1.1 Simulink 構成

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

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

ROS ネットワーク アドレスの設定

ROS サブスクライバはインターフェイスからメッセージを受信するため、トピック、メッセージ タイプ、およびサンプル時間は、インターフェース。

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

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 を選択してください。

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

#メインインターフェイス

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

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

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

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

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

3.2.1 apollo での rosbridge の設定

rosbridge のオンライン チュートリアルが多数あります。この記事では詳細については説明しません。

使用方法は次のとおりです。

cd ros_pkgs_ws

catkin_make

rosbridgeを起動します

source /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 のバージョン情報

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

3.2.1.3 Apollo プロジェクトと QT プロジェクトのインターフェイス定義

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

/アポロ/トラックシム/ポーズ

{"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.001s,即模型更新频率为1000hz,选择每个步长更新两次的积分方法(如:AM-2, RK-2等)。

注释:
1)真车是一个高阶非线性连续系统,TruckSim通过固定时间步长离散系统来模拟真车,当模型步长选择较大时(如之前设置的0.01s),模型较不准;TruckSim模型是由悬架系统-动力系统-转向系统-制动系统-轮胎模型-空气动力学等系统构成的复杂系统,当其中一个或多个系统因为时间步长太大而很不准时,就会出现车抖动比较明显的现象。

2)模型更新频率设为1000hz是TruckSim官网推荐的,经验证,这个频率能解决车抖动问题。

  1. 接口线程加载频率用定时器控制,加载调用simfile.sim,license和DLL的频率设置为1000hz,与Trucksim模型离散步长一致。

注释:
受3中积分方法决定,当选择每个步长更新两次的积分方法,VS_EXT_EQ_IN和VS_EXT_EQ_OUT更新频率是加载频率的2倍,为2000hz。

Apollo は共同シミュレーションのために Carsim/TruckSim と提携

原文链接:https://mp.weixin.qq.com/s/8QNp5iQebE3lPJzEgq_bOA

以上がApollo は共同シミュレーションのために Carsim/TruckSim と提携の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。