作者在第四章结束时提到,本章的GINS没有在ODOM层面进行优化。但是在阅读代码时,优化函数里有添加odom边:
// Odom边
EdgeEncoder3D* edge_odom = nullptr; // 里程计边(约束)
Vec3d vel_world = Vec3d::Zero(); // 世界坐标系下的速度
Vec3d vel_odom = Vec3d::Zero(); // 里程计坐标系(车身坐标系)下的速度
if (last_odom_set_) {
// velocity obs:轮子周长 × 转数 / 时间 = 线速度
double velo_l =
options_.wheel_radius_ * last_odom_.left_pulse_ / options_.circle_pulse_ * 2 * M_PI / options_.odom_span_;
double velo_r =
options_.wheel_radius_ * last_odom_.right_pulse_ / options_.circle_pulse_ * 2 * M_PI / options_.odom_span_;
// 取左右轮速度平均值作为车辆前进速度
double average_vel = 0.5 * (velo_l + velo_r);
vel_odom = Vec3d(average_vel, 0.0, 0.0);
// 将里程计坐标系下的速度转换到世界坐标系下
vel_world = this_frame_->R_ * vel_odom;
edge_odom = new EdgeEncoder3D(v1_vel, vel_world);
edge_odom->setInformation(options_.odom_info_);
optimizer.addEdge(edge_odom);
// 重置odom数据到达标志位,等待最新的odom数据
last_odom_set_ = false;
}
请问专业一点的大佬,第四章是不是一起做了imu、gnss和odom的优化
作者在第四章结束时提到,本章的GINS没有在ODOM层面进行优化。但是在阅读代码时,优化函数里有添加odom边:
请问专业一点的大佬,第四章是不是一起做了imu、gnss和odom的优化