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.
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.
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.
Simulink-Lösungsdiagramm
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.
Konfigurieren Sie die ROS-Netzwerkadresse
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
KonfigurationsschnittstelleTrucksim 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.
Hauptschnittstelle
Eingabeparameter-Konfigurationsschnittstelle
Ausgabeparameter-Konfigurationsschnittstelle
3.2 Apollo-, Rosbridge- und Trucksim-Lösungen
3.2.1 Rosbridge in Apollo konfigurieren
Rosbridge-Installation online Es gibt viele Tutorials, daher werde ich in diesem Artikel nicht auf Details eingehen.Die Verwendung ist wie folgt:
cd ros_pkgs_ws
catkin_make
Rosbridge startensource. /apollo/ros_pkgs_ws/devel/setup.bashPATH=/usr/local/miniconda2/bin:$PATHrosla unch rosbridge_server rosbridge_websocket .launch
3.2.1 Qt-Projektkonfigurationsanweisungen
3.2.1.1 Qt- und CMake-Versionsinformationen3.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 } }}
注释:
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
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!