目录
1 r3live_vio.cpp简介
R3LIVE主要的公式推导在VIO上,所以我们来细细的分析这部分的功能。R3LIVE将VIO分成了两步,一是直接通过帧间的光流来追踪地图点,并且通过最小化追踪到的地图点的PNP投影误差来获取系统状态;二是通过这些地图点的出现的帧到地图的光度误差来优化状态。
2 r3live_vio.cpp源码解析
首先r3live_vio.cpp
中,我们会先通过一个线程来获取图像的信息
void R3LIVE::image_comp_callback( const sensor_msgs::CompressedImageConstPtr &msg )
{
std::unique_lock< std::mutex > lock2( mutex_image_callback );
if ( sub_image_typed == 1 )
{
return; // Avoid subscribe the same image twice.
}
sub_image_typed = 2;
g_received_compressed_img_msg.push_back( msg );
// 如果是第一次收到图片,则启动一个线程
if ( g_flag_if_first_rec_img )
{
g_flag_if_first_rec_img = 0;
// 通过线程池k方法调用service_process_img_buffer函数来处理图像