自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DinnerHowe的博客

DinnerHowe的博客

  • 博客(107)
  • 资源 (4)
  • 收藏
  • 关注

原创 路径规划-bug算法

Bug1算法如图2.1所示,起始点和目标点分别为qstart 和qgoal. 初始时刻 i = 0,令qL0 = qstart ,并称连接qLi 和 qgoal的线段为m-line. 没有遇到障碍时,机器人沿着m-line朝目标qgoal直线移动. 如果遇到障碍,则称点qH1为第一次遇到障碍时的撞击点(hit point). 接着,机器人环绕障碍物移动直至返回 qH1点。然后判断出障碍物周边上离目标最近的点,并移到这个点上,该点称为离开点(leave point),由 qL1表示。从qL1开始机器人再次沿

2020-05-22 19:30:48 2385

原创 math: sigmoid 函数

公式y=11+e−a⋅xy = \frac{1}{1 + e^{-a \cdot x}} y=1+e−a⋅x1​曲线特性物理特性1. 优点:Sigmoid函数的输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层。求导容易。2. 缺点:由于其软饱和性,容易产生梯度消失,导致训练出现问题。其输出并不是以0为中心的。3. 应用:logistic...

2019-07-13 16:54:51 1145

原创 math: 交叉熵(Cross-Entropy)

0. 交叉熵(Cross-Entropy)假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:H(p)=∑ip(i)⋅log⁡(1p(i))H(p)=\sum_{i}{p(i) \cdot \log(\frac{1}{p(i)})}H(p)=i∑​p(i)⋅log(p(i)1​)但是,如果采用错误的分布q...

2019-07-13 16:38:13 588

原创 math:范数的物理意义-1范数,2范数

定义范数,是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小。半范数可以为非零的矢量赋予零长度。- 向量范数1-范数:∣∣x∣∣1=∑i=1N∣xi∣,即向量元素绝对值之和,matlab调用函数norm(x, 1) 。||x||_1 = \sum_{i=1}^N|x_i| \text {,即向量元...

2019-06-18 14:14:32 5288

原创 Mac: 苹果Mac操作系统下怎么显示隐藏文件

MAC中显示隐藏文件有很多种方法,1. Terminal最简单的是通过在Mac终端输入命令。显示隐藏文件(注意空格和大小写):defaults write com.apple.finder AppleShowAllFiles -bool true 或defaults write com.apple.finder AppleShowAllFiles YES不显示隐藏文件:defa...

2018-09-23 16:23:34 27374 1

原创 C++ Use of deleted function error

原因: contains a std::unique_ptr. A std::unique_ptr cannot be copied or contains a std::shared_ptrA std::unique_ptr cannot be copied 解决方法:传入://cpp1A::getPTR(target_class_name)//cpp2...

2018-07-20 23:01:13 17383

原创 c++: cout将bool直接输出为true和false

//---------------------------------------//使用boolalpha输出为bool类型//使用noboolalpha输出为数字类型//--------------------------------------#include "stdafx.h"#include <iostream>using namespace std;...

2018-07-13 09:53:06 24374 1

原创 #undef 的用法及其意义

http://blog.csdn.net/lefter1986/article/details/8562798点击打开链接在Visual Studio2008中编写如下代码: #include <iostream> using namespace std; int main() { #define MODI 10 ...

2018-07-05 13:19:52 15624

原创 math: 判断两个向量之间夹角是逆时针或顺时针

假设有两个二维向量 a 、 b,求向量a到向量b的角度是多少?由向量夹角公式:cos<a,b>=(a.*b)/norm(a)/norm(b);可得弧度: acos(cos<a,b>);此时得到的弧度并没有方向,并不知道是顺时针还算逆时针。逆时针可以想到向量叉乘的右手法则:cross(a,b) = norm(a)*norm(b)*sin<a,b&...

2018-07-05 10:42:59 12817 1

原创 git git-lab merge提交格式

== 提交格式 ==【本次提交】- 修改文件列表: 1. /a.h 2. /b.cpp 3. /c.launch共3个文件有更改。【增加功能和修改项】1.优化: 优化了***;2.新增: 新增***功能 ;3.修复: 解决了***的bug。...

2018-06-23 15:32:07 411

原创 Mac: Mac安装gedit

个人比较喜欢gedit,在从ubuntu转到MAC以后尝试安装了一下。以下是安装步骤: 1. 去官网下载DMG包https://gedit.en.softonic.com/mac,官方DMG的版本是2.30.2,gedit-2.30.2.dmg 2. 下载完毕以后安装。如果喜欢已命令行方式执行可以使用以下方法:a. 跳转到根目录cd ~b. 打开环境配置文件 ,如果没有该文...

2018-06-23 15:27:16 10698 3

原创 c++: c++ auto 详解

C++11 auto auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子: int a = 10; auto au_a = a;//自动类型推断,au_a为int类型 cout << typeid(au_a).name() << endl;typeid运算符可以输出变量的...

2018-06-07 17:53:28 3436

转载 IOS:Xcode - ARKit 开发 - 替换AR中的模型

苹果在 WWDC 上发布了ARKit 全新的AR框架,使得开发者可以更快速的为iphone或ipad 构建增强现实应用,这也毫无疑问的使得ios成为全球最大的AR开发平台。所以了我们也开设了ARkit技术分享与开发教程这一全新系列帮助大家更好的了解ARKit。这一次给大家带来 通过Xcode快速的为iphone或ipad构建AR应用(翻译并整理于:https://next.reality.news...

2018-05-31 16:24:39 3416 2

原创 c++: c++ cmakelist 详解

基本元素首先cmaklist必须包括以下几个部分:#工程名project(study_case)#cmake最低版本需求cmake_minimum_required(VERSION 2.8.3)#添加添加需要的库set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/share/OpenCV")find_package(O...

2018-05-25 18:41:07 4197

原创 c++: c++ csignal使用

signal()是一种系统调用,用于通知运行时系统,当某种特定的“软件中断”发生时调用特定的程序。它的真正的名字应该是:Call_that_routine_when_this_interrupt_Comes_in (当该中断发生时调用那个程序),调用signal()函数,并通过参数传递告诉它终端类型以及用于处理中断的程序。ANSIC 标准中,signal() 函数的声明如下:void...

2018-05-25 17:30:07 2672

原创 路径规划: PRM 路径规划算法 (Probabilistic Roadmaps 随机路标图)

路径规划作为机器人完成各种任务的基础,一直是研究的热点。研究人员提出了许多规划方法如: 1. 人工势场法 2. 单元分解法 3. 随机路标图(PRM)法 4. 快速搜索树(RRT)法等。传统的人工势场、单元分解法需...

2018-05-11 16:15:50 13585

原创 math: 四元数与欧拉角(RPY角)的相互转换

1 四元数1.1 理论基础在我们能够完全理解四元数之前,我们必须先知道四元数是怎么来的。四元数的根源其实是复数。四元数的概念是由爱尔兰数学家Sir William Rowan Hamilton发明的, 公式是: i2=j2=k2=ijk=−1i2=j2=k2=ijk=−1i^2 = j^2 = k^2 = ijk = -1 一般表达式: q=w+xi+yj+zkq=w+xi+...

2018-04-27 14:51:25 7137

原创 路径规划: 局部路径规划 - 动态窗口法(dynamic window approach)

简介在ROS中有很多种局部路径的规划方法,这里来介绍动态窗口法(dynamic window approach)。动态窗口法是 Dieter Fox, Wolfram Burgard, 和 Sebastian Thrun在1997年提出的”The dynamic window approach to collision avoidance“,一种在线避障策略,该策略将栅格地图中planner生...

2018-04-27 14:21:53 10088 1

原创 Mac: Mac 截长屏

如下图所示:推荐snip,超级好用

2018-04-24 21:47:28 4934

原创 git 如何批量删除本地所有未提交的更改

想问下大家git如何删除本地所有未提交的更改,包括修改的、新增的、删除的,还有一些编译生成的临时文件。就是回到上一版本的干净状态。我查了下有两个相关的命令: git clean -df git reset --hard但问题是第一个命令 只删除所有untracked的文件,如果文件已经被tracked, 修改过的文件不会被回退。而第二个命令只把tracked的文件revert到前一个...

2018-04-24 14:29:57 5408

原创 ROS:ROS多线程订阅消息(ros::asyncspinner)

对于一些只订阅一个话题的简单节点来说,我们使用ros::spin()进入接收循环,每当有订阅的话题发布时,进入回调函数接收和处理消息数据。但是更多的时候,一个节点往往要接收和处理不同来源的数据,并且这些数据的产生频率也各不相同,当我们在一个回调函数里耗费太多时间时,会导致其他回调函数被阻塞,导致数据丢失。这种场合需要给一个节点开辟多个线程,保证数据流的畅通。 为了观察不同话题的消息被阻塞的情况,可...

2018-04-23 08:03:44 6436

原创 c++: c++ unique_ptr使用

unique_ptr使用场景1、为动态申请的资源提供异常安全保证我们先来看看下面这一段代码:void Func(){ int *p = new int(5); // ...(可能会抛出异常) delete p;}这是我们传统的写法:当我们动态申请内存后,有可能我们接下来的代码由于抛出异常或者提前退出(if语句)而没有执行delete操作。解决的方法是使用unique...

2018-04-16 23:02:30 4585

原创 c++: C++中的explicit

定义C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色:是个构造器是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器,创建一个AAA的对象。 这样看起来好象很酷, 很方便。 但在某些情况下(见...

2018-04-16 22:13:34 257

原创 路径规划: PRM路径规划算法

路径规划作为机器人完成各种任务的基础,一直是研究的热点。研究人员提出了许多规划方法:如人工势场法、单元分解法、随机路标图(PRM)法、快速搜索树(RRT)法等。传统的人工势场、单元分解法需要对空间中的障碍物进行精确建模,当环境中的障碍物较为复杂时,将导致规划算法计算量较大。基于随机采样技术的PRM法可以有效解决高维空间和复杂约束中的路径规划问题。  PRM是一种基于图搜索的方法,它将连续空间转换成...

2018-04-16 20:00:52 6284 1

转载 math: 凸函数、拟凸函数和保凸运算

这一节主要学习凸函数的定义以及性质。了解保凸运算,以及上镜图与下水平集等。这些基础知识看似零乱,然而却是后面的基础。特别是,在实际应用中如果我们能把一个问题转化为凸优化问题,是非常好的一步。而能够这样做的前提,是知道基本的函数的凸性以及有哪些保凸运算。上镜图有助于我们从集合的角度理解这个函数为什么是凸的(集合的保凸运算);水平集是以函数的形式表示集合,类似于等高线,在历史上是重要的方法。这里我们通...

2018-04-16 14:20:27 7074 1

原创 c++:strcpy函数的实现 - 字符串拷贝

已知strcpy函数的原型是:char *strcpy(char *dst, const char *src);实现strcpy函数: 1. 解释为什么要返回char * 2. 假如考虑dst和src内存重叠的情况,strcpy该怎么实现1. 实现:char * strcpy(char *dst,const char *src){ assert(dst != ...

2018-04-16 14:08:21 15917

原创 百度apollo - Apollo代码解析:4. control模块

0. 简介:阅读本章之前默认已经阅读了:百度apollo - Apollo代码解析:3. 命令行参数传递google gflags百度apollo - Apollo代码解析:2. log系统google glogPS: 代码注释github:https://github.com/DinnerHowe/apollo_read首先来看看整体的逻辑图:由此可知plannin...

2018-04-16 10:44:45 8885 1

原创 百度apollo - Apollo对ROS优化总结

0. 简介百度的Apollo主要的改进点有如下几个部分: 通信性能优化通信性能优化 -> 共享内存能减少传输中的数据拷贝,显著提升传输效率去中心化的网络拓扑 -> 使用RTPS服务发现协议实现完全的P2P网络拓扑数据兼容性扩展 -> protobuf能够很好支持向后兼容1. Apollo对ROS优化总结1.1 关于通信性能优化通信性能优化过程中通...

2018-04-13 22:23:40 8070

原创 百度apollo - Apollo简介:2. 安装以及运行

1. 安装Ubuntu14.04, pass。2. 安装Ros-indigo2.1 添加源sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'wget http://packages.ros...

2018-04-13 21:15:14 5926 1

原创 c++: C++中重载和覆盖的区别

1. 重载(overload)理论函数组成一般格式是:return_type function_name( parameter list )重载指的是函数具有的不同的参数或者不同返回值,而函数名必须相同的函数。简单说出了function_name其他都可以不同:重载要求输入参数列表或者返回值必须不同比如: – 输入参数的类型不同,或者同时(输出返回值不同) – ...

2018-04-13 17:01:49 448

原创 c++: C++虚函数和纯虚函数

纯虚函数定义纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类(继承类)都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加=0。 定义纯虚函数的目的在于,使派生类仅仅只是继承函数的接口。格式virtual <函数返回类型> 函数名 (参数表) = 0;例子class A{public: virtual vo...

2018-04-13 15:06:32 374

原创 c++: C++ 基类-继承-单继承-多继承

1. 基类官方解释是:在面向对象设计中,被定义为包含所有实体共性的class类型,被称为“基类”。 这个解释通俗的说就是:里面有public和private或者protected之类具体函数和变量定义的类,例如:class Base{ public: void f(int x){ cout << "Base::f(int) " << ...

2018-04-13 11:32:10 1645

原创 c++: C++ auto 关键字的使用

auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子:int a = 10;auto au_a = a;//自动类型推断,au_a为int类型cout << typeid(au_a).name() << endl;typeid运算符可以输出变量的类型。程序的运行结果输出了int这种用法...

2018-04-12 16:47:27 403

原创 百度apollo - Apollo代码解析:3. 命令行参数传递google gflags

简介在百度Apollo中gflag被广泛的应用在各种全局变量中,例如节点名,变量名,各种状态标志中。gflags 是google开源的一套命令行参数解析工具,比 getopt 功能更加强大,使用起来更加方便。什么是 命令行参数解析工具 呢? 这里拿python做例子,例如:python test.py cmd1 cmd2 其中cmd1和cmd2 就是命令行参数,gflags就是用来解析...

2018-04-12 14:22:54 2994

原创 百度apollo - Apollo代码解析:2. log系统google glog

Apollo中的glog在Apollo中google glog 被广泛使用,glog 是 google 的一个 c++ 开源日志系统,轻巧灵活,入门简单,而且功能也比较完善。1. 安装以下是官方的安装方法,一句命令:git clone https://github.com/google/glog.gitcd glog ./autogen.sh && ./...

2018-04-12 11:59:35 2716

转载 c++: C++ Virtual详解

Virtual是C++ OO机制中很重要的一个关键字。如下所示:只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如下面例子中的函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的p...

2018-04-11 22:38:58 419

转载 Mac: Mac os x 设置终端快捷键

大家都知道在linux下可以用ctr+alt+t组合快捷来打开终端,那么在OS X上可以吗?答案是肯定的,其实OS X上很多功能都可以通过Apple自家的Automator.app创建,且使用此方法可以为任何程序创建快捷键。废话少说,下面给大家演示一下:思路是这样的(分三步完成):第一步在Automator.app中创建一个AppleScript;第二步安装AppleScript服务;第三...

2018-04-08 18:36:49 938

转载 路径规划: 模型预测控制(MPC,Model Predictive Control)mark

发展历史 20世纪70年代后期,一类新型的计算机控制算法出现在美法等国的工业过程领域,如动态矩阵控制(DMC,Dynamic Matrix Control)、模型算法控制(MAC,Model Algorithm Control)。1987年,首次有学者阐述了该系列算法的动因、机理及其在控制工业中的控制效果。自此,预测控制(Predictive Control)开始出现在控制领域中。 现在我们所说的...

2018-04-08 12:01:50 12437

原创 Bazel: 2. 文件系统

和ROS一样bazel也有自己的文件系统:参考网址 - https://docs.bazel.build/versions/master/tutorial/cpp.html参考代码 - https://github.com/bazelbuild/examples/所有的Bazel构建都是在一个工作空间的,它是文件系统中一个保存全部源代码的目录,同时还将包含一些构建后的输出目录的符号链接(例如:ba...

2018-04-08 12:00:25 443

原创 Mac: 终端里面显示branch名字

确认 mac os 已经显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder打开 /Users 下的 .bash_profile 在里面加入以下语句parse_git_branch() {git branch 2> /dev/null | sed -...

2018-04-08 11:59:05 966

算法设计技巧与分析中文版

算法设计技巧与分析中文版

2016-09-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除