基于轨迹优化的自动驾驶汽车跟随自行车模型动力学控制(Matlab代码实现)

news2024/11/25 22:50:22

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

本次使用轨迹优化技术来控制汽车。假设汽车遵循自行车模型的动力学。为了实现稳定和安全的跟踪,我们使用了离散时间模型预测控制。
一个离散的比例控制器(基于定义为偏离赛道中心线的函数的误差)用于生成我们的赛车将遵循的近似轨迹。

复制或下载此存储库后,在系统上打开MATLAB并运行main.m。

📚2 运行结果

 

 

 

🎉3 参考文献

[1]李晓芳,何俊.智能自动驾驶汽车的轨迹优化[J].价值工程,2017,36(21):129-130.DOI:10.14018/j.cnki.cn13-1085/n.2017.21.055.

👨‍💻4 Matlab代码

主函数部分代码:

clear 
close all
clc

trackDataFileName = 'TestTrack';

%% Proportional Control

initialState = [287,5,-176,0,2,0];
initialTrajectoryFileName = initialTrajectoryGenerator(trackDataFileName,initialState);
disp('Initial Trajectory Generated');

%% MPC

% differentInitialState = initialState;         % to keep the same initial state
differentInitialState = [284,5,-180,0,2,0];     % to provide a different initial state
finalTrajectoryFileName = discreteMPC(initialTrajectoryFileName,differentInitialState);
disp('MPC Trajectory Generated');

%% Plots

load(trackDataFileName);
leftLine = TestTrack.bl;
rightLine = TestTrack.br;

load(initialTrajectoryFileName);
initialTraj_X = InitialTraj.states(:,1);
initialTraj_Y = InitialTraj.states(:,3);

load(finalTrajectoryFileName);
finalTraj_X = FinalTraj.states(:,1);
finalTraj_Y = FinalTraj.states(:,3);

figure(1)
title('Initial Trajectory - Using Proportional Controller')
hold on
plot(initialTraj_X, initialTraj_Y, 'r','LineWidth',2);
plot(leftLine(1,:), leftLine(2,:), 'k','LineWidth',1);
plot(rightLine(1,:),rightLine(2,:),'k','LineWidth',1);
legend('Trajectory','Left Border','Right Border','Location','NorthWest')
hold off

figure(2)
title('Final Trajectory - Using MPC Controller')
hold on
plot(finalTraj_X,   finalTraj_Y,   'r','LineWidth',2);
plot(leftLine(1,:), leftLine(2,:), 'k','LineWidth',1);
plot(rightLine(1,:),rightLine(2,:),'k','LineWidth',1);
legend('Trajectory','Left Border','Right Border','Location','NorthWest')
hold off

figure(3)
title('Comparing initial part of track')
subplot(2,1,1);
hold on
plot(initialTraj_X, initialTraj_Y, 'r','LineWidth',2);
plot(leftLine(1,:), leftLine(2,:), 'k','LineWidth',1);
plot(rightLine(1,:),rightLine(2,:),'k','LineWidth',1);
legend('Trajectory','Left Border','Right Border','Location','NorthWest')
hold off
subplot(2,1,2);
hold on
plot(finalTraj_X,   finalTraj_Y,   'r','LineWidth',2);
plot(leftLine(1,:), leftLine(2,:), 'k','LineWidth',1);
plot(rightLine(1,:),rightLine(2,:),'k','LineWidth',1);
legend('Trajectory','Left Border','Right Border','Location','NorthWest')
hold off
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信内嵌H5调用相机及支付相关问题

前言 进来项目在做公众号,遇到了一些问题及解决方案,在这里进行记录及分享,希望给大家带来一丝帮助 手机上控制台调试我建议使用vConsole(npm install vconsole) 微信内嵌H5的相机调用 微信内嵌H5我们需要调用扫码功能,则需要用…

如何发布WMS/WMTS离线地图服务

介绍: WMTS(OpenGIS Web Map Tile Service)当前版本是1.0.0。WMTS标准定义了一些操作,这些操作允许用户访问切片地图。WMTS可能是OGC首个支持RESTful访问的服务标准。 WMTS的原理和操作 如果知道一个请求的边界范围&#x…

浅谈用Redis实现分布式锁的方案及细节

前言 我们都知道,在面对并发问题时,有加锁操作和保证原子操作两种解决方案。当我们采用加锁操作的时候,因为Redis多采用集群的方式部署,因此我们就需要考虑到锁在分布式系统中使用的注意事项。接下来就看看Redis的分布式锁问题。…

【檀越剑指大厂—Spring】Spring高阶篇

一.基础概念 1.模块 2.Spring 框架概述。 Spring 是轻量级的开源的 JavaEE 框架 Spring 可以解决企业应用开发的复杂性 Spring 有两个核心部分: IOC 和 AOP IOC:控制反转,把创建对象过程交给 Spring 进行管理 Aop:面向切面,不修改源代码进行功能增强…

SpringBoot办公管理系统oa人力人事办公(含源码+论文+答辩PPT等)

项目功能简介: 本项目含代码详细讲解视频,手把手带同学们敲代码从0到1完成项目 该项目采用技术SpringBoot、SpringMvc(接入层框架)Spring(中间层框架)Hibernate(持久层框架)JPAMD5加密、Tomcat服务器、MySQL数据库 项目含有源码、配套开发软件…

R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量波动率预测...

全文下载链接:http://tecdat.cn/?p23287在本文中,当从单变量波动率预测跳到多变量波动率预测时,我们需要明白,现在我们不仅要预测单变量波动率元素,还要预测协方差元素(点击文末“阅读原文”获取完整代码数…

web安全之通过sqlmap工具进行靶场练习

目录 基础语法 get类型的注入 post类型的注入 基础语法 -u:用于get提交方式,后面跟注入的url网址 --dbs:获取所有数据库 --tables:获取所有数据表 --columns:获取所有字段 --dump:打印数据 -D:查询选择某…

火到爆的扩散模型(Diffusion Model)帮你具象化幻想世界

Diffusion Model 如果你对人工智能有所了解,想必已经听说过Diffusion Model了。如果还没有,那就一起来了解一下吧—— 扩散(Diffusion)对于人能智能而言,是一个借用的概念。在热力学中,它指细小颗粒从高密度…

调节盘的三维建模及加工工艺规程设计

目录 1 调节盘分析 - 1 - 1.1 调节盘结构特点 - 1 - 1.2 调节盘的工艺分析 - 2 - 1.3 调节盘的技术要求 - 3 - 2 毛坯的选择 - 4 - 2.1 毛坯的类型 - 4 - 2.2 毛坯余量的确定 - 4 - 2.3 毛坯草图 - 5 - 3 工艺规程设计 - 6 - 3.1 定位基准的选择 - 6 - 3.1.1 粗基准的选择 - 6 …

2022系统分析师下午卷(案例分析)

试题一(共 25 分) 阅读以下关于软件系统分析与建模的叙述,在答题纸上回答问题 1 至问题 3。 【说明】 某软件公司拟开发一套博客系统,要求能够向用户提供一个便捷发布自已心得,及时有效的与他人进行交流的平台。新用户…

新手学习3D建模,弯道超车攻略!

你做三四月的事,在八九月自有答案。​ – 余世存 📝学建模最重要的是每天抽时间练习 🌻给大家准备了200天建模打卡攻略练习素材 📔人体解剖雕塑学(骨骼、肌肉等电子版💯) 📒3dmax…

第4季6:图像sensor的寄存器操作

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、sensor_write_register函数的解析 在第4季4:图像sensor的驱动源码解析中写到,sensor_register_callback函数的调用关系如下: sensor_register_callback …

英文Paper写作怎么确实合适的介词?

Paper写作中,介词是非常常见的,介词虽是小词,数量也不多,但灵活多变,随处可见,功能强大而且难于掌握。我们不可小看这个角色,不可忽视它在不同句子中的作用,Paper写作过程中应该如何…

读取HDFS数据写入MySQL_大数据培训

读取HDFS数据写入MySQL 1)将上个案例上传的文件改名 [atguiguhadoop102 datax]$ hadoop fs -mv /student.txt* /student.txt 2)查看官方模板 [atguiguhadoop102 datax]$ python bin/datax.py -r hdfsreader -w mysqlwriter { “job”: { “content”…

高阶测试开发必备技能: k8s入门

现在稍微有点规模公司都是基于docker容器化部署技巧,K8s现在主流,应用最广的容器集群管理技术。 k8s全称kubernetes(首字母为 k、首字母与尾字母之间有 8 个字符、尾字母为 s,所以简称 k8s),基于Docker容器…

微服务架构10个最重要的设计模式,带你了解,完全熟悉

自从软件开发的早期(1960年代)以来,解决大型软件系统中的复杂性一直是一项艰巨的任务。多年来,软件工程师和架构师为解决软件系统的复杂性进行了许多尝试:David Parnas的模块化和信息隐藏(1972),Edsger W. Dijkstra的关注分离(197…

关于ElasticSearch日期格式不一致的异常,可以这么解决

最近壹哥的一个学生,在利用spring-data-elasticsearch访问ElasticSearch(ES)时,遇到了一个关于日期类型的BUG,困扰了很久。然后他就找壹哥给他解决,接下来壹哥就把解决的过程给大家复现一下,希望本文可以给遇到同样问题…

构建灵活订单系统,B2B撮合管理系统提升光伏企业订单管理效率

光伏系统是利用半导体光生伏特效应将太阳能转化为电能的发电系统。过去20年,我国光伏制造业快速发展,由弱变强。经过20年高速发展,我国在硅片、电池片、组件制造等多领域处于世界领先水平,我国已经成为全球第一大光伏生产国、消费…

深度学习Week9-YOLOv5-C3模块实现(Pytorch)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:Pytorch实战 | 第P8天:YOLOv5-C3模块实现(训练营内部成员可读)🍖 原作者:K同学啊|接辅导、项目定制了解C3的结构,方便…

前端Gitee + Jenkins自动化实战(转)

# 前端Gitee Jenkins自动化实战 当我们熟悉了Jenkins 的使用后,接下来我们来配置一个基于 vue-element-admin 的实战项目,来感受一下自动化流程带给我们的优势。 首先我们需要创建一个 git 项目,至于代码仓库可以自选,这里为了…