시뮬레이션은 자율 주행 연구 개발에 중요한 역할을 하며 연구 개발 효율성을 크게 향상시키고 알고리즘의 신뢰성을 보장할 수 있습니다. 뛰어난 오픈 소스 플랫폼인 Baidu Apollo 시스템은 자율 주행 학습에 관심이 있는 친구들의 연구에 매우 적합합니다. 또한 Carsim/Trucksim은 매우 존경받는 클래식 차량 역학 시뮬레이션 도구입니다.
이 글에서는 Apollo와 Trucksim의 결합을 통해 로컬 실시간 시뮬레이션을 구현하는 방법을 소개합니다. 초보자가 시뮬레이션 플랫폼을 구축하고 Apollo 시스템을 연구하는 데 적합합니다.
Apollo 프로젝트의 핵심 코드는 C++로 구현되었습니다. Trucksim의 일반적인 인터페이스에는 simulink, Python 및 C 언어가 포함됩니다. 이 기사에서는 먼저 Apollo, simulink 및 Trucksim 공동 시뮬레이션의 아키텍처를 소개하고 이 시뮬레이션 시스템에 존재하는 문제에 대해 논의합니다. 다음으로 Apollo와 Trucksim의 공동 시뮬레이션에 중점을 둘 것입니다.
Simulink와 Apollo는 ROS를 통해 통신할 수 있습니다. Apollo의 메시지 데이터 형식은 protobuf이고 Simulink의 ROS 도구는 표준 ROS 메시지(ROS msg)만 지원하므로 호환성을 달성하기 위해 형식 변환 노드를 Apollo에 추가할 수 있습니다. Trucksim을 호출하는 Simulink의 솔루션에 대해서는 인터넷에 참고할 수 있는 자료가 많기 때문에 자세히 설명하지 않겠습니다.
simulink 솔루션 다이어그램
QT 프로젝트와 Apollo 프로젝트 간의 웹소켓 통신을 설정합니다. Apollo 프로젝트에서는 rosbridge(또는 Cyber_bridge) 모듈을 추가하여 ros 메시지(또는 사이버 메시지)와 웹소켓 간의 상호 변환을 구현합니다. QT 프로젝트는 C++에서 웹소켓 클라이언트로 구현되며 Trucksim의 동적 라이브러리를 호출하여 Trucksim을 실시간으로 실행하는 기능을 실현합니다.
rosbridge 솔루션 다이어그램
3.1.1 Simulink 구성
Simulink 툴킷에는 ROS 지원 패키지가 있으며, ROS 네트워크 구성 주소가 표시됩니다. 그림 2에서. Hostname/IP Address와 Port는 각각 ROS_MASTER_URI의 주소와 포트 번호이며, 이는 위의 통신 메커니즘에서 설명했습니다.
ROS 네트워크 주소 구성
ROS 가입자는 인터페이스에서 메시지를 수신하므로 주제, 메시지 유형 및 샘플 시간은 인터페이스의 프로그램과 일치해야 합니다.
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를 선택합니다.
메인 인터페이스
입력 매개변수 구성 인터페이스
출력 매개변수 구성 인터페이스
3.2.1 apollo에서 rosbridge 구성
rosbridge 온라인 설치 튜토리얼이 많기 때문에 이 글에서는 자세히 다루지 않겠습니다.
사용법은 다음과 같습니다:
cd ros_pkgs_ws
catkin_make
Start rosbridge
source /apollo/ros_pkgs_ws/devel/setup.bash
PATH=/usr/local/miniconda2/bin:$PATH
로슬라 운치 rosbridge_server rosbridge_websocket .launch
3.2.1 Qt 프로젝트 구성 지침
3.2.1.1 Qt 및 CMake 버전 정보
3.2.1.3 Apollo 프로젝트 및 QT 프로젝트의 인터페이스 정의
/apol 로/트럭심 /포즈
{"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
위 내용은 Apollo는 공동 시뮬레이션을 위해 Carsim/TruckSim과 파트너십을 맺었습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!