OBVP问题推导

2023-05-16

OBVP问题推导

    • 0.引言
    • 1.推导
    • 2.code

0.引言

记录一下。时间紧张,不整理了,直接上草稿纸。一元四次方程求解参考博客。

1.推导

Alt

Alt

2.code

代码完全按照推导书写,包括变量的命令。

double OBVP(Eigen::Vector3d _start_position,Eigen::Vector3d _start_velocity,Eigen::Vector3d _target_position)
{
    double optimal_cost = 100000.0; 
    double deltaPx = _target_position(0) - _start_position(0);
    double deltaPy = _target_position(1) - _start_position(1);
    double deltaPz = _target_position(2) - _start_position(2);
    double deltaVx = 0 - _start_velocity(0);
    double deltaVy = 0 - _start_velocity(1);
    double deltaVz = 0 - _start_velocity(2);
    double Vx0 = _start_velocity(0);
    double Vy0 = _start_velocity(1);
    double Vz0 = _start_velocity(2);

    double m = deltaPx*deltaPx +deltaPy*deltaPy + deltaPz*deltaPz;
    double n = 2*(deltaPx*Vx0 + deltaPy*Vy0 + deltaPz*Vz0) + 
                  deltaPx*deltaVx + deltaPy*deltaVy + deltaPz*deltaVz;
    double k = 3*(Vx0*Vx0 + Vy0*Vy0 +Vz0*Vz0 + deltaVx*Vx0 + deltaVy*Vy0 + deltaVz*Vz0) +
                  deltaVx*deltaVx + deltaVy*deltaVy + deltaVz*deltaVz;
    
    Eigen::Matrix<double, 4, 4> CompanionMatrix44;
    Eigen::Matrix<complex<double>, Eigen::Dynamic, Eigen::Dynamic> CompanionMatrix44EigenValues;//复数动态矩阵

    double c = - 4*k;
    double d = - 24*n;
    double e = - 36*m;
    vector<double> tmpOptimalT(4 ,0.0);
    vector<double> tmpOptimalCost(4, 100000.0);
    double optimalT = 0.0;
    CompanionMatrix44 << 0, 0, 0, -e,
				         1, 0, 0, -d,
				         0, 1, 0, -c,
				         0, 0, 1, 0 ;

    //std::cout<<"CompanionMatrix44: "<<std::endl<<CompanionMatrix44<<std::endl<<std::endl;                     
    CompanionMatrix44EigenValues = CompanionMatrix44.eigenvalues();
    //std::cout<<"matrix_eigenvalues: "<<std::endl<<CompanionMatrix44EigenValues<<std::endl;

    for(int i = 0; i < CompanionMatrix44EigenValues.size(); i++)
    {
    	//TODO:时间不能为负数
        //if(CompanionMatrix44EigenValues(i).imag() == 0)
        if(CompanionMatrix44EigenValues(i).imag() == 0  && CompanionMatrix44EigenValues(i).real() > 0)
        {
            tmpOptimalT[i] = CompanionMatrix44EigenValues(i).real();
            double t =  tmpOptimalT[i];
            double t2 = t*t;
            double t3 = t2*t;
            tmpOptimalCost[i] = t + (12*m)/(t3) + (12*n)/(t2) + (4*k)/t;
        }
        else
        {
            continue;
        }
    }

    for(int i = 0; i < tmpOptimalCost.size(); i++)
    {
        optimal_cost = std::min(tmpOptimalCost[i],optimal_cost);
    }
	//可以不用
    int flag = 0;
    for(int i = 0; i < tmpOptimalCost.size(); i++)
    {
        if(optimal_cost == tmpOptimalCost[i])
        flag = i;
        else continue;
    }
    optimalT = tmpOptimalT[flag];
    return optimal_cost;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OBVP问题推导 的相关文章

  • ROS2学习笔记(四)-- 用方向键控制小车行走

    简介 xff1a 在上一节的内容中 xff0c 我们通过ROS2的话题发布功能将小车实时视频信息发布了出来 xff0c 同时使用GUI工具进行查看 xff0c 在这一节内容中 xff0c 我们学习一下如何订阅话题并处理话题消息 xff0c
  • C++实现简单的HTTP客户端(阻塞方式)

    项目中用到的HTTP请求功能 xff0c 自己简单写了个客户端 xff0c 实现了POST方式 xff0c GET方式实现应该也很简单 xff08 空接口已经写好 xff1a 61 xff09 应该支持多线程 xff08 这个很重要 xff
  • WSAWaitForMultipleEvents()

    简述 xff1a 只要指定事件对象中的一个或全部处于有信号状态 xff0c 或者超时间隔到 xff0c 则返回 include lt winsock2 h gt DWORD WSAAPI WSAWaitForMultipleEvents D
  • WSAEnumNetworkEvents()

    WSAEnumNetworkEvents 简述 xff1a 检测所指定的套接口上网络事件的发生 include lt winsock2 h gt int WSAAPI WSAEnumNetworkEvents SOCKET s WSAEVE
  • WSASend()

    WSASend 简述 xff1a 在一个已连接的套接口上发送数据 include lt winsock2 h gt int WSAAPI WSASend SOCKET s LPWSABUF lpBuffers DWORD dwBufferC
  • 临界区

    本文假定您熟悉 Win32 C 43 43 和多线程处理 下载本文的代码 xff1a CriticalSections exe 415KB 摘要 临界区是一种防止多个线程同时执行一个特定代码节的机制 xff0c 这一主题并没有引起太多关注
  • glBegin()用法小结

    glBegin 用法小结 1 在glBegin 和glEnd 之间可调用的函数 函数 函数意义 glVertex 设置顶点坐标 glColor 设置当前颜色 glIndex 设置当前颜色表 glNormal 设置法向坐标 glEvalCoo
  • C++中的显式构造函数

    以两个C 43 43 的小例子来说明怎样通过使用显式构造函数来防止隐式转换 有如下一个简单的复数类 xff1a class ClxComplex public ClxComplex double dReal 61 0 0 double dI
  • 类中的static关键字

    面向对象的static关键字 xff08 类中的static关键字 xff09 1 静态数据成员 在类内数据成员的声明前加上关键字static xff0c 该数据成员就是类内的静态数据成员 先举一个静态数据成员的例子 可以看出 xff0c
  • VS2005 常用快捷键

    2007 04 10 15 32 VS2005 常用快捷键 仁者无敌 2006 08 02 20 20 16 Shift 43 Alt 43 Enter 切换全屏编辑 Ctrl 43 B T Ctrl 43 K K 切换书签开关 Ctrl
  • const

    面向对象是C 43 43 的重要特性 但是c 43 43 在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的 define 以下几点很重要 学不好后果也也很严重 const 1 限定符声明变量只能被读 const in
  • ROS2学习笔记(五)-- ROS2命令行操作常用指令总结(一)

    简介 xff1a 在前面的章节中 xff0c 我们先简单学习了ROS2的话题发布和订阅 xff0c 两种操作都是通过python代码实现的 xff0c 而在实际应用过程中 xff0c 我们会经常用到命令行操作来辅助调试 xff0c 更进一步
  • Ubuntu16.04配置Carla第三方egg库

    背景 CARLA软件是英特尔公司主导的 xff0c 基于虚幻4游戏引擎 xff0c 用于自动驾驶仿真的一款开源仿真软件 xff0c 该软件可以模拟激光雷达 xff0c 摄像头等等自动驾驶中常用的传感器的行为以及获取传感器数据 xff0c 从
  • 串口通信校验方式(even,odd,space,mark)

    无校验 xff08 no parity xff09 奇校验 xff08 odd parity xff09 xff1a 如果字符数据位中 34 1 34 的数目是偶数 xff0c 校验位为 34 1 34 xff0c 如果 34 1 34 的
  • 更改Ubuntu默认python版本的两种方法

    更改Ubuntu默认python版本的两种方法 没找到原文地址 xff0c 作者写的很实用的方法 xff0c 赞一个 当你安装 Debian Linux 时 xff0c 安装过程有可能同时为你提供多个可用的 Python 版本 xff0c
  • Franka+Realsense D435i Ubuntu 20.04-easyHandeye 手眼标定

    使用Panda 43 realsense D435i 43 easyhandeye 43 ROS neotic 全流程记录 安装环节 安装ros安装libfranka安装moveit panda moveit config 安装 visp安
  • CMake教程Step2(添加库)

    CMake官方文档 参考官方cmake3 24教程翻译 https cmake org cmake help v3 24 guide tutorial index html https gitlab kitware com cmake cm
  • ROS rplidar_ros package使用相关说明

    rplidar ros wiki http wiki ros org rplidar ros SDK详解 xff0c 参考blog xff1a https blog csdn net qq 16775293 article details
  • wireshark能抓到数据,调试工具却收不到数据问题

    网上查找原因 xff0c 有各种说法 xff0c 其中有说关闭防火墙的 xff0c 抱着试一试的心态 xff0c 结果成功了 wireshark有数据 xff1a 关闭防火墙 xff1a NetAssist收到数据 xff1a

随机推荐

  • RTKLIB之RTKRCV

    1 options file option file can be saved from rtknavi exe modify the options file to fit for ubuntu system remember to ch
  • 连接跟踪子系统之AF_INET协议族钩子函数

    如笔记连接跟踪子系统之AF INET初始化所述 xff0c 为了支持连接跟踪子系统 xff0c AF INET协议族在4个HOOK点共注册了8个钩子函数 xff0c 每个HOOK点有两个 这些钩子函数可分为入口 xff08 PRE ROUT
  • UML建模详解(9)—Rose将C++代码自动生成UML类图详解

    一 类图 nbsp class diagram nbsp 即 c 中的 class 聚合 nbsp Aggregation nbsp 即我们c 中的引用 表现为 class 头文件中的一个或多个指针成员 组合 nbsp Compositio
  • ROS2学习笔记(十)-- ROS2 launch启动文件

    简介 xff1a 接触过ROS1的同学对launch肯定不陌生 xff0c 在ROS1中 xff0c 我们常用launch实现node和master同时启动 多节点同时启动配置等功能 xff0c ROS2中的launch也是用于多节点启动
  • C++vector的使用总结及常用vector操作

    一 C vector类为内置数组提供了一种替代表示 与string类一样 vector 类是随标准 C 引入的标准库的一部分 使用时需包含头文件 include lt vector gt 二 C vector类有两种使用方式 第一种 STL
  • cc2640 基于官方从机修改的通过手机实现蓝牙点灯例程

    在TI官方从机例程中的simpleBLEPeripheral c进行代码修改 添加引脚驱动头文件 xff1a include lt ti drivers pin PINCC26XX h gt PIN driver 添加全局变量 xff1a
  • cadence 17.0 生成钻孔文件 cam350打不开的问题解决

    17 0生成钻孔文件后 xff0c cam350打不开 这时用记事本打开钻孔文件 对比发现相较于16 6的版本 xff0c 多了以下一行红色高亮的的代码 将其删除就可以用cam350打开了 LEADER 12 HEADER CODE ASC
  • matlab 串口读取设置

    本例代码运行于 MATLAB2015b xff0c 参照网上的代码修改而成 xff0c 可以自定义一次读取的数据 xff0c 并做简单处理 xff0c 随后绘图 实测可用 实用 读串口 clear clc obj 61 serial 39
  • 室内定位综述

    本篇文章是作者研究生毕设的前稿 xff0c 每周更新补充 xff0c 主要是中外关于室内定位的论文综述 xff0c 偏向于TDOA方向 xff0c 也会更新些其他的方向 有不当的地方欢迎有人指正 61 2016 7 20 1 Contrib
  • CC2630 TIMAC协议栈低功耗问题

    项目功能 采集5s数据发送 休眠5s 采集5s数据发送 xff0c 循环往复 平台 CC2630 协议栈 xff1a timac 1 05 02 43299 问题描述 在休眠5s的过程中 xff0c 整体电流在7 8ma xff0c 只比数
  • c++ 大小写转换&&字符转数字

    大小写转换 amp amp 字符转数字 xff0c 实验笔记 int main 其实就是对ASCii表的操作 string s char a 61 39 a 39 int b 61 a 39 0 39 字符转成数字 int c 61 int
  • 数组方式赋值字符串及字面值常量赋值字符串的区别

    c 43 43 实验笔记 数组赋值字符串时需要显示 39 0 39 xff0c 否则在某些时候会有问题 int main const char a 61 39 a 39 39 v 39 39 b 39 39 b 39 39 0 39 数组需
  • STL:: allocator之deallocate & destory的区别与联系

    c 43 43 中的allocator是标准库中的一个类 xff0c 负责内存分配管理 下面是 STL源码剖析 中一个简单allocator实现的部分源代码 xff1a deallocate xff1a template lt class
  • allocator简单实现

    allocator是c 43 43 标准库中用于管理内存的一个类 主要包括以下类方法 xff1a 代码如下 xff08 来源于 STL源码剖析 xff09 xff1a ifndef JJALLOC define JJALLOC includ
  • ROS2学习笔记(十一)-- ROS2 bag数据记录与回放

    简介 xff1a ROS2提供了ros2 bag命令 xff0c 可以记录指定主题的数据到文件中 xff0c 也可以将记录下的内容再发布出来 xff0c 相当于是数据的回放 xff0c 除了通过命令行的方式实现数据记录以外 xff0c 也可
  • Altium Designer 10 导出文件(PDF,gerber,BOM)

    作者 xff1a 卢老师 华清远见嵌入式学院讲师 5 导出原理图文档 GERBER 文件 xff0c BOM对于导出 PDF 文档 xff0c 多人分析时 xff0c 不能保证所有的电脑都安装有 AD10 软件 xff0c 这个也很有必要
  • 纯C++的Socket访问Http封装类

    纯C 43 43 的Socket访问Http封装类 1 项目中要使用c 43 43 43 43 来访问Web服务器 xff0c 从网上找了个C 43 43 的封装类 xff0c 其中调用了MFC xff0c 在VC2005上用能用 xff0
  • 一个C++解析HTML的库

    HTTP协议使用广泛 xff0c 相应的 xff0c C 43 43 在这块需求也开始增加 一个好的解析库可以达到事半功倍的效果 xff0c 在此贴出我的解析库的代码 xff0c 方便新手朋友们使用 hHttpParse h ifndef
  • Intel Realsense D435i SDK Install

    Intel Realsense D435i 0 引言1 参考2 Install3 Other 0 引言 自己买的还没到 xff0c 借的同学 xff0c 生怕给他搞坏了 1 参考 ref0 官方giahubref1 官方Installref
  • OBVP问题推导

    OBVP问题推导 0 引言1 推导2 code 0 引言 记录一下 时间紧张 xff0c 不整理了 xff0c 直接上草稿纸 一元四次方程求解参考博客 1 推导 2 code 代码完全按照推导书写 xff0c 包括变量的命令 span cl