全局规划,一般也叫路线规划(route planning),只考虑路径,不考虑速度;
局部规划,一般也叫运动规划(motion planning)或轨迹规划(trajectory planning),要考虑路径和速度;
局部规划通常有两种分类方式:
一是路径与速度解耦,分为局部路径规划(path planning)和速度规划(speed planning),通常是在路径的规划点上赋上速度值;
二是横向与纵向解耦,分为横向规划(path planning)和纵向规划(path planning)
(三维问题,目前的解决方案是降维+迭代:将三维问题分解为ST和SL二维的优化问题,在一个维度上优化完之后,在另一个维度上再进行优化,最后整合为三维的轨迹,降维后分开求解后合并的解并不是高维下的最优解,但是那样已经足够使用。)
1. 命名空间
在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。
std::cout
:
std::cout
是C++标准库中的输出流对象,代表标准输出(通常是控制台)。cout
意味着 "character output"(字符输出)。std::
是命名空间std
的前缀,表示cout
是属于标准库命名空间的。std::
是必要的前缀,除非你在代码中使用了using namespace std;
语句来省略这个前缀。namespace Apollo
:-
- 定义了一个命名空间
Apollo
,在这个命名空间中定义了一个名为swap
的函数。
- 定义了一个命名空间
-
Apollo::swap
函数:- 这个函数实现了两个整数的交换。函数使用引用参数(
int&
),所以它可以直接修改传入的变量。 - 交换逻辑通过一个临时变量
t
来实现,最后输出 "my swap" 表示这是自定义的交换函数。
- 这个函数实现了两个整数的交换。函数使用引用参数(
2. 容器/哈希表
3.类与对象
有三种权限修饰关键字,
①private内的变量只能在类中使用不可直接在外部域sheep.age = 10,可以通过pubic中的函数调用,如下:
②注意:可以在类内声明函数,类外实现 节省内存, 类外实现注意加类名
注意:由于name为字符串数组,数组名是指针常量,不能通过直接赋值的方式更改其内容//xiYY.name = '',应该用strcpy()
4.
①构造函数的自动调用伴随着新对象的使用,如
int main()
{
Myclass object
}
新对象object被创建,系统自动调用构造函数,若没有写构造函数,系统默认一构造函数
②不可以直接通过对象调用构造函数
object.MyClass非法,
二析构函数
三
三种函数的默认形式:
作用域外实现方法, 类+作用域+构造函数名即类名
5.
静态成员:静态成员函数与静态数据成员
①
属于类,不属于单独对象,类中的任一对象可以使用
②静态成员的声明与实现
类内直接实现 or 类外加作用域实现不用 static
③生命周期长于类,对象
④调用 可以用对象调用 or 类+作用域
将静态数据成员用于构造函数中用于计数。
str = new char[strlen(other.str) + 1];
通过new 分配一块内存作用是在拷贝构造函数中为新对象分配一块与原对象字符串相同大小的动态内存,并为终止符 '\0'
留出空间
堆与栈
堆用delete释放内存
一般使用指针指向开辟新内存 int* ptr = new int;