AD_车辆运动无模型控制_PID

在 Frenet 坐标系下进行车辆运动控制,通常将任务分解为横向控制(Lateral Control)和纵向控制(Longitudinal Control)。引入前馈控制(Feedforward)是为了补偿道路几何形状(如弯道)或目标速度变化带来的滞后,从而提高控制精度。

以下是结合前馈的 PID 控制:

1. 横向控制:追踪中心线

  • PID 部分(反馈):主要消除由于模型不准、侧风或路面干扰产生的瞬态误差。

    • 比例 ( P):纠正当前的横向位置偏差 d。

    • 积分 (I):消除稳态误差(如斜坡路面或底盘偏置)。

    • 微分 (D):抑制震荡,提供阻尼。

  • 前馈部分 (Feedforward):基于道路曲率 κ 的补偿

    • 原理:在弯道上,即使偏差为零,车辆也需要一定的转向角来维持弯道行驶。

    • 公式推导 :前馈转向角这让控制器提前预知前方道路的变化。

2. 纵向控制:速度与位置跟踪

  • PID 部分(反馈)
    • P/I/D :根据速度误差 Verror​ = Vtarget​ − Vcurrent调节加速度指令(油门/刹车)。
  • 前馈部分 (Feedforward)
    • 坡道补偿:利用坡度信息补偿重力分量,防止上坡减速、下坡加速。
    • 目标加速度前馈:如果轨迹规划器给出了目标加速度,直接将其作为前馈项加入,可以极大地提高对加减速指令的响应速度。

3. 综合控制律表述

核心优势:

  • 解耦简化:Frenet 坐标系将复杂的 2D 路径跟踪简化为一维的距离偏差控制。
  • 响应更快:前馈项处理了"已知"的道路变化(曲率),反馈项只处理"未知"的扰动。
  • 稳态误差小:在持续转弯时,前馈确保了车辆不会因为 PID 的滞后而偏向弯道外侧。

4.横向控制代码示意:

python:

bash 复制代码
# PID_controller.py
import numpy as np
import math
from time import sleep
from time import time

"""
PID控制器类实现
包括增量式和位置式
"""
# 位置式
class PID_posi:
    """位置式实现1
    """
    def __init__(self, kp, ki, kd, target, upper=1., lower=-1.):
        self.kp = kp
        self.ki = ki
        self.kd = kd
        self.err = 0
        self.err_last = 0
        self.err_all = 0
        self.target = target
        self.upper = upper
        self.lower = lower
        self.value = 0

    def cal_output(self, state):
        self.err = self.target - state
        # self.err =state-self.target
        self.value = self.kp * self.err + self.ki * \
            self.err_all + self.kd * (self.err - self.err_last)
        self.update()
        return self.value

    def update(self):
        self.err_last = self.err
        self.err_all = self.err_all + self.err
        if self.value > self.upper:
            self.value = self.upper
        elif self.value < self.lower:
            self.value = self.lower

    def auto_adjust(self, Kpc, Tc):
        self.kp = Kpc * 0.6
        self.ki = self.kp / (0.5 * Tc)
        self.kd = self.kp * (0.125 * Tc)
        return self.kp, self.ki, self.kd

    def set_pid(self, kp, ki, kd):
        self.kp = kp
        self.ki = ki
        self.kd = kd

    def reset(self):
        self.err = 0
        self.err_last = 0
        self.err_all = 0

    def set_target(self, target):
        self.target = target


class PID_posi_2:
    """位置式实现2
    """
    def __init__(self, k=[1., 0., 0.], target=1.0, upper=1.0, lower=-1.0):
        self.kp, self.ki, self.kd = k

        self.e = 0  # error
        self.pre_e = 0  # previous error
        self.sum_e = 0  # sum of error

        self.target = target  # target
        self.upper_bound = upper    # upper bound of output
        self.lower_bound = lower    # lower bound of output

    def set_target(self, target):
        self.target = target

    def set_k(self, k):
        self.kp, self.ki, self.kd = k

    def set_bound(self, upper, lower):
        self.upper_bound = upper
        self.lower_bound = lower

    def cal_output(self, state):   # calculate output
        self.e = self.target - state
        u = self.e * self.kp + self.sum_e * \
            self.ki + (self.e - self.pre_e) * self.kd
        if u < self.lower_bound:
            u = self.lower_bound
        elif u > self.upper_bound:
            u = self.upper_bound

        self.pre_e = self.e
        self.sum_e += self.e
        # print(self.sum_e)
        return u

    def reset(self):
        # self.kp = 0
        # self.ki = 0
        # self.kd = 0

        self.e = 0
        self.pre_e = 0
        self.sum_e = 0
        # self.target = 0

    def set_sum_e(self, sum_e):
        self.sum_e = sum_e
# 增量式
class PID_inc:
    """增量式实现
    """
    def __init__(self, k, target, upper=1., lower=-1.):
        self.kp, self.ki, self.kd = k   
        self.err = 0
        self.err_last = 0
        self.err_ll = 0
        self.target = target
        self.upper = upper
        self.lower = lower
        self.value = 0
        self.inc = 0

    def cal_output(self, state):
        self.err = self.target - state
        self.inc = self.kp * (self.err - self.err_last) + self.ki * self.err + self.kd * (
            self.err - 2 * self.err_last + self.err_ll)
        self._update()
        return self.value

    def _update(self):
        self.err_ll = self.err_last
        self.err_last = self.err
        self.value = self.value + self.inc
        if self.value > self.upper:
            self.value = self.upper
        elif self.value < self.lower:
            self.value = self.lower

    def set_target(self, target):
        self.target = target

    def set_k(self, k):
        self.kp, self.ki, self.kd = k

    def set_bound(self, upper, lower):
        self.upper_bound = upper
        self.lower_bound = lower
bash 复制代码
# PID_demo.py
from scipy.spatial import KDTree
from celluloid import Camera  # 保存动图时用,pip install celluloid
from PID_controller import PID_posi_2, PID_inc
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import math
class KinematicModel_3:
  """假设控制量为转向角delta_f和加速度a
  """

  def __init__(self, x, y, psi, v, L, dt):
    self.x = x
    self.y = y
    self.psi = psi
    self.v = v
    self.L = L
    # 实现是离散的模型
    self.dt = dt

  def update_state(self, a, delta_f):
    self.x = self.x+self.v*math.cos(self.psi)*self.dt
    self.y = self.y+self.v*math.sin(self.psi)*self.dt
    self.psi = self.psi+self.v/self.L*math.tan(delta_f)*self.dt
    self.v = self.v+a*self.dt

  def get_state(self):
    return self.x, self.y, self.psi, self.v

## 位置式
PID = PID_posi_2(k=[2, 0.01, 30], target=0, upper=np.pi/6, lower=-np.pi/6)
## 增量式
# PID = PID_inc(k=[2.5, 0.175, 30], target=0, upper=np.pi/6, lower=-np.pi/6)

def cal_target_index(robot_state,refer_path):
    """得到临近的路点

    Args:
        robot_state (_type_): 当前车辆位置
        refer_path (_type_): 参考轨迹(数组)

    Returns:
        _type_: 最近的路点的索引
    """
    dists = []
    for xy in refer_path:
        dis = np.linalg.norm(robot_state-xy)
        dists.append(dis)

    min_index = np.argmin(dists)
    return min_index

def main():
    # set reference trajectory
    refer_path = np.zeros((1000, 2))
    refer_path[:, 0] = np.linspace(0, 100, 1000)  # 直线
    # +2.5*np.cos(refer_path[:,0]/2.0) # 生成正弦轨迹
    refer_path[:, 1] = 2*np.sin(refer_path[:, 0]/3.0)
    refer_tree = KDTree(refer_path)  # reference trajectory


    # 假设初始状态为x=0,y=-1,偏航角=0.5rad,前后轴距离2m,速度为2m/s,时间步为0.1秒
    ugv = KinematicModel_3(0, -1, 0.5, 2, 2, 0.1)
    k = 0.1
    c = 2
    x_ = []
    y_ = []
    fig = plt.figure(1)
    # 保存动图用
    camera = Camera(fig)

    for i in range(550):
        robot_state = np.zeros(2)
        robot_state[0] = ugv.x
        robot_state[1] = ugv.y
        distance, ind = refer_tree.query(robot_state)  # 在参考轨迹上查询离robot_state最近的点
        # ind = cal_target_index(robot_state,refer_path)  # 使用简单的一个函数实现查询离robot_state最近的点,耗时比较长

        alpha = math.atan2(
            refer_path[ind, 1]-robot_state[1], refer_path[ind, 0]-robot_state[0])
        l_d = np.linalg.norm(refer_path[ind]-robot_state)
        # l_d = k*ugv.v+c  # 前视距离
        theta_e = alpha-ugv.psi
        e_y = -l_d*math.sin(theta_e)  # 与博客中公式相比多了个负号,我目前还不是太理解,暂时先放着
        # e_y = -l_d*np.sign(math.sin(theta_e))  # 第二种误差表示
        # e_y = robot_state[1]-refer_path[ind, 1] #第三种误差表示
        # PID.set_target(0)
        # print(refer_path[i,1])
        delta_f = PID.cal_output(e_y)
        # print(e_y)
        # print(alpha)
        ugv.update_state(0, delta_f)  # 加速度设为0

        x_.append(ugv.x)
        y_.append(ugv.y)

        # 显示动图
        plt.cla()
        plt.plot(refer_path[:, 0], refer_path[:, 1], '-.b', linewidth=1.0)
        plt.plot(x_, y_, "-r", label="trajectory")
        plt.plot(refer_path[ind, 0], refer_path[ind, 1], "go", label="target")
        # plt.axis("equal")
        plt.grid(True)
        plt.pause(0.001)
    #     camera.snap()
    # animation = camera.animate()
    # animation.save('trajectory.gif')

    plt.figure(2)
    plt.plot(refer_path[:, 0], refer_path[:, 1], '-.b', linewidth=1.0)
    plt.plot(x_, y_, 'r')
    plt.show()

if __name__=='__main__':
    main()

matlab(详见附件资源vc_pid):

bash 复制代码
% check_datain_value.m
%%%%%%%%%%%%%%%%
%%%%    PID Controller
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;close all;clc
trajbase = load("traj_base.txt");

currentPose = zeros(1,3);
pidValue = zeros(1,2);
wheelbase = 2.5;
velocity = 1.3;
cycTime = 0.02;
time_num = size(trajbase,1);
currentPose(1,1) = trajbase(1,1) + 0.3;
currentPose(1,2) = trajbase(1,2) + 0.2;
currentPose(1,3) = trajbase(1,3) + 0.0;

figure(1)
plot(trajbase(:,1),trajbase(:,2),"r-*");
hold on
for ii_temp = 1:time_num
    [ctrlSa,pidValue] = pidctrol(currentPose,pidValue,trajbase);
    
    currentPose(1,1) = currentPose(1,1) + velocity * cycTime * cos(currentPose(1,3));  %% velocity = 1.3m/s
    currentPose(1,2) = currentPose(1,2) + velocity * cycTime * sin(currentPose(1,3));
    currentPose(1,3) = currentPose(1,3) + velocity/(wheelbase/tan(ctrlSa)) *cycTime;  %% Time = 0.02
    plot(currentPose(1,1),currentPose(1,2),"b-o");
end
hold off

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%                                           NO MORE                                           %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bash 复制代码
% pidctrol.m
function [ctrolU,backPidErr] = pidctrol(currentPose,pidValueIn,trajectoryPath)

%%%% set param
setParamP = 0.8;
setParamI = 0.026;
setParamD = 0.0;

lastErr = pidValueIn(1,1);        %% 上一周期误差
integralErr = pidValueIn(1,2);    %% 累计误差(误差积分量)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                 get nearest point                          %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
devDistance = trajectoryPath(:,1:2) - currentPose(1:2);
disDouble = devDistance(:,1).^2 + devDistance(:,2).^2;
[~,poseIndex] = min(disDouble); %找路径最近点索引

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                   get interpoint                           %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if poseIndex>1
    behindIndex = poseIndex -1;
else
    behindIndex = poseIndex;
end

if poseIndex<length(trajectoryPath)
    frontIndex = poseIndex +1;
else
    frontIndex = poseIndex;
end

xDev = trajectoryPath(frontIndex,1) - trajectoryPath(behindIndex,1);
yDev = trajectoryPath(frontIndex,2) - trajectoryPath(behindIndex,2);

DisTwopoint = sqrt(xDev*xDev + yDev*yDev);

vectorOne(1,1) = currentPose(1,1) - trajectoryPath(behindIndex,1);
vectorOne(1,2) = currentPose(1,2) - trajectoryPath(behindIndex,2);
vectionProjection = (vectorOne(1,1)*xDev + vectorOne(1,2)*yDev)/DisTwopoint;
rateDis = vectionProjection/DisTwopoint;

if (DisTwopoint == 0 || (0>rateDis && 1< rateDis))
    interIndexPosex = trajectoryPath(behindIndex,1);
    interIndexPosey = trajectoryPath(behindIndex,2);
%     interIndexPoseyaw = trajectoryPath(behindIndex,3);
else
    interIndexPosex = (1-rateDis)*trajectoryPath(behindIndex,1) + rateDis*trajectoryPath(frontIndex,1);
    interIndexPosey = (1-rateDis)*trajectoryPath(behindIndex,2) + rateDis*trajectoryPath(frontIndex,2);
%     interIndexPoseyaw = (1-rateDis)*trajectoryPath(behindIndex,3) + rateDis*trajectoryPath(frontIndex,3);
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%         get devDis on base Coordinate                      %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xDevPidIn = interIndexPosex - currentPose(1,1);
yDevPidIn = interIndexPosey - currentPose(1,2);
lcos = cos(currentPose(1,3));
lsin = sin(currentPose(1,3));
% xDevErr = lcos*xDevPidIn  + lsin*yDevPidIn;
currentErr = -lsin*xDevPidIn  + lcos*yDevPidIn;
pidErr = currentErr;
pidErrLast = lastErr;
pidIntegral = integralErr + currentErr;
ctrolU = setParamP*pidErr + setParamI*pidIntegral + setParamD*(pidErr - pidErrLast);   
backPidErr(1,1) = currentErr;
backPidErr(1,2) = pidIntegral;
end
bash 复制代码
# traject_path
30.891991 -3.934486 -0.730344 -0.122568 7.545637 37.371639 0.000000 1
30.922401 -3.930654 -0.740964 -0.120911 7.636809 37.404114 0.000000 1
30.953186 -3.927172 -0.751583 -0.119255 7.727982 37.436584 0.000000 1
30.984356 -3.924051 -0.762202 -0.117598 7.819154 37.469059 0.000000 1
30.996197 -3.940738 -0.766486 -0.117253 7.754245 37.500019 0.000000 1
31.008099 -3.957484 -0.770768 -0.116907 7.689337 37.530983 0.000000 1
31.020061 -3.974291 -0.775051 -0.116562 7.624428 37.561943 0.000000 1
31.032085 -3.991152 -0.779335 -0.116217 7.559519 37.592903 0.000000 1
31.063742 -3.987585 -0.790253 -0.116217 7.432252 37.625099 0.000000 1
31.095795 -3.984408 -0.801170 -0.116217 7.304985 37.657295 0.000000 1
31.128220 -3.981624 -0.812087 -0.116217 7.177718 37.689487 0.000000 1
31.161022 -3.979239 -0.823004 -0.116217 7.050450 37.721680 0.000000 1
31.185925 -3.986138 -0.831237 -0.115811 7.146457 37.754353 0.000000 1
31.211037 -3.993263 -0.839470 -0.115405 7.242463 37.787025 0.000000 1
31.236359 -4.000628 -0.847702 -0.114999 7.338470 37.819695 0.000000 1
31.261887 -4.008220 -0.855935 -0.114594 7.434476 37.852367 0.000000 1
31.280989 -4.018414 -0.862398 -0.113532 7.390316 37.882172 0.000000 1
31.300213 -4.028756 -0.868860 -0.112469 7.346155 37.911976 0.000000 1
31.319561 -4.039238 -0.875323 -0.111407 7.301995 37.941780 0.000000 1
31.339043 -4.049873 -0.881786 -0.110345 7.257834 37.971581 0.000000 1
31.399000 -4.027748 -0.899777 -0.109739 7.109970 38.001812 0.000000 1
31.459883 -4.006786 -0.917767 -0.109134 6.962105 38.032047 0.000000 1
31.521675 -3.987010 -0.935758 -0.108529 6.814240 38.062279 0.000000 1
31.584347 -3.968436 -0.953749 -0.107923 6.666376 38.092510 0.000000 1
31.582483 -3.997124 -0.954208 -0.107732 6.647964 38.122639 0.000000 1
31.580616 -4.025813 -0.954668 -0.107540 6.629552 38.152763 0.000000 1
31.578754 -4.054500 -0.955129 -0.107349 6.611141 38.182896 0.000000 1
31.576887 -4.083193 -0.955589 -0.107157 6.592729 38.213020 0.000000 1
31.597788 -4.099357 -0.961760 -0.106483 6.578066 38.245583 0.000000 1
31.618790 -4.115659 -0.967933 -0.105809 6.563402 38.278141 0.000000 1
31.639889 -4.132116 -0.974103 -0.105134 6.548739 38.310703 0.000000 1
31.661091 -4.148710 -0.980275 -0.104460 6.534076 38.343262 0.000000 1
31.697363 -4.155556 -0.990482 -0.102839 6.583994 38.376175 0.000000 1
31.733898 -4.162804 -1.000689 -0.101219 6.633911 38.409088 0.000000 1
31.770695 -4.170453 -1.010897 -0.099598 6.683829 38.441998 0.000000 1
31.807741 -4.178508 -1.021103 -0.097978 6.733747 38.474911 0.000000 1
31.815403 -4.205688 -1.024025 -0.095978 6.809348 38.509312 0.000000 1
31.823082 -4.232903 -1.026947 -0.093979 6.884949 38.543709 0.000000 1
31.830784 -4.260151 -1.029869 -0.091980 6.960551 38.578106 0.000000 1
31.838509 -4.287435 -1.032791 -0.089981 7.036152 38.612507 0.000000 1
31.906876 -4.278701 -1.050801 -0.083753 7.129453 38.645729 0.000000 1
31.975983 -4.271263 -1.068810 -0.077525 7.222755 38.678955 0.000000 1
32.045807 -4.265129 -1.086820 -0.071297 7.316056 38.712181 0.000000 1
32.116325 -4.260319 -1.104829 -0.065069 7.409358 38.745403 0.000000 1
32.314602 -4.292964 -1.155891 -0.042539 7.552556 38.878929 0.000000 1
32.411583 -4.380763 -1.180876 -0.023229 7.660075 39.012032 0.000000 1
32.537502 -4.465961 -1.211322 -0.014090 7.731593 39.148556 0.000000 1
32.579254 -4.590877 -1.221200 -0.012716 7.776446 39.289249 0.000000 1
32.689232 -4.694578 -1.245904 -0.011073 7.755466 39.430576 0.000000 1
32.706062 -4.833181 -1.249730 -0.011073 7.869290 39.574764 0.000000 1
32.761456 -4.952699 -1.262927 -0.011237 8.174637 39.713081 0.000000 1
32.765934 -5.086044 -1.263471 -0.012100 8.433446 39.847198 0.000000 1
32.839844 -5.193994 -1.278809 -0.016301 8.699658 39.976139 0.000000 1
32.891991 -5.321768 -1.289505 -0.024346 8.890806 40.117908 0.000000 1
32.833572 -5.494902 -1.274120 -0.029650 8.967440 40.271168 0.000000 1
32.852665 -5.648582 -1.276041 -0.035957 9.079151 40.427788 0.000000 1
32.908421 -5.794592 -1.287374 -0.040916 9.234832 40.588760 0.000000 1
32.891972 -5.971424 -1.282950 -0.041918 9.282690 40.759884 0.000000 1
33.035973 -6.103488 -1.314628 -0.041918 9.304346 40.931133 0.000000 1
33.151421 -6.247052 -1.341183 -0.041417 9.342442 41.104103 0.000000 1
33.307838 -6.398676 -1.376422 -0.031991 9.371370 41.289848 0.000000 1
33.364891 -6.568393 -1.389318 -0.021298 9.515029 41.470650 0.000000 1
33.478336 -6.737394 -1.414598 -0.016403 9.582150 41.659195 0.000000 1
33.482162 -6.926858 -1.415970 -0.011320 9.659459 41.849651 0.000000 1
33.537098 -7.105540 -1.428812 -0.009426 9.750116 42.037102 0.000000 1
33.635674 -7.275578 -1.450674 -0.009426 9.838551 42.220284 0.000000 1
33.720592 -7.446539 -1.468602 -0.010805 9.951025 42.400414 0.000000 1
33.624100 -7.645282 -1.446824 -0.011689 10.091013 42.587883 0.000000 1
33.686428 -7.832306 -1.459567 -0.012716 10.104848 42.781826 0.000000 1
33.813408 -8.006853 -1.485651 -0.012716 10.097762 42.968288 0.000000 1
33.911369 -8.181923 -1.505205 -0.012819 10.105282 43.150318 0.000000 1
33.886673 -8.367922 -1.497068 -0.016301 10.178047 43.334145 0.000000 1
33.946682 -8.544864 -1.507774 -0.018486 10.213807 43.514782 0.000000 1
33.875999 -8.729398 -1.487884 -0.018548 10.289889 43.693832 0.000000 1
34.028915 -8.896194 -1.518220 -0.018446 10.309585 43.870605 0.000000 1
34.075184 -9.071605 -1.527713 -0.017976 10.318651 44.048119 0.000000 1
34.062542 -9.244774 -1.524688 -0.015340 10.447534 44.220676 0.000000 1
34.227905 -9.405069 -1.558461 -0.011998 10.532231 44.385818 0.000000 1
34.314945 -9.567109 -1.577102 -0.007199 10.526900 44.548122 0.000000 1
34.258404 -9.731308 -1.565931 -0.004882 10.507879 44.712440 0.000000 1
34.351574 -9.890578 -1.587049 -0.002601 10.545378 44.871208 0.000000 1
34.548149 -10.067442 -1.633118 -0.001603 10.566240 45.040428 0.000000 1
34.422649 -10.226135 -1.610130 -0.001499 10.495317 45.205696 0.000000 1
34.183739 -10.376005 -1.561016 -0.001499 10.448721 45.359455 0.000000 1
34.149620 -10.534155 -1.554717 -0.001499 10.506964 45.517315 0.000000 1
34.021832 -10.693842 -1.526344 -0.001499 10.532705 45.673077 0.000000 1
33.955875 -10.854765 -1.512301 -0.001083 10.563208 45.830681 0.000000 1
34.296776 -11.008052 -1.587592 -0.000146 10.566266 45.991276 0.000000 1
34.394947 -11.168254 -1.609095 0.000000 10.554084 46.148754 0.000000 1
34.395176 -11.322209 -1.607795 0.000000 10.559736 46.303059 0.000000 1
34.327938 -11.473592 -1.592062 0.000104 10.575411 46.456631 0.000000 1
34.394314 -11.629240 -1.603956 0.002289 10.600222 46.611237 0.000000 1
34.331089 -11.792131 -1.586728 0.002289 10.574142 46.776848 0.000000 1
34.372395 -11.967844 -1.594189 0.002289 10.504057 46.952023 0.000000 1
34.389851 -12.142810 -1.597644 0.002289 10.525352 47.126595 0.000000 1
34.428436 -12.324059 -1.605718 0.002663 10.559253 47.306705 0.000000 1
34.334282 -12.504224 -1.584231 0.005338 10.598266 47.489319 0.000000 1
34.512096 -12.683338 -1.621944 0.009468 10.637362 47.662888 0.000000 1
34.443413 -12.853332 -1.605752 0.011689 10.650676 47.836185 0.000000 1
34.453957 -13.030172 -1.605785 0.012039 10.696623 48.013325 0.000000 1
34.408051 -13.202562 -1.593500 0.012675 10.721514 48.187664 0.000000 1
34.437622 -13.371203 -1.598938 0.012675 10.656884 48.355732 0.000000 1
34.325966 -13.531922 -1.573386 0.012675 10.581144 48.518364 0.000000 1
34.421078 -13.691220 -1.593668 0.012408 10.484769 48.676487 0.000000 1
34.386948 -13.842767 -1.584520 0.010723 10.395803 48.829006 0.000000 1
34.259144 -13.997062 -1.555910 0.006641 10.424545 48.983273 0.000000 1
34.192577 -14.137114 -1.540494 0.001041 10.501028 49.121788 0.000000 1
34.190109 -14.278812 -1.538942 0.000937 10.547549 49.263344 0.000000 1
34.235508 -14.418962 -1.547373 0.000625 10.601105 49.404720 0.000000 1
34.077946 -14.565643 -1.512812 0.000625 10.595890 49.544945 0.000000 1
34.120075 -14.711730 -1.521429 0.000625 10.573236 49.693176 0.000000 1
34.156700 -14.857574 -1.527583 0.000583 10.546673 49.840565 0.000000 1
34.186531 -14.999309 -1.533764 0.000521 10.533613 49.983448 0.000000 1
34.178612 -15.146132 -1.531830 0.000521 10.559302 50.129936 0.000000 1
34.197369 -15.291305 -1.535234 0.000271 10.637225 50.275726 0.000000 1
34.152351 -15.434803 -1.524231 -0.000104 10.592396 50.417255 0.000000 1
33.989029 -15.608492 -1.487345 -0.000104 10.547994 50.580029 0.000000 1
34.019714 -15.763823 -1.493515 -0.000104 10.462683 50.737659 0.000000 1
34.141666 -15.912703 -1.519968 -0.000146 10.450912 50.894329 0.000000 1
34.084675 -16.077429 -1.507416 -0.000271 10.435686 51.055763 0.000000 1
34.129337 -16.231386 -1.516857 -0.000417 10.432195 51.212269 0.000000 1
34.068573 -16.391657 -1.503024 -0.000896 10.344699 51.368694 0.000000 1
34.050095 -16.545769 -1.496939 -0.001603 10.312030 51.521118 0.000000 1
34.047554 -16.692440 -1.494485 -0.001873 10.394685 51.667206 0.000000 1
34.081413 -16.834171 -1.500924 -0.002081 10.534931 51.811165 0.000000 1
34.165302 -16.972757 -1.518457 -0.003058 10.394220 51.954712 0.000000 1
34.132164 -17.116625 -1.510929 -0.003535 10.371532 52.096642 0.000000 1
34.098934 -17.268108 -1.502601 -0.004882 10.580101 52.245766 0.000000 1
34.178497 -17.407551 -1.518562 -0.007199 10.533788 52.389759 0.000000 1
34.039749 -17.554445 -1.487542 -0.011689 10.258972 52.527046 0.000000 1
34.026230 -17.693821 -1.484334 -0.017425 9.847189 52.665173 0.000000 1
34.138130 -17.829330 -1.508481 -0.024183 9.729300 52.808949 0.000000 1
34.129646 -17.975021 -1.506865 -0.034952 9.656728 52.954170 0.000000 1
33.996384 -18.139540 -1.478362 -0.050534 9.586161 53.108471 0.000000 1
34.104591 -18.282942 -1.503756 -0.074154 9.446231 53.261395 0.000000 1
34.236881 -18.423790 -1.535149 -0.102691 9.270789 53.410133 0.000000 1
34.243130 -18.457930 -1.537734 -0.110244 9.227528 53.445141 0.000000 1
34.249386 -18.492104 -1.540319 -0.117796 9.184267 53.480145 0.000000 1
34.255638 -18.526304 -1.542904 -0.125349 9.141006 53.515148 0.000000 1
34.261887 -18.560541 -1.545489 -0.132901 9.097745 53.550159 0.000000 1
34.333267 -18.591461 -1.562322 -0.142076 9.046457 53.582947 0.000000 1
34.404636 -18.623682 -1.579155 -0.151250 8.995168 53.615742 0.000000 1
34.475998 -18.657209 -1.595988 -0.160425 8.943880 53.648529 0.000000 1
34.547340 -18.692039 -1.612821 -0.169600 8.892591 53.681324 0.000000 1
34.576797 -18.725555 -1.620898 -0.174559 8.850762 53.714031 0.000000 1
34.606239 -18.759369 -1.628975 -0.179518 8.808932 53.746746 0.000000 1
34.635674 -18.793488 -1.637052 -0.184477 8.767103 53.779461 0.000000 1
34.665077 -18.827902 -1.645128 -0.189436 8.725273 53.812176 0.000000 1
34.715923 -18.866066 -1.658308 -0.194316 8.710567 53.846790 0.000000 1
34.766701 -18.905025 -1.671488 -0.199196 8.695862 53.881409 0.000000 1
34.817398 -18.944784 -1.684667 -0.204075 8.681156 53.916023 0.000000 1
34.868011 -18.985332 -1.697847 -0.208955 8.666451 53.950642 0.000000 1
34.937477 -19.028858 -1.715718 -0.217120 8.624695 53.985161 0.000000 1
35.006741 -19.073835 -1.733589 -0.225285 8.582939 54.019691 0.000000 1
35.075760 -19.120262 -1.751461 -0.233450 8.541183 54.054211 0.000000 1
35.144516 -19.168137 -1.769332 -0.241615 8.499427 54.088734 0.000000 1
35.244221 -19.223433 -1.794993 -0.244088 8.499053 54.123070 0.000000 1
35.343254 -19.281685 -1.820655 -0.246561 8.498679 54.157410 0.000000 1
35.441540 -19.342873 -1.846317 -0.249034 8.498305 54.191750 0.000000 1
35.538998 -19.406973 -1.871980 -0.251507 8.497931 54.226086 0.000000 1
35.601059 -19.463535 -1.890437 -0.254077 8.522403 54.262012 0.000000 1
35.662643 -19.521593 -1.908896 -0.256647 8.546875 54.297943 0.000000 1
35.723701 -19.581123 -1.927355 -0.259217 8.571346 54.333870 0.000000 1
35.784214 -19.642124 -1.945814 -0.261787 8.595818 54.369801 0.000000 1
35.929951 -19.739462 -1.985187 -0.261413 8.697418 54.404827 0.000000 1
36.072819 -19.843325 -2.024560 -0.261038 8.799019 54.439850 0.000000 1
36.212559 -19.953600 -2.063934 -0.260663 8.900620 54.474876 0.000000 1
36.348930 -20.070148 -2.103307 -0.260289 9.002220 54.509907 0.000000 1
36.419544 -20.152887 -2.126946 -0.260289 9.044523 54.544556 0.000000 1
36.488808 -20.237806 -2.150586 -0.260289 9.086825 54.579201 0.000000 1
36.556652 -20.324873 -2.174224 -0.260289 9.129128 54.613842 0.000000 1
36.623039 -20.414055 -2.197863 -0.260289 9.171431 54.648491 0.000000 1
36.731514 -20.537247 -2.233586 -0.260289 9.175111 54.681927 0.000000 1
36.836380 -20.665064 -2.269310 -0.260289 9.178792 54.715355 0.000000 1
36.937462 -20.797379 -2.305033 -0.260289 9.182473 54.748791 0.000000 1
37.034611 -20.934052 -2.340756 -0.260289 9.186153 54.782219 0.000000 1
37.097130 -21.042568 -2.367139 -0.260289 9.187455 54.815025 0.000000 1
37.157356 -21.153324 -2.393521 -0.260289 9.188756 54.847828 0.000000 1
37.215244 -21.266262 -2.419904 -0.260289 9.190057 54.880634 0.000000 1
37.270729 -21.381317 -2.446287 -0.260289 9.191359 54.913433 0.000000 1
37.298866 -21.472029 -2.465561 -0.260289 9.255370 54.949097 0.000000 1
37.325672 -21.563808 -2.484835 -0.260289 9.319382 54.984760 0.000000 1
37.351120 -21.656631 -2.504108 -0.260289 9.383394 55.020428 0.000000 1
37.375202 -21.750473 -2.523382 -0.260289 9.447406 55.056091 0.000000 1
37.369297 -21.805445 -2.532326 -0.260275 9.484443 55.092583 0.000000 1
37.363087 -21.860634 -2.541271 -0.260262 9.521480 55.129078 0.000000 1
37.356575 -21.916027 -2.550215 -0.260248 9.558517 55.165569 0.000000 1
37.349762 -21.971624 -2.559159 -0.260234 9.595553 55.202065 0.000000 1
37.345787 -22.028160 -2.569216 -0.260234 9.606470 55.236259 0.000000 1
37.341438 -22.084948 -2.579271 -0.260234 9.617387 55.270454 0.000000 1
37.336685 -22.141983 -2.589327 -0.260234 9.628304 55.304649 0.000000 1
37.331543 -22.199253 -2.599382 -0.260234 9.639220 55.338848 0.000000 1
37.333271 -22.264721 -2.612187 -0.260214 9.626422 55.370831 0.000000 1
37.334351 -22.330568 -2.624992 -0.260194 9.613623 55.402809 0.000000 1
37.334782 -22.396786 -2.637797 -0.260173 9.600825 55.434784 0.000000 1
37.334553 -22.463375 -2.650602 -0.260153 9.588026 55.466759 0.000000 1
37.350845 -22.561813 -2.671549 -0.260139 9.547110 55.497852 0.000000 1
37.365341 -22.661156 -2.692495 -0.260126 9.506193 55.528942 0.000000 1
37.378014 -22.761383 -2.713442 -0.260112 9.465277 55.560036 0.000000 1
37.388847 -22.862440 -2.734388 -0.260098 9.424360 55.591125 0.000000 1
相关推荐
AI浩3 小时前
用于自动驾驶的ApolloScape数据集
人工智能·机器学习·自动驾驶
CCC:CarCrazeCurator9 小时前
自动泊车超声波雷达(Sonar)
自动驾驶
奔袭的算法工程师2 天前
CRN源码详细解析(4)-- 图像骨干网络之DepthNet和ViewAggregation
人工智能·pytorch·深度学习·目标检测·自动驾驶
hjs_deeplearning2 天前
文献阅读篇#12:自动驾驶中的基础模型:场景生成与场景分析综述(3)
人工智能·机器学习·自动驾驶
hjs_deeplearning3 天前
文献阅读篇#11:自动驾驶中的基础模型:场景生成与场景分析综述(2)
人工智能·机器学习·自动驾驶
奔袭的算法工程师3 天前
CRN源码详细解析(2)-- 图像骨干网络之Resnet18
网络·人工智能·深度学习·目标检测·自动驾驶
不做无法实现的梦~3 天前
PX4怎么使用使用PlotJuggler分析PX4日志
linux·嵌入式硬件·机器人·自动驾驶
虹科网络安全4 天前
艾体宝方案 | 释放数据潜能 · 构建 AI 驱动的自动驾驶实时数据处理与智能筛选平台
人工智能·机器学习·自动驾驶
不做无法实现的梦~4 天前
使用ros2来跑通mid360的驱动包
linux·嵌入式硬件·机器人·自动驾驶