Heim >Technologie-Peripheriegeräte >KI >Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

WBOY
WBOYnach vorne
2024-01-13 16:51:161284Durchsuche

1. Hintergrund

Simulation spielt eine wichtige Rolle in der Forschung und Entwicklung zum autonomen Fahren. Sie kann die Effizienz von Forschung und Entwicklung erheblich verbessern und eine Garantie für die Zuverlässigkeit von Algorithmen bieten. Als hervorragende Open-Source-Plattform eignet sich das Baidu Apollo-System sehr gut für die Forschung von Freunden, die daran interessiert sind, autonomes Fahren zu erlernen. Darüber hinaus ist Carsim/Trucksim ein hoch angesehenes klassisches Fahrzeugdynamik-Simulationstool.

In diesem Artikel wird die Methode zur Realisierung einer lokalen Echtzeitsimulation durch die Kombination von Apollo und Trucksim vorgestellt. Es ist für Anfänger geeignet, eine Simulationsplattform aufzubauen und das Apollo-System zu studieren.

2. Architekturdesign

Der Kerncode des Apollo-Projekts ist in C++ implementiert. Zu den gängigen Schnittstellen für Trucksim gehören Simulink, Python und die Programmiersprache C. In diesem Artikel wird zunächst die Architektur der gemeinsamen Simulation von Apollo, Simulink und Trucksim vorgestellt und die in diesem Simulationssystem bestehenden Probleme erörtert. Als nächstes konzentrieren wir uns auf die gemeinsame Simulation von Apollo und Trucksim.

2.1 Apollo-, Simulink- und Trucksim-Lösungen

Simulink und Apollo können über ROS kommunizieren. Da das Nachrichtendatenformat von Apollo protobuf ist und das ROS-Tool von Simulink nur Standard-ROS-Nachrichten (ROS msg) unterstützt, kann Apollo ein Formatkonvertierungsknoten hinzugefügt werden, um Kompatibilität zu erreichen. Bezüglich der Lösung von Simulink, die Trucksim aufruft, gibt es im Internet viele Referenzquellen, daher werde ich nicht auf Details eingehen.

Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

Simulink-Lösungsdiagramm

2.2 Apollo-, Rosbridge- und Trucksim-Lösungen

Stellen Sie eine Websocket-Kommunikation zwischen QT-Projekt und Apollo-Projekt her. Im Apollo-Projekt wird die gegenseitige Konvertierung zwischen Ros-Nachrichten (oder Cyber-Nachrichten) und Websockets durch Hinzufügen des Moduls Rosbridge (oder Cyber_Bridge) realisiert. Das QT-Projekt ist in C++ als Websocket-Client implementiert und ruft die dynamische Bibliothek von Trucksim auf, um die Funktion der Ausführung von Trucksim in Echtzeit zu realisieren. 3. Funktionsimplementierung in Abbildung 2. Hostname/IP-Adresse und Port sind die Adresse bzw. Portnummer von ROS_MASTER_URI, die im obigen Kommunikationsmechanismus erläutert werden.

Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

Konfigurieren Sie die ROS-Netzwerkadresse

ROS-Abonnent empfängt Nachrichten von der Schnittstelle, daher müssen Thema, Nachrichtentyp und Abtastzeit dem Programm in der Schnittstelle entsprechen.

Ros-Abonnement konfigurieren

Um das Debuggen und die Überprüfung zu erleichtern, starten Sie jetzt ROS auf der MATLAB-Seite. Der Konfigurationsprozess ist wie folgt:

MATLAB-Einstellungsanweisungen:

>> 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-Konfiguration Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

Konfigurationsschnittstelle

Trucksim ist eine assistentenbasierte Programmier- und Parameterkonfigurationsschnittstelle: Truck Select 5A Tractor (SS_SSS) , siehe die spezifischen Parameter Abbildung 3. Steuerschnittstelle: Wählen Sie Simulink für Modelle. Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

Hauptschnittstelle

Eingabeparameter-Konfigurationsschnittstelle

Ausgabeparameter-Konfigurationsschnittstelle

3.2 Apollo-, Rosbridge- und Trucksim-Lösungen

Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen3.2.1 Rosbridge in Apollo konfigurieren

Rosbridge-Installation online Es gibt viele Tutorials, daher werde ich in diesem Artikel nicht auf Details eingehen.

Apollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammenDie Verwendung ist wie folgt:

cd ros_pkgs_ws

catkin_makeApollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

Rosbridge starten

source. /apollo/ros_pkgs_ws/devel/setup.bash

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

rosla unch rosbridge_server rosbridge_websocket .launch

3.2.1 Qt-Projektkonfigurationsanweisungen

3.2.1.1 Qt- und CMake-Versionsinformationen

3.2.1.3 Schnittstellendefinition von Apollo-Projekt und QT-Projekt

/ Apollo/Trucksim /pose

{"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 arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen

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

Das obige ist der detaillierte Inhalt vonApollo arbeitet mit Carsim/TruckSim für gemeinsame Simulationen zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen