Rumah > Peranti teknologi > AI > teks badan

Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

WBOY
Lepaskan: 2024-01-13 16:51:16
ke hadapan
1277 orang telah melayarinya

1. Latar belakang

Simulasi memainkan peranan penting dalam penyelidikan dan pembangunan pemanduan autonomi Ia boleh meningkatkan kecekapan penyelidikan dan pembangunan serta memberikan jaminan untuk kebolehpercayaan algoritma. Sebagai platform sumber terbuka yang sangat baik, sistem Baidu Apollo sangat sesuai untuk penyelidikan oleh rakan-rakan yang berminat untuk mempelajari pemanduan autonomi. Selain itu, Carsim/Trucksim ialah alat simulasi dinamik kenderaan klasik yang sangat dihormati.

Artikel ini memperkenalkan kaedah merealisasikan simulasi masa nyata tempatan melalui gabungan Apollo dan Trucksim. Ia sesuai untuk pemula untuk membina platform simulasi dan mengkaji sistem Apollo.

2. Reka bentuk seni bina

Kod teras projek Apollo dilaksanakan dalam C++. Antara muka biasa untuk Trucksim termasuk simulink, Python dan bahasa C. Artikel ini mula-mula akan memperkenalkan seni bina Apollo, simulink dan simulasi bersama Trucksim, dan membincangkan masalah yang wujud dalam sistem simulasi ini. Seterusnya, kami akan memberi tumpuan kepada simulasi bersama Apollo dan Trucksim.

2.1 Penyelesaian Apollo, simulink dan Trucksim

Simulink dan Apollo boleh berkomunikasi melalui ROS. Memandangkan format data mesej Apollo ialah protobuf, dan alat ROS Simulink hanya menyokong mesej ROS standard (mesej ROS), satu nod penukaran format boleh ditambahkan pada Apollo untuk mencapai keserasian. Mengenai penyelesaian Simulink memanggil Trucksim, terdapat banyak sumber di Internet untuk rujukan, jadi saya tidak akan menjelaskan secara terperinci.

Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

rajah penyelesaian simulink

2.2 Penyelesaian Apollo, rosbridge dan Trucksim

Wujudkan komunikasi websoket antara projek QT dan projek Apollo. Dalam projek Apollo, penukaran bersama antara mesej ros (atau mesej siber) dan soket web direalisasikan dengan menambah modul rosbridge (atau cyber_bridge). Projek QT dilaksanakan dalam C++ sebagai pelanggan websocket dan memanggil perpustakaan dinamik Trucksim untuk merealisasikan fungsi menjalankan Trucksim dalam masa nyata. Rajah penyelesaian rosbridge alamat ditunjukkan dalam Rajah 2. Nama hos/Alamat IP dan Port ialah alamat dan nombor port ROS_MASTER_URI masing-masing, yang dijelaskan dalam mekanisme komunikasi di atas.

Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

Konfigurasikan alamat rangkaian ROS

Pelanggan ROS menerima mesej daripada antara muka, jadi Topik, jenis Mesej dan masa Contoh mesti sepadan dengan program dalam antara muka.

Konfigurasikan ros subcribe

Untuk memudahkan penyahpepijatan dan pengesahan, sekarang mulakan ROS di sebelah MATLAB. Proses konfigurasi adalah seperti berikut:

Arahan tetapan MATLAB:

>> setenv('ROS_MASTER_URI','http://192.168.103.122:11311')>> setenv('ROS_IP','192.168.103.198')>> rosinit('192.168.103.122')
Salin selepas log masuk

3.1.2 Konfigurasi TruckSim Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

Antara muka konfigurasi

Trucksim ialah pengaturcaraan trak berasaskan wizard, konfigurasi SSS pilih antara muka , lihat parameter khusus Rajah 3. Antara muka kawalan: Pilih simulink untuk Model. antara muka konfigurasi parameter input Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

pemasangan rosbridge dalam talian Terdapat banyak tutorial, jadi saya tidak akan menjelaskan secara terperinci dalam artikel ini.

Penggunaan adalah seperti berikut:

cd ros_pkgs_ws

catkin_makeMulakan rosbridge

sumber /apollo/ros_pkgs_ws/devel/setup.bash=rcoPAT

rosla unch rosbridge_server rosbridge_websocket .launch

3.2.1 Arahan konfigurasi projek QtApollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

3.2.1.1 Maklumat versi Qt dan CMake

Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

3.2.1.3 takrifan projek dan Antaramuka Qt

Apollo /apollo/trucksim /pose Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

{"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 } }}
Salin selepas log masuk

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 bekerjasama dengan Carsim/TruckSim untuk simulasi bersama

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

Atas ialah kandungan terperinci Apollo bekerjasama dengan Carsim/TruckSim untuk simulasi bersama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan