日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeGo-LOAM激光雷达定位算法源码阅读(二)

發布時間:2023/12/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeGo-LOAM激光雷达定位算法源码阅读(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1.featureAssociation框架
    • 1.1節點代碼主體
    • 1.2 FeatureAssociation構造函數
    • 1.3 runFeatureAssociation()主體函數
  • 2.重要函數
    • 2.1 laserCloudHandler
    • 2.2 laserCloudInfoHandler
    • 2.3 outlierCloudHandler
    • 2.4 imuHandler
    • 2.5 adjustDistortion
    • 2.6 calculateSmoothness
    • 2.7 markOccludedPoints
    • 2.8 extractFeatures
    • 2.9 updateInitialGuess
    • 2.10 updateTransformation
    • 2.11 integrateTransformation

無人駕駛算法學習(九):LeGo-LOAM激光雷達定位算法
LeGo-LOAM激光雷達定位算法源碼閱讀(一)

1.featureAssociation框架

1.1節點代碼主體

int main(int argc, char** argv) {ros::init(argc, argv, "lego_loam");ROS_INFO("\033[1;32m---->\033[0m Feature Association Started.");FeatureAssociation FA;//調用構造函數ros::Rate rate(200);while (ros::ok()){ros::spinOnce();FA.runFeatureAssociation();//200hz調用主體函數rate.sleep();}ros::spin();return 0; }

1.2 FeatureAssociation構造函數

作用:訂閱分割點云和imu數據,存成類成員變量,為runFeatureAssociation()處理新數據做準備

//訂閱話題:"/segmented_cloud"(sensor_msgs::PointCloud2),數據處理函數laserCloudHandler"/segmented_cloud_info"(cloud_msgs::cloud_info),數據處理函數laserCloudInfoHandler"/outlier_cloud"(sensor_msgs::PointCloud2),數據處理函數outlierCloudHandlerimuTopic = "/imu/data"(sensor_msgs::Imu),數據處理函數imuHandler//發布話題,這些topic有:"/laser_cloud_sharp"(sensor_msgs::PointCloud2)"/laser_cloud_less_sharp"(sensor_msgs::PointCloud2)"/laser_cloud_flat"(sensor_msgs::PointCloud2)"/laser_cloud_less_flat"(sensor_msgs::PointCloud2)"/laser_cloud_corner_last"(sensor_msgs::PointCloud2)"/laser_cloud_surf_last"(cloud_msgs::cloud_info)"/outlier_cloud_last"(sensor_msgs::PointCloud2)"/laser_odom_to_init"(nav_msgs::Odometry)

1.3 runFeatureAssociation()主體函數

作用:特征提取和配準的主體

void runFeatureAssociation(){// 如果有新數據進來則執行,否則不執行任何操作if (newSegmentedCloud && newSegmentedCloudInfo && newOutlierCloud &&std::abs(timeNewSegmentedCloudInfo - timeNewSegmentedCloud) < 0.05 &&std::abs(timeNewOutlierCloud - timeNewSegmentedCloud) < 0.05){newSegmentedCloud = false;newSegmentedCloudInfo = false;newOutlierCloud = false;}else{return;}// 點云形狀調整 //主要進行的處理是將點云數據進行坐標變換,進行插補等工作adjustDistortion();// 計算曲率,并保存結果calculateSmoothness();// 標記瑕點,loam中:1.平行scan的點(可能看不見);2.會被遮擋的點markOccludedPoints();// 特征提取// 點云分類,然后分別保存到cornerPointsSharp等等隊列// 這一步中減少了點云數量,使計算量減少extractFeatures();// 發布cornerPointsSharp等4種類型的點云數據publishCloud();if (!systemInitedLM) {checkSystemInitialization();return;}// 預測位姿updateInitialGuess();// 更新變換updateTransformation();// 積分總變換integrateTransformation();publishOdometry();publishCloudsLast(); }

2.重要函數

2.1 laserCloudHandler

訂閱 "/segmented_cloud"的回調函數
作用:laserCloudHandler修改點云數據的時間戳,將點云數據從ROS定義的格式轉化到pcl的格式。
pcl::fromROSMsg(*laserCloudMsg, *segmentedCloud);

2.2 laserCloudInfoHandler

訂閱 "/segmented_cloud_info"的觸發回調函數laserCloudInfoHandler
newSegmentedCloudInfo = true;
作用:為runFeatureAssociation()做準備

2.3 outlierCloudHandler

訂閱 "/outlier_cloud"的回調函數
pcl::fromROSMsg(*msgIn, *outlierCloud); newOutlierCloud = true;
作用:為runFeatureAssociation()做準備

2.4 imuHandler

LOAM代碼里的那個重要函數

void imuHandler(const sensor_msgs::Imu::ConstPtr& imuIn){//通過接收到的imuIn里面的四元素得到roll,pitch,yaw三個角double roll, pitch, yaw;tf::Quaternion orientation;tf::quaternionMsgToTF(imuIn->orientation, orientation);tf::Matrix3x3(orientation).getRPY(roll, pitch, yaw);// 加速度去除重力影響,同時坐標軸進行變換float accX = imuIn->linear_acceleration.y - sin(roll) * cos(pitch) * 9.81;float accY = imuIn->linear_acceleration.z - cos(roll) * cos(pitch) * 9.81;float accZ = imuIn->linear_acceleration.x + sin(pitch) * 9.81;//將歐拉角,加速度,速度保存到循環隊列中imuPointerLast = (imuPointerLast + 1) % imuQueLength;imuTime[imuPointerLast] = imuIn->header.stamp.toSec();imuRoll[imuPointerLast] = roll;imuPitch[imuPointerLast] = pitch;imuYaw[imuPointerLast] = yaw;imuAccX[imuPointerLast] = accX;imuAccY[imuPointerLast] = accY;imuAccZ[imuPointerLast] = accZ;imuAngularVeloX[imuPointerLast] = imuIn->angular_velocity.x;imuAngularVeloY[imuPointerLast] = imuIn->angular_velocity.y;imuAngularVeloZ[imuPointerLast] = imuIn->angular_velocity.z;//對速度,角速度,加速度進行積分,得到位移,角度和速度AccumulateIMUShiftAndRotation();}

2.5 adjustDistortion

void adjustDistortion(){bool halfPassed = false;int cloudSize = segmentedCloud->points.size();PointType point;for (int i = 0; i < cloudSize; i++) {// 這里xyz與laboshin_loam代碼中的一樣經過坐標軸變換// imuhandler() 中相同的坐標變換point.x = segmentedCloud->points[i].y;point.y = segmentedCloud->points[i].z;point.z = segmentedCloud->points[i].x;// -atan2(p.x,p.z)==>-atan2(y,x)// ori表示的是偏航角yaw,因為前面有負號,ori=[-M_PI,M_PI)// 因為segInfo.orientationDiff表示的范圍是(PI,3PI),在2PI附近// 下面過程的主要作用是調整ori大小,滿足start<ori<endfloat ori = -atan2(point.x, point.z);if (!halfPassed) {if (ori < segInfo.startOrientation - M_PI / 2)// start-ori>M_PI/2,說明ori小于start,不合理,// 正常情況在前半圈的話,ori-stat范圍[0,M_PI]ori += 2 * M_PI;else if (ori > segInfo.startOrientation + M_PI * 3 / 2)// ori-start>3/2*M_PI,說明ori太大,不合理ori -= 2 * M_PI;if (ori - segInfo.startOrientation > M_PI)halfPassed = true;} else {ori += 2 * M_PI;if (ori < segInfo.endOrientation - M_PI * 3 / 2)// end-ori>3/2*PI,ori太小ori += 2 * M_PI;else if (ori > segInfo.endOrientation + M_PI / 2)// ori-end>M_PI/2,太大ori -= 2 * M_PI;}// 用 point.intensity 來保存時間float relTime = (ori - segInfo.startOrientation) / segInfo.orientationDiff;point.intensity = int(segmentedCloud->points[i].intensity) + scanPeriod * relTime;if (imuPointerLast >= 0) {float pointTime = relTime * scanPeriod;imuPointerFront = imuPointerLastIteration;// while循環內進行時間軸對齊while (imuPointerFront != imuPointerLast) {if (timeScanCur + pointTime < imuTime[imuPointerFront]) {break;}imuPointerFront = (imuPointerFront + 1) % imuQueLength;}if (timeScanCur + pointTime > imuTime[imuPointerFront]) {// 該條件內imu數據比激光數據早,但是沒有更后面的數據// (打個比方,激光在9點時出現,imu現在只有8點的)// 這種情況上面while循環是以imuPointerFront == imuPointerLast結束的imuRollCur = imuRoll[imuPointerFront];imuPitchCur = imuPitch[imuPointerFront];imuYawCur = imuYaw[imuPointerFront];imuVeloXCur = imuVeloX[imuPointerFront];imuVeloYCur = imuVeloY[imuPointerFront];imuVeloZCur = imuVeloZ[imuPointerFront];imuShiftXCur = imuShiftX[imuPointerFront];imuShiftYCur = imuShiftY[imuPointerFront];imuShiftZCur = imuShiftZ[imuPointerFront]; } else {// 在imu數據充足的情況下可以進行插補// 當前timeScanCur + pointTime < imuTime[imuPointerFront],// 而且imuPointerFront是最早一個時間大于timeScanCur + pointTime的imu數據指針int imuPointerBack = (imuPointerFront + imuQueLength - 1) % imuQueLength;float ratioFront = (timeScanCur + pointTime - imuTime[imuPointerBack]) / (imuTime[imuPointerFront] - imuTime[imuPointerBack]);float ratioBack = (imuTime[imuPointerFront] - timeScanCur - pointTime) / (imuTime[imuPointerFront] - imuTime[imuPointerBack]);// 通過上面計算的ratioFront以及ratioBack進行插補// 因為imuRollCur和imuPitchCur通常都在0度左右,變化不會很大,因此不需要考慮超過2M_PI的情況// imuYaw轉的角度比較大,需要考慮超過2*M_PI的情況imuRollCur = imuRoll[imuPointerFront] * ratioFront + imuRoll[imuPointerBack] * ratioBack;imuPitchCur = imuPitch[imuPointerFront] * ratioFront + imuPitch[imuPointerBack] * ratioBack;if (imuYaw[imuPointerFront] - imuYaw[imuPointerBack] > M_PI) {imuYawCur = imuYaw[imuPointerFront] * ratioFront + (imuYaw[imuPointerBack] + 2 * M_PI) * ratioBack;} else if (imuYaw[imuPointerFront] - imuYaw[imuPointerBack] < -M_PI) {imuYawCur = imuYaw[imuPointerFront] * ratioFront + (imuYaw[imuPointerBack] - 2 * M_PI) * ratioBack;} else {imuYawCur = imuYaw[imuPointerFront] * ratioFront + imuYaw[imuPointerBack] * ratioBack;}// imu速度插補imuVeloXCur = imuVeloX[imuPointerFront] * ratioFront + imuVeloX[imuPointerBack] * ratioBack;imuVeloYCur = imuVeloY[imuPointerFront] * ratioFront + imuVeloY[imuPointerBack] * ratioBack;imuVeloZCur = imuVeloZ[imuPointerFront] * ratioFront + imuVeloZ[imuPointerBack] * ratioBack;// imu位置插補imuShiftXCur = imuShiftX[imuPointerFront] * ratioFront + imuShiftX[imuPointerBack] * ratioBack;imuShiftYCur = imuShiftY[imuPointerFront] * ratioFront + imuShiftY[imuPointerBack] * ratioBack;imuShiftZCur = imuShiftZ[imuPointerFront] * ratioFront + imuShiftZ[imuPointerBack] * ratioBack;}if (i == 0) {// 此處更新過的角度值主要用在updateImuRollPitchYawStartSinCos()中,// 更新每個角的正余弦值imuRollStart = imuRollCur;imuPitchStart = imuPitchCur;imuYawStart = imuYawCur;imuVeloXStart = imuVeloXCur;imuVeloYStart = imuVeloYCur;imuVeloZStart = imuVeloZCur;imuShiftXStart = imuShiftXCur;imuShiftYStart = imuShiftYCur;imuShiftZStart = imuShiftZCur;if (timeScanCur + pointTime > imuTime[imuPointerFront]) {// 該條件內imu數據比激光數據早,但是沒有更后面的數據imuAngularRotationXCur = imuAngularRotationX[imuPointerFront];imuAngularRotationYCur = imuAngularRotationY[imuPointerFront];imuAngularRotationZCur = imuAngularRotationZ[imuPointerFront];}else{// 在imu數據充足的情況下可以進行插補int imuPointerBack = (imuPointerFront + imuQueLength - 1) % imuQueLength;float ratioFront = (timeScanCur + pointTime - imuTime[imuPointerBack]) / (imuTime[imuPointerFront] - imuTime[imuPointerBack]);float ratioBack = (imuTime[imuPointerFront] - timeScanCur - pointTime) / (imuTime[imuPointerFront] - imuTime[imuPointerBack]);imuAngularRotationXCur = imuAngularRotationX[imuPointerFront] * ratioFront + imuAngularRotationX[imuPointerBack] * ratioBack;imuAngularRotationYCur = imuAngularRotationY[imuPointerFront] * ratioFront + imuAngularRotationY[imuPointerBack] * ratioBack;imuAngularRotationZCur = imuAngularRotationZ[imuPointerFront] * ratioFront + imuAngularRotationZ[imuPointerBack] * ratioBack;}// 距離上一次插補,旋轉過的角度變化值imuAngularFromStartX = imuAngularRotationXCur - imuAngularRotationXLast;imuAngularFromStartY = imuAngularRotationYCur - imuAngularRotationYLast;imuAngularFromStartZ = imuAngularRotationZCur - imuAngularRotationZLast;imuAngularRotationXLast = imuAngularRotationXCur;imuAngularRotationYLast = imuAngularRotationYCur;imuAngularRotationZLast = imuAngularRotationZCur;// 這里更新的是i=0時刻的rpy角,后面將速度坐標投影過來會用到i=0時刻的值updateImuRollPitchYawStartSinCos();} else {// 速度投影到初始i=0時刻VeloToStartIMU();// 將點的坐標變換到初始i=0時刻TransformToStartIMU(&point);}}segmentedCloud->points[i] = point;}imuPointerLastIteration = imuPointerLast;}

2.6 calculateSmoothness

// 計算光滑性,這里的計算沒有完全按照公式進行,// 缺少除以總點數i和r[i]void calculateSmoothness(){int cloudSize = segmentedCloud->points.size();for (int i = 5; i < cloudSize - 5; i++) {float diffRange = segInfo.segmentedCloudRange[i-5] + segInfo.segmentedCloudRange[i-4]+ segInfo.segmentedCloudRange[i-3] + segInfo.segmentedCloudRange[i-2]+ segInfo.segmentedCloudRange[i-1] - segInfo.segmentedCloudRange[i] * 10+ segInfo.segmentedCloudRange[i+1] + segInfo.segmentedCloudRange[i+2]+ segInfo.segmentedCloudRange[i+3] + segInfo.segmentedCloudRange[i+4]+ segInfo.segmentedCloudRange[i+5]; cloudCurvature[i] = diffRange*diffRange;// 在markOccludedPoints()函數中對該參數進行重新修改cloudNeighborPicked[i] = 0;// 在extractFeatures()函數中會對標簽進行修改,// 初始化為0,surfPointsFlat標記為-1,surfPointsLessFlatScan為不大于0的標簽// cornerPointsSharp標記為2,cornerPointsLessSharp標記為1cloudLabel[i] = 0;cloudSmoothness[i].value = cloudCurvature[i];cloudSmoothness[i].ind = i;}}

2.7 markOccludedPoints

// 阻塞點指點云之間相互遮擋,而且又靠得很近的點void markOccludedPoints(){int cloudSize = segmentedCloud->points.size();for (int i = 5; i < cloudSize - 6; ++i){float depth1 = segInfo.segmentedCloudRange[i];float depth2 = segInfo.segmentedCloudRange[i+1];int columnDiff = std::abs(int(segInfo.segmentedCloudColInd[i+1] - segInfo.segmentedCloudColInd[i]));if (columnDiff < 10){// 選擇距離較遠的那些點,并將他們標記為1if (depth1 - depth2 > 0.3){cloudNeighborPicked[i - 5] = 1;cloudNeighborPicked[i - 4] = 1;cloudNeighborPicked[i - 3] = 1;cloudNeighborPicked[i - 2] = 1;cloudNeighborPicked[i - 1] = 1;cloudNeighborPicked[i] = 1;}else if (depth2 - depth1 > 0.3){cloudNeighborPicked[i + 1] = 1;cloudNeighborPicked[i + 2] = 1;cloudNeighborPicked[i + 3] = 1;cloudNeighborPicked[i + 4] = 1;cloudNeighborPicked[i + 5] = 1;cloudNeighborPicked[i + 6] = 1;}}float diff1 = std::abs(segInfo.segmentedCloudRange[i-1] - segInfo.segmentedCloudRange[i]);float diff2 = std::abs(segInfo.segmentedCloudRange[i+1] - segInfo.segmentedCloudRange[i]);// 選擇距離變化較大的點,并將他們標記為1if (diff1 > 0.02 * segInfo.segmentedCloudRange[i] && diff2 > 0.02 * segInfo.segmentedCloudRange[i])cloudNeighborPicked[i] = 1;}}

2.8 extractFeatures

void extractFeatures(){cornerPointsSharp->clear();cornerPointsLessSharp->clear();surfPointsFlat->clear();surfPointsLessFlat->clear();for (int i = 0; i < N_SCAN; i++) {surfPointsLessFlatScan->clear();for (int j = 0; j < 6; j++) {// sp和ep的含義是什么???startPointer,endPointer?int sp = (segInfo.startRingIndex[i] * (6 - j) + segInfo.endRingIndex[i] * j) / 6;int ep = (segInfo.startRingIndex[i] * (5 - j) + segInfo.endRingIndex[i] * (j + 1)) / 6 - 1;if (sp >= ep)continue;// 按照cloudSmoothness.value從小到大排序std::sort(cloudSmoothness.begin()+sp, cloudSmoothness.begin()+ep, by_value());int largestPickedNum = 0;for (int k = ep; k >= sp; k--) {// 每次ind的值就是等于k??? 有什么意義?// 因為上面對cloudSmoothness進行了一次從小到大排序,所以ind不一定等于k了int ind = cloudSmoothness[k].ind;if (cloudNeighborPicked[ind] == 0 &&cloudCurvature[ind] > edgeThreshold &&segInfo.segmentedCloudGroundFlag[ind] == false) {largestPickedNum++;if (largestPickedNum <= 2) {// 論文中nFe=2,cloudSmoothness已經按照從小到大的順序排列,// 所以這邊只要選擇最后兩個放進隊列即可// cornerPointsSharp標記為2cloudLabel[ind] = 2;cornerPointsSharp->push_back(segmentedCloud->points[ind]);cornerPointsLessSharp->push_back(segmentedCloud->points[ind]);} else if (largestPickedNum <= 20) {// 塞20個點到cornerPointsLessSharp中去// cornerPointsLessSharp標記為1cloudLabel[ind] = 1;cornerPointsLessSharp->push_back(segmentedCloud->points[ind]);} else {break;}cloudNeighborPicked[ind] = 1;for (int l = 1; l <= 5; l++) {// 從ind+l開始后面5個點,每個點index之間的差值,// 確保columnDiff<=10,然后標記為我們需要的點int columnDiff = std::abs(int(segInfo.segmentedCloudColInd[ind + l] - segInfo.segmentedCloudColInd[ind + l - 1]));if (columnDiff > 10)break;cloudNeighborPicked[ind + l] = 1;}for (int l = -1; l >= -5; l--) {// 從ind+l開始前面五個點,計算差值然后標記int columnDiff = std::abs(int(segInfo.segmentedCloudColInd[ind + l] - segInfo.segmentedCloudColInd[ind + l + 1]));if (columnDiff > 10)break;cloudNeighborPicked[ind + l] = 1;}}}int smallestPickedNum = 0;for (int k = sp; k <= ep; k++) {int ind = cloudSmoothness[k].ind;// 平面點只從地面點中進行選擇? 為什么要這樣做?if (cloudNeighborPicked[ind] == 0 &&cloudCurvature[ind] < surfThreshold &&segInfo.segmentedCloudGroundFlag[ind] == true) {cloudLabel[ind] = -1;surfPointsFlat->push_back(segmentedCloud->points[ind]);// 論文中nFp=4,將4個最平的平面點放入隊列中smallestPickedNum++;if (smallestPickedNum >= 4) {break;}cloudNeighborPicked[ind] = 1;for (int l = 1; l <= 5; l++) {// 從前面往后判斷是否是需要的鄰接點,是的話就進行標記int columnDiff = std::abs(int(segInfo.segmentedCloudColInd[ind + l] - segInfo.segmentedCloudColInd[ind + l - 1]));if (columnDiff > 10)break;cloudNeighborPicked[ind + l] = 1;}for (int l = -1; l >= -5; l--) {// 從后往前開始標記int columnDiff = std::abs(int(segInfo.segmentedCloudColInd[ind + l] - segInfo.segmentedCloudColInd[ind + l + 1]));if (columnDiff > 10)break;cloudNeighborPicked[ind + l] = 1;}}}for (int k = sp; k <= ep; k++) {if (cloudLabel[k] <= 0) {surfPointsLessFlatScan->push_back(segmentedCloud->points[k]);}}}// surfPointsLessFlatScan中有過多的點云,如果點云太多,計算量太大// 進行下采樣,可以大大減少計算量surfPointsLessFlatScanDS->clear();downSizeFilter.setInputCloud(surfPointsLessFlatScan);downSizeFilter.filter(*surfPointsLessFlatScanDS);*surfPointsLessFlat += *surfPointsLessFlatScanDS;}}

2.9 updateInitialGuess

void updateInitialGuess(){imuPitchLast = imuPitchCur;imuYawLast = imuYawCur;imuRollLast = imuRollCur;imuShiftFromStartX = imuShiftFromStartXCur;imuShiftFromStartY = imuShiftFromStartYCur;imuShiftFromStartZ = imuShiftFromStartZCur;imuVeloFromStartX = imuVeloFromStartXCur;imuVeloFromStartY = imuVeloFromStartYCur;imuVeloFromStartZ = imuVeloFromStartZCur;// 關于下面負號的說明:// transformCur是在Cur坐標系下的 p_start=R*p_cur+t// R和t是在Cur坐標系下的// 而imuAngularFromStart是在start坐標系下的,所以需要加負號if (imuAngularFromStartX != 0 || imuAngularFromStartY != 0 || imuAngularFromStartZ != 0){transformCur[0] = - imuAngularFromStartY;transformCur[1] = - imuAngularFromStartZ;transformCur[2] = - imuAngularFromStartX;}// 速度乘以時間,當前變換中的位移if (imuVeloFromStartX != 0 || imuVeloFromStartY != 0 || imuVeloFromStartZ != 0){transformCur[3] -= imuVeloFromStartX * scanPeriod;transformCur[4] -= imuVeloFromStartY * scanPeriod;transformCur[5] -= imuVeloFromStartZ * scanPeriod;}}

2.10 updateTransformation

void updateTransformation(){if (laserCloudCornerLastNum < 10 || laserCloudSurfLastNum < 100)return;for (int iterCount1 = 0; iterCount1 < 25; iterCount1++) {laserCloudOri->clear();coeffSel->clear();// 找到對應的特征平面// 然后計算協方差矩陣,保存在coeffSel隊列中// laserCloudOri中保存的是對應于coeffSel的未轉換到開始時刻的原始點云數據findCorrespondingSurfFeatures(iterCount1);if (laserCloudOri->points.size() < 10)continue;// 通過面特征的匹配,計算變換矩陣if (calculateTransformationSurf(iterCount1) == false)break;}for (int iterCount2 = 0; iterCount2 < 25; iterCount2++) {laserCloudOri->clear();coeffSel->clear();// 找到對應的特征邊/角點// 尋找邊特征的方法和尋找平面特征的很類似,過程可以參照尋找平面特征的注釋findCorrespondingCornerFeatures(iterCount2);if (laserCloudOri->points.size() < 10)continue;// 通過角/邊特征的匹配,計算變換矩陣if (calculateTransformationCorner(iterCount2) == false)break;}}

2.11 integrateTransformation

// 旋轉角的累計變化量void integrateTransformation(){float rx, ry, rz, tx, ty, tz; // AccumulateRotation作用// 將計算的兩幀之間的位姿“累加”起來,獲得相對于第一幀的旋轉矩陣// transformSum + (-transformCur) =(rx,ry,rz)AccumulateRotation(transformSum[0], transformSum[1], transformSum[2], -transformCur[0], -transformCur[1], -transformCur[2], rx, ry, rz);// 進行平移分量的更新float x1 = cos(rz) * (transformCur[3] - imuShiftFromStartX) - sin(rz) * (transformCur[4] - imuShiftFromStartY);float y1 = sin(rz) * (transformCur[3] - imuShiftFromStartX) + cos(rz) * (transformCur[4] - imuShiftFromStartY);float z1 = transformCur[5] - imuShiftFromStartZ;float x2 = x1;float y2 = cos(rx) * y1 - sin(rx) * z1;float z2 = sin(rx) * y1 + cos(rx) * z1;tx = transformSum[3] - (cos(ry) * x2 + sin(ry) * z2);ty = transformSum[4] - y2;tz = transformSum[5] - (-sin(ry) * x2 + cos(ry) * z2);// 與accumulateRotatio聯合起來更新transformSum的rotation部分的工作// 可視為transformToEnd的下部分的逆過程PluginIMURotation(rx, ry, rz, imuPitchStart, imuYawStart, imuRollStart, imuPitchLast, imuYawLast, imuRollLast, rx, ry, rz);transformSum[0] = rx;transformSum[1] = ry;transformSum[2] = rz;transformSum[3] = tx;transformSum[4] = ty;transformSum[5] = tz;}

總結

以上是生活随笔為你收集整理的LeGo-LOAM激光雷达定位算法源码阅读(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

成人黄大片视频在线观看 | 91福利在线观看 | 日韩网站在线播放 | 国产免费视频在线 | 99精品一区二区 | 中文字幕电影一区 | 欧美日韩免费一区二区三区 | 日韩乱色精品一区二区 | 色婷婷激情网 | 最新国产在线视频 | 婷婷六月网| 精品亚洲视频在线观看 | 91麻豆精品91久久久久同性 | 亚洲在线视频播放 | 精品视频专区 | 伊甸园av在线 | 欧美一级免费在线 | www久久99 | 免费观看一级 | 91久久偷偷做嫩草影院 | 狠狠网站| 四虎影视成人精品国库在线观看 | 天天鲁一鲁摸一摸爽一爽 | 月下香电影 | 国产麻豆果冻传媒在线观看 | 婷婷六月丁 | 精品嫩模福利一区二区蜜臀 | 国产中文字幕在线看 | 免费看毛片网站 | 精品国产大片 | 蜜臀av在线一区二区三区 | 九九在线精品视频 | 国产成人在线综合 | 日韩视频免费在线观看 | 亚洲国产成人精品在线观看 | 精品999久久久 | 国产精品久久久毛片 | 亚洲高清网站 | 有码中文字幕在线观看 | 色婷婷免费视频 | 一区二区三区免费播放 | 少妇bbb搡bbbb搡bbbb | 日韩午夜电影网 | 麻豆影视在线免费观看 | 久久99精品国产91久久来源 | 国产精品一区二区av影院萌芽 | 97色狠狠| 亚洲国产精品va在线看黑人 | 精品久久久久久久久久久久久 | ww视频在线观看 | 99人久久精品视频最新地址 | www.午夜视频 | 精品伦理一区二区三区 | 97超碰成人在线 | 在线观看免费日韩 | 伊人伊成久久人综合网站 | 国产小视频免费在线观看 | 国产午夜精品理论片在线 | 精品久久久久久久久久岛国gif | 99热手机在线 | av色综合网| 草 免费视频 | 日韩欧美精品在线视频 | 国产香蕉视频在线观看 | 91视频成人免费 | 午夜视频色 | 91黄视频在线 | 国产99精品在线观看 | 日韩特黄一级欧美毛片特黄 | 免费看的毛片 | 久久久国产精品人人片99精片欧美一 | 久久综合中文字幕 | 日韩免费观看一区二区三区 | 国产第一页在线播放 | 999久久久久久久久 69av视频在线观看 | 国产在线精品一区 | 国产打女人屁股调教97 | 久久一区二区三区四区 | 国产日韩中文在线 | 久久综合狠狠综合 | 日韩激情综合 | 亚洲人成免费 | 婷婷国产在线观看 | 免费看精品久久片 | 超碰97久久| 久草在线在线精品观看 | 久久爽久久爽久久av东京爽 | 亚洲 欧美日韩 国产 中文 | 亚洲另类视频在线观看 | 久久97久久97精品免视看 | 在线免费性生活片 | 亚洲精品视频在线观看免费视频 | 久久在线免费观看视频 | 国产成人1区 | 国产伦精品一区二区三区四区视频 | 日本久久片 | 深爱激情av | 九九日九九操 | 久久国产精品视频免费看 | 黄色免费大片 | 91新人在线观看 | 久久综合九色综合97婷婷女人 | 成人免费一区二区三区在线观看 | 手机成人免费视频 | 日韩欧美高清免费 | 免费国产黄线在线观看视频 | 色综合亚洲精品激情狠狠 | 久久久999免费视频 日韩网站在线 | 免费在线国产 | 九九热国产视频 | 最近中文字幕完整视频高清1 | aaawww| 日韩一区二区三区免费电影 | 在线播放视频一区 | 婷婷久久久久 | 久久99国产精品久久99 | 久久国产精品色婷婷 | av线上免费看| 91精品国产三级a在线观看 | 青草视频在线 | 国产女做a爱免费视频 | 日p在线观看 | 香蕉91视频 | 九九视频网站 | 欧美精品色 | 亚洲精品美女 | 三级午夜片 | 一级c片 | 国产精品夜夜夜一区二区三区尤 | www.亚洲精品在线 | 91九色免费视频 | 色多多视频在线 | 久久久久久久久久久电影 | 国产午夜av | 久久久久五月天 | 狠狠狠狠狠狠狠狠 | 青青河边草免费 | 国产成人精品久久亚洲高清不卡 | 中文字幕 在线看 | 免费观看av网站 | 欧美日一级片 | 国产真实精品久久二三区 | 四虎国产精品免费观看视频优播 | 高清不卡一区二区在线 | 亚洲欧美成人综合 | 亚洲 欧美 91 | 成人综合婷婷国产精品久久免费 | 91最新在线 | 日韩动漫免费观看高清完整版在线观看 | 黄色成品视频 | 十八岁以下禁止观看的1000个网站 | 亚洲经典精品 | 色婷婷av国产精品 | 91禁看片| 999成人| 色综合咪咪久久网 | 天天综合网久久综合网 | av三级在线播放 | 日韩av一区二区三区四区 | 国产91探花| 激情婷婷av | 欧美a视频| 欧美国产不卡 | 天天干亚洲| 2023亚洲精品国偷拍自产在线 | 久久久91精品国产一区二区三区 | 色婷婷激情四射 | 欧美在线一级片 | 久久综合狠狠综合久久狠狠色综合 | aaa日本高清在线播放免费观看 | 日日日日日 | 欧美日韩视频网站 | 国产精品久久久久久久7电影 | 五月天婷婷丁香花 | 91av蜜桃| 天堂久久电影网 | 亚洲综合欧美精品电影 | 色小说在线 | av网站在线观看播放 | 在线成人免费电影 | 精品av在线播放 | 亚洲精品国产麻豆 | 欧美日韩一区二区三区在线观看视频 | 国产日韩精品在线观看 | 91中文字幕一区 | 成人av中文字幕 | 91av视频在线观看免费 | 亚洲码国产日韩欧美高潮在线播放 | 97天天综合网 | 久久免费看 | 黄色免费电影网站 | 国产成人黄色片 | 中日韩三级视频 | 天天干天天射天天爽 | 久久婷婷五月综合色丁香 | 国产精品不卡在线观看 | 免费观看全黄做爰大片国产 | 在线成人av | 亚洲电影一级黄 | 开心色婷婷 | 久久国产剧场电影 | 国产国语在线 | 免费99精品国产自在在线 | 久久国产精品视频 | 久久精品aaa | 国产裸体bbb视频 | 最近中文字幕视频网 | 精品美女在线视频 | 四虎影视成人精品 | 国内成人精品视频 | 欧美日韩观看 | 97日日碰人人模人人澡分享吧 | 免费在线91| 成年在线观看 | 日本中文字幕在线免费观看 | 国产一级免费电影 | 成人国产网站 | 免费电影播放 | 在线观看911视频 | 欧美专区日韩专区 | 日韩成人在线免费观看 | 欧美在线a视频 | 91视频在线免费下载 | 亚洲精品视频免费在线 | 97视频播放 | 天天操天天色天天 | 日韩av不卡在线播放 | 国产 日韩 欧美 中文 在线播放 | 91天天操 | 亚洲国产欧美在线人成大黄瓜 | 亚洲精品乱码久久久久久9色 | 欧美在线视频不卡 | 国产原厂视频在线观看 | 亚洲五月综合 | 国产五十路毛片 | 91精品在线免费 | 黄色a视频 | 亚洲狠狠丁香婷婷综合久久久 | 九九久久成人 | 在线视频99 | 国产无限资源在线观看 | 日本性xxx | 久久久久成人精品 | 色狠狠婷婷 | 日韩三级视频在线观看 | 免费又黄又爽的视频 | 国产资源在线观看 | 欧美色图30p | 欧美国产精品一区二区 | 日本特黄特色aaa大片免费 | 五月婷婷一级片 | 91亚洲视频在线观看 | 在线免费观看国产 | 91在线看网站 | 在线视频 91 | 欧美电影在线观看 | 久久久久国产a免费观看rela | 久久免费看av| 亚洲欧美视频在线观看 | 一级片视频免费观看 | 2022中文字幕在线观看 | 国产视频九色蝌蚪 | 美女视频免费精品 | 国产999精品久久久久久麻豆 | 97色资源| 五月天堂网| 国产精品麻豆三级一区视频 | 不卡精品| 五月婷婷激情 | 国产精品6999成人免费视频 | 一本到视频在线观看 | 欧美日韩国产mv | 成人a视频在线观看 | 久久激情五月丁香伊人 | 91精品国产九九九久久久亚洲 | 婷婷丁香九月 | a在线一区 | 久久久久久久久久久久国产精品 | 69av久久 | 激情久久小说 | 日日夜夜网 | 欧美狠狠操 | 亚洲精品欧美视频 | 国产精品密入口果冻 | 99久久久国产精品免费99 | 一区二区在线电影 | 亚洲另类视频在线观看 | 一区二区中文字幕在线观看 | av在线小说 | 色婷婷电影网 | 成年人在线免费看视频 | 亚洲黄色一级视频 | 久久你懂得 | 日本99久久| 国产亲近乱来精品 | 在线欧美小视频 | 日韩av伦理片 | 色婷婷丁香| 天天摸日日摸人人看 | 欧美精品亚州精品 | 麻豆视频一区二区 | 91免费观看国产 | 看国产黄色大片 | 亚洲一区网站 | 午夜在线免费视频 | 西西人体4444www高清视频 | 国内精品久久久久久久影视麻豆 | 亚州av免费 | 一区二区三区日韩在线观看 | aav在线| 亚洲成人第一区 | 亚洲国产99| 亚洲免费小视频 | 丁香激情视频 | 综合网久久 | 欧美日比视频 | 亚洲va欧美va人人爽春色影视 | 九九有精品 | 人人爽久久久噜噜噜电影 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 激情丁香 | 国产精品久久久久免费观看 | 97精品国自产拍在线观看 | 欧美怡红院视频 | 手机av永久免费 | 国产精品成人自拍 | 亚洲一区二区三区精品在线观看 | 国产二级视频 | 啪啪凸凸 | 欧美精品在线一区 | 92中文资源在线 | 黄色a一级片 | 国产在线久草 | av成人在线播放 | 在线观看中文字幕网站 | 黄色影院在线播放 | 五月天色婷婷丁香 | 日韩美女一级片 | 精品免费观看 | 97av在线| 亚洲免费婷婷 | 最近2019中文免费高清视频观看www99 | 91视频91蝌蚪 | 国产伦精品一区二区三区四区视频 | 亚洲电影毛片 | 国产美女精品在线 | 亚洲,播放 | 在线国产精品视频 | 97福利在线观看 | 99精品一区二区三区 | 欧美黑人性爽 | 久久黄色精品视频 | 天天综合网在线观看 | 亚洲一级电影在线观看 | 精品国产一区二区三区在线观看 | 国产亚洲精品bv在线观看 | 欧美一区二区三区不卡 | 一区二区欧美日韩 | 最近中文字幕第一页 | 精品国产区在线 | 天天干天天色2020 | 婷婷在线免费观看 | 日韩精品观看 | 国产精品九九热 | 成人在线视频你懂的 | 天天操天天拍 | 国产精品久久久久久99 | 天天摸天天操天天爽 | 91一区二区三区在线观看 | 日日夜夜天天久久 | 久久夜色精品国产欧美乱 | 欧美日韩在线观看一区二区 | 91色九色 | 天天干天天操天天 | 国产在线观看国语版免费 | 久热久草| 午夜av在线免费 | 最近中文字幕免费av | 亚洲h视频在线 | 日韩在线精品 | 成人av教育 | 色天天综合网 | 91香蕉国产在线观看软件 | 欧美日韩精品免费观看 | 亚洲成aⅴ人在线观看 | 亚洲一区尤物 | 九色porny真实丨国产18 | 在线免费观看视频a | 在线看成人片 | 日韩精品一区二区三区视频播放 | 国产精品永久久久久久久www | 免费国产ww | 又爽又黄又无遮挡网站动态图 | 性色视频在线 | 久久免费视频观看 | 黄色午夜 | 一本色道久久精品 | 色欲综合视频天天天 | 国产美女在线观看 | 在线免费观看黄色 | 日韩中出在线 | 国产视频中文字幕 | 超碰97免费 | 欧美一区成人 | 黄色一区三区 | 天天射天天干天天插 | 日本久久91| 99精品国产福利在线观看免费 | 亚洲视频免费在线观看 | 中文字幕日韩免费视频 | 国产系列在线观看 | 午夜精品久久久久久 | 国产成人在线综合 | 2018亚洲男人天堂 | a√资源在线 | 日本h视频在线观看 | 精品美女在线观看 | 国产精品观看视频 | 9797在线看片亚洲精品 | 久久69精品久久久久久久电影好 | 久久精品视频免费观看 | av一级一片 | 麻豆传媒视频在线免费观看 | 国产午夜麻豆影院在线观看 | 国产色一区 | 成人av中文字幕 | 中文字幕一区二区三区四区 | 久久丁香网 | av免费电影在线 | 天天爽综合网 | 国产日韩精品在线观看 | wwwwwww色 | 青青河边草免费观看完整版高清 | 国产一区二区在线免费播放 | 欧美性色黄大片在线观看 | 天天干天天爽 | www.狠狠色.com | 亚洲一级影院 | 日韩欧美在线视频一区二区 | 韩国中文三级 | 亚洲人成人在线 | av福利免费 | 国产精品久久久久久久久大全 | 成人蜜桃| 狠狠操91| 国产高清精品在线观看 | 在线av资源 | 日韩精品久久久 | 97超碰人人模人人人爽人人爱 | 免费日韩一区二区三区 | 婷婷激情在线观看 | 久久久久久高潮国产精品视 | 国产999精品久久久久久 | 最新中文字幕在线观看视频 | 中文字幕国产视频 | 又黄又爽的视频在线观看网站 | 欧美激情va永久在线播放 | 丝袜美腿亚洲综合 | 欧美天堂久久 | 麻豆网站免费观看 | 精品国产网址 | 午夜精品久久久久99热app | 国产喷水在线 | 久久蜜臀一区二区三区av | 日韩乱色精品一区二区 | 国产在线播放观看 | 国产亚洲字幕 | 国产伦理精品一区二区 | 精品国产亚洲一区二区麻豆 | 日韩免费中文 | 黄污在线观看 | 黄色网www| 97夜夜澡人人爽人人免费 | 色偷偷888欧美精品久久久 | 九九视频热 | 综合网天天射 | 婷婷六月天综合 | 国产精品中文字幕在线观看 | 一区二区三区 中文字幕 | 欧美一二三专区 | 成人a免费| 久久精品中文视频 | 亚洲 在线 | 亚洲欧美国产精品久久久久 | 亚洲va在线va天堂 | 丁香婷婷综合激情五月色 | 美国人与动物xxxx | 波多野结衣综合网 | 中文字幕高清 | 国产精品成人在线 | 97超碰免费在线 | 伊人久久五月天 | 国产亚洲精品久久 | 蜜桃av综合网| a v在线视频 | 麻豆网站免费观看 | 国产精品va最新国产精品视频 | 9在线观看免费高清完整版在线观看明 | 成人免费视频在线观看 | 成人av久久 | 激情开心站 | 插婷婷 | 麻豆成人精品视频 | 国产很黄很色的视频 | 摸bbb搡bbb搡bbbb| 成年人网站免费观看 | 国产原创在线视频 | 91亚洲视频在线观看 | 91精品久久久久久粉嫩 | 婷婷综合久久 | 欧美精品久久人人躁人人爽 | 日韩成人免费电影 | 91精品一区二区三区蜜臀 | 欧洲色综合 | 中文字幕视频三区 | 国产精品一区一区三区 | 蜜臀av免费一区二区三区 | 天天操夜夜摸 | 午夜久久视频 | 97视频在线观看成人 | 99久久久免费视频 | 亚洲夜夜综合 | 最新中文字幕在线资源 | 国产精品视频 | 精品视频久久 | 亚洲日本成人网 | av先锋影音少妇 | 激情久久婷婷 | 天天干天天操天天干 | 色在线中文字幕 | 日日碰夜夜爽 | 欧美一级免费高清 | 亚洲电影久久久 | 久久久久久久久久久久久久av | 国产一级电影 | 天天干一干 | 天天爽夜夜爽人人爽曰av | 久久99国产综合精品 | 天天天天天天天天操 | 亚洲成人av免费 | 韩国av一区二区三区 | 欧美日韩在线视频一区二区 | 久久久久一区二区三区四区 | 四虎影视国产精品免费久久 | 麻豆一区在线观看 | 激情av在线播放 | 久久久久久久久久久网 | 五月开心六月伊人色婷婷 | 日韩在线视频不卡 | 日韩一二区在线观看 | 免费网站在线观看人 | 99视频在线免费 | 免费h视频 | 精品久久片 | 国产传媒中文字幕 | 超碰九九| 91天堂素人约啪 | 国产很黄很色的视频 | 欧美激情xxxx| 奇米影视777影音先锋 | 欧美在线视频日韩 | 日日操日日插 | 欧美一区二区在线看 | 久久99精品久久只有精品 | 久久超碰97 | 美女视频黄频 | 亚洲最大av网 | 国产99久久久国产 | 俺要去色综合狠狠 | 日韩在线三级 | 国产69精品久久久久9999apgf | 午夜精品久久久久久久99 | 成 人 黄 色 免费播放 | 三级黄色a| 99久久婷婷| 免费av福利 | 久久久久综合 | 国产精品亚 | av电影免费在线看 | 91成年人视频 | 狠狠色丁香久久综合网 | 超碰97在线看| 超碰人人干人人 | 成年人在线免费看视频 | 日韩在线色| 黄色一二级片 | 国产精品一区二区在线免费观看 | 国产亚洲精品久久久久秋 | 永久免费毛片 | 国产精品视频内 | 色婷婷视频在线观看 | 久久天堂亚洲 | 欧洲精品视频一区 | 国产99免费| 激情视频91| 青青河边草免费观看 | 超碰人人在线观看 | 99在线观看视频 | 91片黄在线观看 | 伊人久久国产 | 一区二区亚洲精品 | 丁香九月激情 | 国产福利午夜 | 欧美国产在线看 | www最近高清中文国语在线观看 | 国产精品久久久亚洲 | 99精品久久精品一区二区 | 麻豆91在线看 | 日韩av午夜在线观看 | 日本资源中文字幕在线 | 国产成人中文字幕 | 久久综合狠狠综合久久激情 | 国产精品123 | 中文字幕一区在线观看视频 | 天堂av在线免费 | av中文字幕在线播放 | 91久久爱热色涩涩 | 91精品综合在线观看 | 亚洲国产日韩在线 | 7799av | 亚洲精品国产自产拍在线观看 | 久久久久久久久久久久影院 | 97超碰总站 | 亚洲国产福利视频 | 国产在线超碰 | 久久综合免费视频 | 九九av | 蜜臀久久99精品久久久酒店新书 | 欧美污网站 | 色噜噜色噜噜 | 一二三久久久 | 人人射人人射 | 成年人免费电影在线观看 | 国产精品久久久久久久久久久久午夜 | 69久久夜色精品国产69 | 四虎8848免费高清在线观看 | 手机av资源 | 日韩专区在线 | 久热电影| 日本久久高清视频 | 99精品国产一区二区三区麻豆 | av一区二区三区在线播放 | 成年人国产精品 | 91在线蜜桃臀 | 久久综合之合合综合久久 | 免费一级片在线观看 | 久久精品亚洲精品国产欧美 | 天天插天天| 成片免费观看视频999 | www91在线 | 国产在线播放一区二区三区 | 成年人免费在线观看网站 | 麻豆视频在线免费 | 99欧美视频 | 国产高清视频免费最新在线 | 国产黄色大全 | 久久国产精品一区二区 | 国产午夜精品一区二区三区欧美 | 亚洲在线视频播放 | 日本久久中文字幕 | 国产在线一区二区三区播放 | 玖玖视频在线 | 国产视频九色蝌蚪 | 97视频在线观看免费 | 久久激情五月婷婷 | 91福利影院在线观看 | www.狠狠操.com | 视频二区在线 | 久久免费视频观看 | 国产一级一片免费播放放 | 欧美日韩69 | 欧美另类调教 | 中文字幕av免费 | 国产精品无av码在线观看 | 国语自产偷拍精品视频偷 | 叶爱av在线 | 伊人色综合久久天天网 | 欧美日韩精品在线 | 久久艹在线 | 国产91在线播放 | 日韩精品在线观看av | 黄色av网站在线免费观看 | 久久久久二区 | 国产精品久久久久久久久大全 | 在线免费视频一区 | 午夜精品久久久久久久久久久久 | 国产在线精品一区 | 91精品国产网站 | 国产精品女同一区二区三区久久夜 | 日韩亚洲在线 | www国产亚洲精品久久网站 | 国产污视频在线观看 | 久久久久久看片 | 狠狠色丁香婷婷综合久小说久 | 国产亚洲人 | 午夜视频一区二区 | 亚洲欧美在线视频免费 | a黄色片在线观看 | 欧美久草在线 | 麻豆传媒视频观看 | 成人网在线免费视频 | 久久成人欧美 | 热久久国产 | 不卡的av| 成人在线免费视频 | 国产日韩av在线 | 亚洲综合情| 手机成人在线电影 | 免费成人av | 中文在线免费一区三区 | 97超碰免费在线观看 | av短片在线| 亚洲精选99 | 久久国产精品电影 | 欧美狠狠色 | 欧美激情视频一二区 | 久久久精品综合 | 成人永久免费 | 黄色成品视频 | 精品字幕在线 | 毛片激情永久免费 | 色狠狠婷婷 | 在线播放亚洲 | 久久av高清| 亚洲三级av | 欧美激情视频一二三区 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产护士av| 国产日韩一区在线 | 国产中文字幕视频在线观看 | 色五月成人 | 亚洲精品高清视频在线观看 | 国产91精品久久久久久 | 91久久国产综合精品女同国语 | 91成人免费 | 欧美日韩国产精品一区 | 久草在线中文视频 | 狠狠干天天射 | www.97色.com | 日本中文乱码卡一卡二新区 | 久久99国产精品免费 | 色午夜影院 | 一级性生活片 | 黄色软件大全网站 | 欧美与欧洲交xxxx免费观看 | 天天射天天干天天 | www免费| 99免费在线观看视频 | 国产高清不卡在线 | 高清一区二区三区av | 国产三级在线播放 | 波多野结衣在线视频免费观看 | 日韩剧| 视频在线精品 | 国产中文字幕91 | 91chinese在线 | 欧美成人区 | 国产无套一区二区三区久久 | 久久久久国产一区二区三区 | 国语自产偷拍精品视频偷 | 国产精品网红直播 | 国产精品久久99精品毛片三a | 国产精品视频免费 | 国产91九色蝌蚪 | 国产不卡一二三区 | 偷拍视频一区 | 天天操天天射天天舔 | 国产黄色精品网站 | 国产精品久久久久久久久久久免费 | 日韩av成人在线观看 | 久久优 | 日韩电影久久 | 少妇bbw搡bbbb搡bbbb | 日韩手机在线观看 | 亚洲91视频 | 日韩黄色一级电影 | 成人免费观看视频网站 | 欧美激情综合五月色丁香小说 | 免费观看av网站 | 久久久久久久久久免费 | 天天爱天天操 | 中文字幕欲求不满 | 日韩欧美高清在线观看 | 高清有码中文字幕 | 欧美日韩aaaa| 日韩最新理论电影 | 91香蕉国产在线观看软件 | 欧美a在线免费观看 | 久久九九免费视频 | 日韩特黄一级欧美毛片特黄 | 国产成人久久精品77777综合 | 久久久久亚洲精品男人的天堂 | 在线播放视频一区 | 在线小视频国产 | 久久成电影 | 一区二三国产 | 美女视频黄网站 | 亚洲欧美日韩在线一区二区 | 99国产精品久久久久老师 | 国产一级特黄毛片在线毛片 | 丁香婷婷激情 | 久久久久国产精品一区二区 | 久久久久免费精品国产 | 国产精品少妇 | 亚洲成色777777在线观看影院 | 久久蜜臀一区二区三区av | av在线之家电影网站 | 亚洲视频www | 国产精品久久嫩一区二区免费 | 深夜视频久久 | 国内精品久久久久久 | 久草 | 久久av一区二区三区亚洲 | 91系列在线观看 | 日韩在线看片 | 在线国产能看的 | 91av99| 国产精品久久在线 | 九九热只有这里有精品 | 黄色片软件网站 | 91久久影院 | 日韩电影久久 | 久久不见久久见免费影院 | 日韩视频免费 | 黄色免费观看网址 | 激情电影影院 | 又黄又爽的免费高潮视频 | 国产.精品.日韩.另类.中文.在线.播放 | 久草视频观看 | 日韩毛片在线播放 | 日韩亚洲欧美中文字幕 | 国产成人久久久77777 | 欧美做受高潮1 | 四虎最新入口 | 久久久色 | 久热精品国产 | 黄色片免费电影 | 深夜免费福利视频 | 91视频91蝌蚪| 免费视频97 | 美女网站在线观看 | 天堂av网在线 | 国产成人av网 | 亚洲成人资源网 | 精品国产综合区久久久久久 | 夜夜摸夜夜爽 | 最新免费av在线 | 黄色软件在线观看视频 | 亚洲精品综合一二三区在线观看 | 亚洲视频高清 | 国产精品一区二区在线观看 | 免费裸体视频网 | 国产精品美女久久久久久2018 | 日韩精品一区二区三区高清免费 | 日韩av伦理片| 精品国产乱码一区二 | 久久亚洲美女 | 成人免费看视频 | 日本不卡一区二区 | 久久精品一区二区三区四区 | 免费成人在线视频网站 | 最近高清中文字幕在线国语5 | 亚洲精品中文字幕在线观看 | 久久久免费观看视频 | 国产va在线 | 亚洲国产精品人久久电影 | 天天透天天插 | 永久免费的av电影 | 最近中文字幕免费视频 | 精品久久久久久久久久久久久久久久久久 | 天天草天天爽 | 免费91麻豆精品国产自产在线观看 | 波多野结衣视频网址 | 日b视频在线观看网址 | 欧美在线视频日韩 | 国产 视频 高清 免费 | 久久中文字幕导航 | 久久综合中文字幕 | 日韩动漫免费观看高清完整版在线观看 | 日韩av免费在线电影 | 中文字幕资源在线观看 | 国产精品一区二区视频 | 久视频在线 | 一区二区三区三区在线 | 91日韩在线 | 日韩欧美黄色网址 | 中文字幕a∨在线乱码免费看 | 欧美a级在线播放 | 久久精品一二三 | 最新中文字幕在线资源 | 久久久精品网站 | 久草精品视频在线观看 | 日韩视频免费观看高清完整版在线 | 亚洲手机天堂 | 人人爽人人做 | 天天干天天草 | 一本之道乱码区 | 久草在线精品观看 | 国产护士av | 亚在线播放中文视频 | 在线观看国产日韩欧美 | av黄色大片 | 免费婷婷| 中文一区二区三区在线观看 | 999电影免费在线观看2020 | 一级c片| 人人爱人人射 | 欧美成年人在线观看 | 国产美女精品久久久 | 在线观看电影av | 久久国产精品免费一区 | 在线观看国产一区 | 五月天伊人网 | 三级黄色片在线观看 | 国产精品99久久免费观看 | 99免费国产 | 99日韩精品| 国产四虎影院 | 国产欧美精品一区二区三区四区 | 亚洲三级国产 | 亚洲人成精品久久久久 | 国产999视频 | www.久久色 | 日韩乱色精品一区二区 | 中文超碰字幕 | 色婷婷一区 | 久久一级片 | 国产精品成人自产拍在线观看 | 色天天久久 | 国产五月天婷婷 | 中文字幕一区二区三区乱码在线 | 久久九九免费视频 | 国产精品99在线播放 | 欧美性黄网官网 | 欧美一区二区三区四区夜夜大片 | 97精品国产97久久久久久免费 | 欧美男同视频网站 | 麻豆视频在线观看免费 | 在线黄色国产 | 西西人体4444www高清视频 | 国产亚洲精品久久 | 亚洲综合导航 | 亚洲免费永久精品国产 | 美女一二三区 | 午夜国产福利视频 | 国产九九精品视频 | 久久艹在线观看 | 国产一级二级在线播放 | 四虎影视精品成人 | 人人澡人人爽 | 国产亚洲婷婷免费 | 久久久久久久精 | 3d黄动漫免费看 | 欧美精品视 | 亚洲三级在线播放 | 日本中文字幕在线 | 国产精品女人久久久久久 | 91视频在线免费观看 | 婷婷久久国产 | 亚洲码国产日韩欧美高潮在线播放 | 久久8| 国产亚洲一级高清 | 久久综合九色欧美综合狠狠 | 夜夜躁天天躁很躁波 | 在线成人性视频 | 在线观看成人小视频 | 亚洲精色 | 国产伦精品一区二区三区高清 | 999久久久久久久久6666 | 久久这里精品视频 | 精品亚洲免费视频 | 91亚洲精品国偷拍自产在线观看 | 久久视频一区 | 欧美在线视频一区二区三区 | 色婷婷电影网 | 亚洲影院天堂 | 日韩中文字幕国产 | 亚洲国产精品久久久久久 | 免费午夜av| 亚洲3级| 丁香花中文在线免费观看 | 91手机电视| 在线免费观看成人 | 亚一亚二国产专区 | 在线观看欧美成人 | 日本中文字幕免费观看 | 久久久久亚洲精品男人的天堂 | 久久人人爽人人片 | 精品 一区 在线 | 欧美色图亚洲图片 | 精品国产乱子伦一区二区 | 国产亚洲精品久久网站 | 一本一本久久aa综合精品 | 九九爱免费视频 | 久热这里有精品 | 中文字幕在线播放日韩 | 久久久黄色av| 色精品视频 |