版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器人学之感知算法:SLAM(同步定位与地图构建):SLAM软件框架与实现1绪论1.1SLAM算法的定义与重要性SLAM(SimultaneousLocalizationandMapping)算法,即同步定位与地图构建,是机器人学领域中一项关键的技术。它允许机器人在未知环境中构建地图,同时确定自身在地图中的位置。这一过程对于自主导航、环境探索和人机交互等应用至关重要。1.1.1定义SLAM算法的核心在于解决机器人在未知环境中移动时,如何实时地构建环境的模型(地图),并同时确定机器人在该模型中的位置和姿态。这一过程涉及传感器数据的处理、环境特征的提取、地图的更新以及机器人位置的估计。1.1.2重要性自主导航:SLAM使机器人能够自主地在环境中移动,避免障碍物,规划路径。环境探索:在未知或动态变化的环境中,SLAM能够帮助机器人实时更新地图,适应环境变化。人机交互:通过SLAM,机器人可以理解其所在环境,更好地与人类用户进行交互。1.2SLAM算法的历史与发展SLAM的概念最早在1986年由HughDurrant-Whyte和JohnJ.Leonard提出。自那时起,SLAM算法经历了从理论到实践的快速发展,特别是在计算机视觉、传感器技术和计算能力的推动下。1.2.1历史早期研究:20世纪80年代,SLAM主要基于激光雷达和声纳传感器,算法复杂度高,计算资源需求大。视觉SLAM:随着计算机视觉技术的进步,视觉SLAM(VisualSLAM)成为研究热点,利用摄像头作为主要传感器,降低了成本和硬件需求。现代发展:近年来,SLAM算法结合了深度学习、多传感器融合等技术,提高了定位精度和地图构建的效率。1.2.2发展趋势多模态融合:结合不同类型的传感器(如激光雷达、摄像头、IMU等),以提高SLAM的鲁棒性和精度。深度学习应用:利用深度学习技术进行特征提取和环境理解,以增强SLAM在复杂环境中的表现。实时性与计算效率:随着机器人应用的普及,对SLAM算法的实时性和计算效率提出了更高要求,推动了算法优化和硬件加速技术的发展。接下来,我们将深入探讨SLAM算法的原理、实现方法以及一些具体的代码示例,以帮助理解这一复杂但重要的技术。1.3示例:基于Python的简单SLAM实现在本节中,我们将通过一个基于Python的简单SLAM算法示例,来展示如何处理传感器数据,构建环境地图,并估计机器人位置。1.3.1环境准备确保安装了以下Python库:pipinstallnumpymatplotlib1.3.2代码示例importnumpyasnp
importmatplotlib.pyplotasplt
#传感器数据模拟
defsimulate_sensor_data():
#假设传感器数据为一系列距离测量值
distances=np.random.normal(10,1,100)#平均距离10,标准差1,共100个测量值
angles=np.linspace(0,2*np.pi,len(distances))#角度从0到2π
returndistances,angles
#构建地图
defbuild_map(distances,angles):
#使用极坐标转换为笛卡尔坐标
x=distances*np.cos(angles)
y=distances*np.sin(angles)
#绘制地图
plt.scatter(x,y,label='MapPoints')
plt.legend()
plt.show()
#机器人位置估计
defestimate_robot_position(distances,angles):
#假设机器人初始位置为(0,0)
robot_x,robot_y=0,0
#简单的平均值估计
avg_distance=np.mean(distances)
avg_angle=np.mean(angles)
#更新机器人位置
robot_x+=avg_distance*np.cos(avg_angle)
robot_y+=avg_distance*np.sin(avg_angle)
returnrobot_x,robot_y
#主函数
defmain():
distances,angles=simulate_sensor_data()
build_map(distances,angles)
robot_x,robot_y=estimate_robot_position(distances,angles)
print(f"EstimatedRobotPosition:({robot_x:.2f},{robot_y:.2f})")
if__name__=="__main__":
main()1.3.3代码解释simulate_sensor_data函数:模拟传感器数据,生成一系列距离和角度测量值。build_map函数:使用传感器数据构建环境地图,通过将极坐标转换为笛卡尔坐标,并使用matplotlib库绘制地图点。estimate_robot_position函数:基于传感器数据估计机器人位置,这里使用了简单的平均值方法,实际应用中会采用更复杂的算法,如扩展卡尔曼滤波(EKF)或粒子滤波。1.3.4运行结果运行上述代码,你将看到一个散点图,代表了构建的环境地图,以及机器人位置的估计值。通过这个简单的示例,我们展示了SLAM算法的基本思想:处理传感器数据,构建环境模型,并估计机器人位置。然而,实际的SLAM算法远比这复杂,涉及更高级的数学和算法,如概率论、图形优化和机器学习等。在后续章节中,我们将继续深入探讨这些内容。2机器人学之感知算法:SLAM软件框架与实现2.1SLAM基础知识2.1.1机器人运动学与动力学原理机器人运动学主要研究机器人关节运动与末端执行器位置和姿态之间的关系,而动力学则关注力和力矩如何影响机器人的运动。在SLAM中,这些知识用于理解和预测机器人的移动,从而更准确地估计其位置。内容运动学模型:描述机器人如何根据其控制输入移动。例如,对于轮式机器人,可以使用差速驱动模型。动力学模型:考虑机器人质量、摩擦力等因素,预测机器人在给定力和力矩下的运动。示例假设一个轮式机器人,其运动学模型可以简化为差速驱动模型。以下是一个Python代码示例,用于计算机器人在给定左右轮速度下的位置更新:importmath
classRobotKinematics:
def__init__(self,wheel_radius,base_width):
self.wheel_radius=wheel_radius
self.base_width=base_width
defupdate_position(self,left_speed,right_speed,dt):
"""
根据左右轮速度和时间间隔更新机器人位置。
:paramleft_speed:左轮速度
:paramright_speed:右轮速度
:paramdt:时间间隔
:return:位置更新量(x,y,theta)
"""
linear_speed=(left_speed+right_speed)/2*self.wheel_radius
angular_speed=(right_speed-left_speed)/self.base_width*self.wheel_radius
delta_x=linear_speed*math.cos(self.theta)*dt
delta_y=linear_speed*math.sin(self.theta)*dt
delta_theta=angular_speed*dt
returndelta_x,delta_y,delta_theta
#示例数据
robot=RobotKinematics(wheel_radius=0.1,base_width=0.5)
left_speed=1.0#m/s
right_speed=1.5#m/s
dt=0.1#秒
#计算位置更新
delta_x,delta_y,delta_theta=robot.update_position(left_speed,right_speed,dt)
print(f"位置更新:x={delta_x},y={delta_y},theta={delta_theta}")2.1.2传感器原理与数据处理原理传感器数据是SLAM算法的关键输入,用于估计机器人位置和构建环境地图。数据处理包括噪声过滤、特征提取和数据融合。内容传感器类型:如激光雷达、摄像头、IMU等。数据处理技术:如卡尔曼滤波、粒子滤波等。示例使用激光雷达数据进行特征提取,以下是一个Python代码示例,使用numpy库处理激光雷达扫描数据:importnumpyasnp
classLidarDataProcessor:
def__init__(self,max_distance):
self.max_distance=max_distance
defextract_features(self,scan_data):
"""
从激光雷达扫描数据中提取特征点。
:paramscan_data:激光雷达扫描数据,格式为[(角度,距离),...]
:return:特征点列表[(x,y),...]
"""
features=[]
forangle,distanceinscan_data:
ifdistance<self.max_distance:
x=distance*np.cos(angle)
y=distance*np.sin(angle)
features.append((x,y))
returnfeatures
#示例数据
lidar_processor=LidarDataProcessor(max_distance=10.0)
scan_data=[(0.0,5.0),(math.pi/4,7.0),(math.pi/2,3.0),(3*math.pi/4,8.0),(math.pi,6.0)]
#提取特征点
features=lidar_processor.extract_features(scan_data)
print(f"特征点:{features}")2.1.3概率论与贝叶斯估计原理概率论和贝叶斯估计在SLAM中用于处理不确定性,如传感器测量误差和机器人运动误差。贝叶斯估计提供了一种更新概率分布的方法,以反映新信息。内容概率分布:如高斯分布。贝叶斯公式:用于更新先验概率分布。示例使用贝叶斯公式更新机器人位置的概率分布,以下是一个Python代码示例,使用scipy.stats库处理高斯分布:fromscipy.statsimportnorm
classBayesianEstimator:
def__init__(self,initial_mean,initial_std):
self.mean=initial_mean
self.std=initial_std
defupdate(self,measurement,measurement_std):
"""
使用贝叶斯公式更新位置的概率分布。
:parammeasurement:测量值
:parammeasurement_std:测量标准差
"""
#计算测量分布
measurement_dist=norm(measurement,measurement_std)
#计算先验分布
prior_dist=norm(self.mean,self.std)
#计算后验分布
posterior_mean=(measurement_dist.mean*(prior_dist.variance/measurement_dist.variance)+
prior_dist.mean*(measurement_dist.variance/prior_dist.variance))/(
1+prior_dist.variance/measurement_dist.variance)
posterior_std=np.sqrt(1/(1/prior_dist.variance+1/measurement_dist.variance))
#更新分布
self.mean=posterior_mean
self.std=posterior_std
#示例数据
estimator=BayesianEstimator(initial_mean=0.0,initial_std=1.0)
measurement=1.0#m
measurement_std=0.5#m
#更新概率分布
estimator.update(measurement,measurement_std)
print(f"更新后的位置估计:mean={estimator.mean},std={estimator.std}")以上示例和内容展示了SLAM基础知识中机器人运动学与动力学、传感器原理与数据处理、概率论与贝叶斯估计的核心概念和应用。通过这些例子,可以更好地理解如何在实际SLAM算法中应用这些理论。3机器人学之感知算法:SLAM软件框架与实现3.1SLAM算法的软件架构在SLAM(SimultaneousLocalizationandMapping)算法的软件架构中,核心组件通常包括:传感器数据处理:处理来自激光雷达、摄像头、IMU等传感器的原始数据。特征提取:从传感器数据中提取关键特征,如角点、线段、平面等。数据关联:确定当前观测到的特征与地图中已有特征的对应关系。状态估计:使用滤波器(如Kalman滤波、粒子滤波)或优化方法(如非线性最小二乘法)来估计机器人位置和地图状态。地图构建:根据机器人位置和观测到的特征,构建或更新环境地图。回环检测:识别机器人是否回到了之前访问过的位置,以修正累积误差。地图优化:通过全局优化方法,如图优化或束调整,来优化地图和机器人轨迹。3.1.1示例:基于粒子滤波的SLAM#示例代码:基于粒子滤波的SLAM算法实现
importnumpyasnp
classParticleFilterSLAM:
def__init__(self,num_particles):
self.num_particles=num_particles
self.particles=np.random.rand(num_particles,3)*2-1#初始化粒子位置和方向
self.weights=np.ones(num_particles)/num_particles#初始化粒子权重
defupdate(self,measurement):
#数据关联:计算每个粒子与测量数据的匹配度
foriinrange(self.num_particles):
self.weights[i]=self.calculate_likelihood(self.particles[i],measurement)
#重采样:根据权重重新选择粒子
self.particles=self.resample(self.particles,self.weights)
defcalculate_likelihood(self,particle,measurement):
#假设的似然函数计算,实际应用中需要根据具体传感器模型实现
returnnp.exp(-np.linalg.norm(particle-measurement)**2/2)
defresample(self,particles,weights):
#系统重采样方法
index=np.random.choice(len(particles),size=len(particles),p=weights)
returnparticles[index]
#假设的测量数据
measurement=np.array([0.5,0.5,0.0])
#初始化SLAM算法
slam=ParticleFilterSLAM(100)
#更新SLAM状态
slam.update(measurement)3.2开源SLAM框架介绍3.2.1GmappingGmapping是基于概率方法的SLAM算法,主要使用激光雷达数据。它通过概率网格地图来表示环境,使用粒子滤波进行定位和地图构建。3.2.2CartographerCartographer是一个开源的SLAM系统,支持2D和3D激光雷达以及视觉传感器。它使用优化方法(如束调整)来构建地图,能够处理大规模环境。3.3Gmapping与Cartographer详解3.3.1GmappingGmapping的核心是概率网格地图的构建和维护。它使用粒子滤波来估计机器人位置,每个粒子代表一个可能的机器人位置和地图状态。当接收到新的激光雷达扫描时,Gmapping会更新每个粒子的权重,然后进行重采样,以保持粒子集的多样性。#Gmapping使用示例
importrospy
fromnav_msgs.msgimportOdometry
fromsensor_msgs.msgimportLaserScan
deflaser_scan_callback(data):
#在这里处理激光雷达数据,更新Gmapping
pass
defodom_callback(data):
#在这里处理里程计数据,更新Gmapping
pass
if__name__=='__main__':
rospy.init_node('gmapping_node')
rospy.Subscriber('/scan',LaserScan,laser_scan_callback)
rospy.Subscriber('/odom',Odometry,odom_callback)
rospy.spin()3.3.2CartographerCartographer使用优化方法来构建地图,它将环境表示为一系列特征点和线段,通过束调整(BundleAdjustment)来优化这些特征的位置,从而构建出更准确的地图。Cartographer支持多种传感器输入,包括2D和3D激光雷达以及视觉传感器。#Cartographer配置示例
#在Cartographer的配置文件中,可以指定传感器类型和参数
sensor:{
#激光雷达参数
num_laser_beams:64
range:120.0
#视觉传感器参数
camera:{
width:640
height:480
frame_rate:30.0
}
}
#优化方法参数
optimization_problem:{
#束调整参数
use_online_correlative_scan_matching:true
real_time_correlative_scan_matcher{
linear_search_window:0.3
angular_search_window:0.05
}
}通过上述代码和配置示例,我们可以看到SLAM算法在软件实现中的基本框架和关键步骤,以及如何使用Gmapping和Cartographer这样的开源框架来实现SLAM。这些框架提供了丰富的功能和优化算法,大大简化了SLAM的开发过程。4机器人学之感知算法:SLAM软件框架与实现4.1SLAM算法实现4.1.1基于特征的SLAM算法原理基于特征的SLAM算法主要依赖于从环境中提取的显著特征,如角点、边缘或特定的纹理模式。这些特征在环境中具有较高的可重复性和稳定性,因此可以作为定位和地图构建的可靠依据。算法通常包括特征检测、特征匹配、位姿估计和地图更新等步骤。内容特征检测:使用如SIFT、SURF或ORB等算法检测环境中的特征点。特征匹配:在连续的帧之间匹配特征点,以估计相机的运动。位姿估计:基于特征匹配结果,使用PnP算法或光束平差等方法估计相机的位姿。地图更新:将检测到的特征点添加到地图中,同时优化地图和相机位姿。示例importcv2
importnumpyasnp
#初始化ORB特征检测器
orb=cv2.ORB_create()
#初始化BFMatcher匹配器
bf=cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck=True)
#读取两帧图像
img1=cv2.imread('frame1.jpg',0)
img2=cv2.imread('frame2.jpg',0)
#检测特征点和计算描述符
kp1,des1=orb.detectAndCompute(img1,None)
kp2,des2=orb.detectAndCompute(img2,None)
#特征匹配
matches=bf.match(des1,des2)
#按距离排序
matches=sorted(matches,key=lambdax:x.distance)
#绘制匹配结果
img3=cv2.drawMatches(img1,kp1,img2,kp2,matches[:10],None,flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
cv2.imshow("FeatureMatching",img3)
cv2.waitKey(0)4.1.2基于直接的SLAM算法原理基于直接的SLAM算法不依赖于特征点,而是直接使用图像像素值来估计相机的运动和构建地图。这种方法通常使用光流或直接方法来计算相机的位姿变化,适用于特征稀少或光照变化较大的环境。内容光流计算:使用如Lucas-Kanade算法来计算像素点的运动向量。位姿估计:基于光流结果,使用直接方法如DSO(DirectSparseOdometry)来估计相机位姿。地图构建:直接使用像素值构建地图,通常需要对图像进行稀疏化处理。示例importcv2
importnumpyasnp
#读取两帧图像
cap=cv2.VideoCapture('video.mp4')
ret,old_frame=cap.read()
old_gray=cv2.cvtColor(old_frame,cv2.COLOR_BGR2GRAY)
#初始化光流参数
lk_params=dict(winSize=(15,15),
maxLevel=2,
criteria=(cv2.TERM_CRITERIA_EPS|cv2.TERM_CRITERIA_COUNT,10,0.03))
#检测初始帧的特征点
p0=cv2.goodFeaturesToTrack(old_gray,mask=None,maxCorners=100,qualityLevel=0.01,minDistance=10)
#创建掩码图像用于绘制轨迹
mask=np.zeros_like(old_frame)
while(cap.isOpened()):
ret,frame=cap.read()
ifnotret:
break
frame_gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
#计算光流
p1,st,err=cv2.calcOpticalFlowPyrLK(old_gray,frame_gray,p0,None,**lk_params)
#选择好的点
good_new=p1[st==1]
good_old=p0[st==1]
#绘制轨迹
fori,(new,old)inenumerate(zip(good_new,good_old)):
a,b=new.ravel()
c,d=old.ravel()
mask=cv2.line(mask,(a,b),(c,d),(0,255,0),2)
frame=cv2.circle(frame,(a,b),5,(0,0,255),-1)
img=cv2.add(frame,mask)
cv2.imshow('frame',img)
ifcv2.waitKey(1)&0xFF==ord('q'):
break
#更新旧帧和旧特征点
old_gray=frame_gray.copy()
p0=good_new.reshape(-1,1,2)
cap.release()
cv2.destroyAllWindows()4.1.3SLAM算法的优化与调整原理SLAM算法的优化通常涉及减少累积误差,提高定位精度和地图质量。这可以通过使用非线性优化技术,如光束平差(BundleAdjustment),以及引入回环检测(LoopClosure)机制来实现。内容光束平差:优化相机位姿和地图点的位置,以最小化重投影误差。回环检测:检测机器人是否回到了之前访问过的位置,以修正累积的定位误差。示例#假设我们有以下数据
poses=np.array([[1,0,0],
[1.1,0.1,0],
[2.2,0.2,0],
[3.3,0.3,0],
[4.4,0.4,0],
[5.5,0.5,0]])
#引入回环检测,假设第1帧和第6帧是同一位置
loop_closure=[(0,5)]
#使用光束平差进行优化
#这里使用了一个假设的优化函数,实际中需要使用如CeresSolver等优化库
defoptimize_poses(poses,loop_closure):
#优化过程
fori,jinloop_closure:
#计算并应用修正
poses[i]=poses[j]
returnposes
#优化后的位姿
optimized_poses=optimize_poses(poses,loop_closure)
print("OptimizedPoses:\n",optimized_poses)以上代码示例展示了如何使用回环检测来修正累积的定位误差。在实际应用中,光束平差的实现会更加复杂,涉及到非线性优化问题的求解。5SLAM算法实践5.1SLAM算法的仿真环境搭建在开始SLAM算法的实践之前,搭建一个合适的仿真环境至关重要。这不仅能够帮助我们理解算法在理想条件下的表现,还能在引入各种现实世界因素时,观察算法的鲁棒性和适应性。以下是一个基于ROS(RobotOperatingSystem)和Gazebo的仿真环境搭建步骤。5.1.1安装ROS选择合适的ROS版本:根据你的操作系统选择合适的ROS版本。例如,对于Ubuntu20.04,推荐使用ROSNoetic。安装ROS:使用以下命令安装ROSNoetic:sudosh-c'echo"deb/ros/ubuntu$(lsb_release-sc)main">/etc/apt/sources.list.d/ros-latest.list'
sudoaptinstallcurl
curl-s/ros/rosdistro/master/ros.asc|sudoapt-keyadd-
sudoaptupdate
sudoaptinstallros-noetic-desktop-full设置ROS环境:确保ROS环境变量正确设置。echo"source/opt/ros/noetic/setup.bash">>~/.bashrc
source~/.bashrc5.1.2安装GazeboGazebo是一个强大的机器人仿真工具,可以模拟各种环境和物理效果。sudoaptinstallros-noetic-gazebo-ros-control
sudoaptinstallros-noetic-gazebo-ros5.1.3安装SLAM工具包在ROS中,常用的SLAM工具包有gmapping、karto_slam和cartographer等。这里以gmapping为例:sudoaptinstallros-noetic-slam-gmapping5.1.4创建仿真环境启动Gazebo:使用以下命令启动Gazebo并加载一个空的世界。gazeboworlds/empty.world加载机器人模型:使用rosrun命令加载一个机器人模型到Gazebo中。rosrungazebo_rosspawn_model-file$(rospackfindturtlebot_description)/urdf/turtlebot.urdf-urdf-modelturtlebot启动SLAM节点:在ROS中启动gmapping节点。roslaunchturtlebot_gazeboturtlebot_world.launch
roslaunchgmappinggmapping_demo.launch运行机器人:使用teleop或编写自己的控制脚本来移动机器人,收集SLAM数据。roslaunchturtlebot_teleopkeyboard_teleop.launch5.2真实环境下的SLAM算法实现在真实环境中实现SLAM算法,需要考虑传感器数据的噪声、环境的动态变化以及计算资源的限制。以下是一个基于cartographer在真实环境中实现SLAM的步骤。5.2.1安装Cartographersudoaptinstallros-noetic-cartographer-ros5.2.2配置Cartographer编辑配置文件:cartographer的配置文件通常位于<package>/config目录下,需要根据你的传感器和环境进行调整。#cartographer/config/cartographer.lua
include"cartographer_ros/luas/occupancy_grid.lua"
include"cartographer_ros/luas/trajectory_builder_2d.lua"启动Cartographer节点:在真实环境中,确保你的机器人已经连接并启动了所有必要的传感器。roslaunchcartographer_roscartographer.launch5.2.3数据收集与处理在真实环境中,数据收集可能需要更长的时间,因为需要考虑到环境的复杂性和机器人的移动速度。使用rviz或cartographer_ros提供的工具来可视化SLAM过程中的地图构建。5.3SLAM算法的调试与优化调试和优化SLAM算法是一个迭代的过程,涉及到算法参数的调整、传感器校准以及计算效率的优化。5.3.1调整算法参数使用rosparam调整参数:cartographer和gmapping等工具都提供了丰富的参数调整选项。rosparamset/cartographer_ros/num_laser_scans10评估性能:使用rqt_plot或rostopichz等工具来监控算法的性能指标,如处理时间、地图精度等。5.3.2传感器校准确保传感器的校准是准确的,这直接影响到SLAM算法的精度。使用tf(Transformations)在ROS中进行传感器位置和姿态的校准。5.3.3计算效率优化数据降采样:减少传感器数据的采样率,可以降低处理数据的计算负担。多线程处理:利用多核处理器的优势,将SLAM算法的不同部分并行处理。硬件加速:如果可能,使用GPU或专门的计算硬件来加速计算密集型任务,如特征匹配和优化。通过以上步骤,你可以在仿真和真实环境中实践SLAM算法,同时进行调试和优化,以提高算法的性能和适应性。6SLAM算法的未来趋势6.1SLAM算法的最新研究进展SLAM(SimultaneousLocalizationandMapping)算法,作为机器人学中的一项关键技术,近年来在理论和应用上都取得了显著的进展。最新的研究趋势主要集中在以下几个方面:多传感器融合:传统的SLAM算法主要依赖于单一传感器,如激光雷达或摄像头。然而,多传感器融合的SLAM算法能够结合不同传感器的优势,提高定位和建图的精度与鲁棒性。例如,结合激光雷达和视觉传感器,可以同时利用激光雷达的高精度距离测量和视觉传感器的丰富环境信息。深度学习的应用:深度学习技术在SLAM中的应用越来越广泛,尤其是在特征提取、环境理解等方面。例如,使用深度神经网络进行视觉特征点的检测和描述,可以显著提高特征匹配的准确性和速度。大规模环境下的SLAM:随着机器人应用范围的扩大,SLAM算法需要在更大规模的环境中工作。研究者们正在探索如何在保持实时性的前提下,处理大规模环境中的数据,如通过地图分区、层次化表示等方法。SLAM在动态环境中的应用:动态环境下的SLAM是一个挑战,因为环境中的移动物体会影响定位和建图的准确性。最新的研究尝试通过动态物体检测和跟踪,以及环境静态部分的分离,来解决这一问题。6.2SLAM算法在无人驾驶领域的应用无人驾驶汽车是SLAM算法应用的一个重要领域。通过SLAM,无人驾驶汽车能够实时构建和更新周围环境的地图,同时确定自身在地图中的位置,这对于车辆的自主导航至关重要。6.2.1示例:基于激光雷达的SLAM在无人驾驶中的实现#导入必要的库
import
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国开大学劳动合同法形考
- 合同法36条对应民法典 区别
- 2024《集体合同示范文本》
- 2024新版个人对个人抵押合同范本
- 紧急事件安全防控
- 2024专卖店劳动合同范本
- 物业工程部技能培训课件
- 2024劳务分包合同范本建筑分包合同范本
- 2024所有户外广告合同标准版
- 2024《水电安装合同》
- 2024-2030年全球及中国湿巾和卫生纸行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 公务员2019年国考《申论》真题及答案(省级)
- 2024年会计专业考试初级会计实务试卷与参考答案
- 职业技术学院材料工程技术专业调研报告
- 五年级阅读《概括题专项训练》
- 2024-2030年中国辐照加速器行业运营态势及未来前景预测研究报告
- 2024年上海市中考政治真题含解析
- 2024年中国铁路南宁局集团限公司招聘81人高频难、易错点500题模拟试题附带答案详解
- 2024三新供电服务限公司第二批供电服务职工招聘261人高频难、易错点500题模拟试题附带答案详解
- 浙江省金华市兰溪市2023-2024学年五年级上学期期中数学试卷
- 药店挂名负责人免责协议书
评论
0/150
提交评论