【深蓝学院】移动机器人运动规划--第4章 动力学约束下的运动规划--作业

文章目录

  • 1. T1
    • 1.1 题目
    • 1.2 求解
    • 1.3 Pontryagin Minimum Principle 的拓展
  • 2. T2
    • 2.1 题目
    • 2.2 求解
  • 3. Reference

1. T1

1.1 题目

在这里插入图片描述

1.2 求解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 Pontryagin Minimum Principle 的拓展

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. T2

2.1 题目

在这里插入图片描述

2.2 求解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Listing1: demo_node.cpp/trajectoryLibrary()

for(int step=0 ; step<=_time_step ; step ++){/*STEP 1: finish the forward integration, the modelling has been given in the documentthe parameter of forward integration: _max_input_acc|_discretize_step|_time_interval|_time_step   all have been givenuse the pos and vel to recored the steps in the trakectory*///使用运动学公式:x=x0+v0t+1/2at^2,v=v0+at//要体现出积分,是accumulate的过程pos(0) = pos(0) + vel(0) * delta_time + 0.5 * acc_input(0) * std::pow(delta_time, 2);pos(1) = pos(1) + vel(1) * delta_time + 0.5 * acc_input(1) * std::pow(delta_time, 2);pos(2) = pos(2) + vel(2) * delta_time + 0.5 * acc_input(2) * std::pow(delta_time, 2);vel(0) = vel(0) + acc_input(0) * delta_time;vel(1) = start_velocity(1) + acc_input(1) * delta_time;vel(2) = start_velocity(2) + acc_input(2) * delta_time;Position.push_back(pos);Velocity.push_back(vel);double coord_x = pos(0);double coord_y = pos(1);double coord_z = pos(2);//check if if the trajectory face the obstacleif(_homework_tool->isObsFree(coord_x,coord_y,coord_z) != 1){collision = true;}
}

在这里插入图片描述
Listing2:hw_tool.cpp/OptimalBVP()

double Homeworktool::OptimalBVP(Eigen::Vector3d _start_position,Eigen::Vector3d _start_velocity,Eigen::Vector3d _target_position)
{double optimal_cost = 1000000; // this just to initial the optimal_cost, you can delete it/*STEP 2: go to the hw_tool.cpp and finish the function Homeworktool::OptimalBVPthe solving process has been given in the documentbecause the final point of trajectory is the start point of OBVP, so we input the pos,vel to the OBVPafter finish Homeworktool::OptimalBVP, the Trajctory_Cost will record the optimal cost of this trajectory*///直接求解一元四次方程Eigen::Matrix<double,4,4> mat44;Eigen::Matrix<complex<double>, Eigen::Dynamic, Eigen::Dynamic> matrix_eigenvalues;//求出一元四次方程的五个系数abcdedouble v_x0 = _start_velocity(0), v_y0 = _start_velocity(1), v_z0 = _start_velocity(2);double dx = _target_position(0) - _start_position(0);double dy = _target_position(1) - _start_position(1);double dz = _target_position(2) - _start_position(2);double v0_square_sum = v_x0*v_x0 + v_y0*v_y0 + v_z0*v_z0;double v0_dp_sum = v_x0*dx+v_y0*dy+v_z0*dz;double dp_square_sum = dx*dx + dy*dy + dz*dz;double a = 1.0;double b = 0.0;double c = -4 * v0_square_sum;double d = 24 * v0_dp_sum;double e = -36 * dp_square_sum;mat44 <<0, 0, 0, -e,1, 0, 0, -d,0, 1, 0, -c,0, 0, 1, -b;
//    ROS_INFO_STREAM("\nmatrix_44: \n" << mat44);matrix_eigenvalues = mat44.eigenvalues();
//    ROS_INFO_STREAM("\nmatrix_eigenvalues: \n"<<matrix_eigenvalues);for(int i=0; i<4; ++i) {if(matrix_eigenvalues(i).real() < 0)continue;double T = matrix_eigenvalues(i).real();double tmp_cost = T + 4.0/T * v0_square_sum - 12.0/(std::pow(T,2)) * v0_dp_sum + 12.0/std::pow(T,3) * dp_square_sum;ROS_INFO_STREAM("\nnow optimal_cost=" << optimal_cost <<", tmp_cost= " << tmp_cost);if(tmp_cost < optimal_cost) {ROS_INFO_STREAM("\n======now optimal_cost=" << optimal_cost <<", found lower cost= " << tmp_cost);optimal_cost = tmp_cost;}}ROS_INFO_STREAM("\nreturn optimal_cost=" << optimal_cost);return optimal_cost;
}

在这里插入图片描述

在这里插入图片描述

3. Reference

[1] A Computationally Efficient Motion Primitive for Quadrocopter Trajectory Generation, Mark W. Mueller,
Markus Hehn, and Raffaello D’Andrea.

[2] Dynamic Programming and Optimal Control, D. P. Bertsekas.

[3] https://blog.csdn.net/fb_941219/article/details/102984587

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

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

相关文章

蓝桥杯-X图形

问题描述 给定一个字母矩阵。一个 X 图形由中心点和由中心点向四个 45度斜线方向引出的直线段组成&#xff0c;四条线段的长度相同&#xff0c;而且四条线段上的字母和中心点的字母相同。 一个 X 图形可以使用三个整数 r,c,L 来描述&#xff0c;其中 r,c 表示中心点位于第 r 行…

LOL全英文界面

文章目录 前言.bat 前言 对于需要学英文的同学们来说, 玩起lol来 ,有全部界面文字都是英文. 那真是很酷对于那些改配置还不起作用的玩家来说, 我只告诉你们, 只需要写一个.bat文件, 当然我的lol是日服版. 抗日起来是非常 cool .bat 只有两行 pushd "K:\Program Files (…

Spring Security 弃用 WebSecurityConfigurerAdapter 重写登录接口 前后端分离 返回json数据格式

springboot 版本高于 2.7 之后 弃用了 WebSecurityConfigurerAdapter 推荐使用组件化配置安全组件。 原版本的2.7版本的登录接口 功能&#xff1a; 通过/api/doLogin 进行登录 package cn.devops.config;import cn.devops.model.User; import cn.devops.response.RespBe…

nginx命名location跳转的模块上下文继承

目录 1. 缘起2. 解决方案2.1 保留指定模块的上下文信息2.2 获取指定模块的上下文信息2.3 设置指定模块的上下文信息2.4 设置模块上下文是否需要继承标记2.5 对openrety lua代码的支持 1. 缘起 nginx提供了非常棒的功能&#xff0c;命名location&#xff0c;如文章nginx的locati…

理解JAVA EE设计模式

理解JAVA EE设计模式 在Web应用程序的设计和开发阶段,开发人员在开发类似的项目时可能会遇到相似的问题。每名开发人员可能会遇到的问题找出不同或相似的解决方案。但是,这导致一些时间和精力浪费在为相似的问题寻找解决方案上。因此,要啊节省时间和精力,需要记录常见问题…

Vulnhub靶场 DC-9

目录 一、环境搭建 二、信息收集 1、主机发现 2、指纹识别 三、漏洞复现 1、dirsearch目录探测 2、sqlmap注入测试 3、文件包含漏洞 4、Knockd敲门服务 5、ssh爆破 ​​​​​​​6、提权 四、提取flag 一、环境搭建 Vulnhub靶机下载&#xff1a; 官网地址&#xff1a;https://…

红队打靶练习:Alfa:1

下载连接点击此处即可&#xff01; 目录 信息收集 1、arp 2、nmap 3、gobuster WEB web信息收集 FTP登录 smaba服务 crunch密码生成 提权 系统信息收集 权限提升 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, …

消息中间件面试篇

消息中间件 RabbitMQ 消息不丢失 可能导致消息丢失的情况&#xff1a; 生产者发送消息丢失消息队列宕机消费者服务宕机&#xff0c;未接收到消息 生产者确认机制 该机制解决了生产者发送消息有可能丢失的问题。 RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程…

Unity下使用Sqlite

sqlite和access类似是文件形式的数据库&#xff0c;不需要安装任何服务&#xff0c;可以存储数据&#xff0c;使用起来还是挺方便的。 首先需要安装DLL 需要的DLL 我们找到下面两个文件放入Plugins目录 Mono.Data.Sqlite.dll System.Data.dll DLL文件位于Unity的安装目录下的…

「MySQL」事务

简介 定义&#xff1a;事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败 基本操作 方式1 查看/设置事务提交方式 select…

LeetCode、1143. 最长公共子序列【中等,二维DP】

文章目录 前言LeetCode、1143. 最长公共子序列【中等&#xff0c;二维DP】题目链接与分类思路2022年暑假学习思路及题解二维DP解决 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者…

Day32 贪心算法part02

买卖股票的最佳时机 太牛了我&#xff0c;随随便便双指针秒杀 md题解里面双指针都没用直接for循环秒杀 跳跃游戏 写成这样纯粹是没有看到第一次跳跃必须从第一个开始 class Solution:def canJump(self, nums: List[int]) -> bool:if len(nums) 1:return Truefor i in …

autojs自动化刷视频脚本

视频展示 视频 //悬浮窗 // var window floaty.rawWindow( // <frame gravity"center" bg"#ff00ff"> // <button id"action" w"300dp" h"300dp"> // 按钮 // </button> // </fram…

python+django咖啡网上商城网站

全网站共设计首页、咖啡文化、咖啡商城、个人信息、联系我们5个栏目以及登录、注册界面&#xff0c;让用户能够全面的了解中国咖啡咖啡文化宣传网站以及一些咖啡知识、文化。 栏目一首页&#xff0c;主要放置咖啡的起源及发展进程的图文介绍&#xff1b;栏目二咖啡文化&#xf…

第三百二十三回

文章目录 1. 概念介绍2. 使用方法2.1 基本用法2.2 缓冲原理 3. 示例代码4. 内容总结 我们在上一章回中介绍了"FadeInImage组件"相关的内容&#xff0c;本章回中将介绍CachedNetworkImage组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

Linux-Vim的使用,快速入门Vim,Linux入门教程,精讲Linux

Vim的三种模式 输入模式&#xff0c;键入 i 或 a 或 o 都可以进入输入模式。 普通模式&#xff0c;打开Vim默认的模式。 命令模式&#xff0c;键入 : 进入命令模式。 注意&#xff1a;按下 ESC 可以从输入模式或命令模式退回到普通模式 退出 vim &#xff0c;需要在普通模式下…

InnoDB主键索引的B+Tree高度是多少?存储数据量是多少?

BTree示意图如下&#xff1a; 图片来源&#xff1a;BTree和BTree详解_bbrtt的结构图-CSDN博客 假设一行数据大小是1k&#xff0c;一页可以存储16行这样的数据。InnoDB的指针占用6个字节的空间&#xff0c;主键假设为bigint&#xff0c;占用字节数为8&#xff0c;那么可得公式…

Day 44 | 动态规划 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ

完全背包 题目 文章讲解 视频讲解 完全背包和0-1背包的区别在于&#xff1a;物品是否可以重复使用 思路&#xff1a;对于完全背包问题&#xff0c;内层循环的遍历方式应该是从weight[i]开始一直遍历到V&#xff0c;而不是从V到weight[i]。这样可以确保每种物品可以被选择多次…

unity 点击事件

目录 点击按钮&#xff0c;显示图片功能教程 第1步添加ui button&#xff0c;添加ui RawImage 第2步 添加脚本&#xff1a; 第3步&#xff0c;把脚本拖拽到button&#xff0c;点击button&#xff0c;设置脚本的变量&#xff0c; GameObject添加 Component组件 点击按钮&am…

如何才能学好JVM?——零基础入门篇

1. JVM是什么&#xff1f; JVM是Java Virtual Machine的简称&#xff0c;它是一个虚拟的计算机&#xff0c;专门为执行Java程序而设计。 你可以想象它是一个能够运行Java字节码的平台&#xff0c;无论你的程序在Windows、Mac还是Linux上&#xff0c;它们都能通过JVM在这些系统…