1 Eigen
在Apollo自动驾驶项目中使用了Eigen实现一些坐标变换和矩阵运算,常用的操作如下。
1.1 行数和列数
mat.rows()
是矩阵的行数;
mat.cols()
是矩阵的列数;
注意这两个成员函数都是输出,所以括号里不需要给任何输入。
1.2 取第几行第几列
mat.row(i)
是取第 i
行的所有元素;
mat.col(i)
是取第 i
列的所有元素;
注意这两个与前面的获取行列数不一样,括号里要给行号列号。这两个非常容易记混。
而且如果下标访问越界程序会直接退出,所以要小心。
1.3 std::vector
转Eigen::VectorXd
下面是std::vector
转换成Eigen::VectorXd
的例子,参考自open_space_trajectory_optimizer.cc
。
std::vector x(10,0);
Eigen::VectorXd y = Eigen::Map(x.data(), x.size());
1.4 Eigen::VectorXd
转std::vector
下面是Eigen::VectorXd
转换成std::vector
的例子,参考自open_space_trajectory_optimizer.cc
。
Eigen::VectorXd x;
std::vector y(&x[0], x.data()+x.rows());