一起自学SLAM算法
文章平均质量分 89
①对SLAM理论体系做了深入浅出的分析。
②将SLAM与导航两大研究领域有机地串接起来。
③对机器学习所涉及的理论基础进行了全面介绍,特别是对与SLAM前沿方向密切相关的深度学习及与自主导航前沿方向密切相关的强化学习进行了深入对比分析。
机器人研究猿
xiihoo机器人创始人,《机器人SLAM导航:核心技术与实战》一书的作者,曾任职于深圳市智能机器人研究院主持自主导航机器人的研究项目。
展开
-
一起自学SLAM算法:13.4 基于自主导航的应用
连载文章,长期更新,欢迎关注:其实ros-navigation导航框架只是为我们提供了一个最基本的机器人自动导航接口,即从A点到B点的单点导航。然而在实际的应用中,机器人往往要完成复杂的任务,这些复杂的任务都是由一个个基本的任务组合而成的,这些基本任务一般以状态机的形式组合在一起。如图13-7为一个有限状态机(Finite State Machine,FSM)的例子,任何一个FSM都可以用状态转换图来描述,状态转换图中的节点表示FSM中的一个状态,有向加权边表示在输入条件时状态的转换关系。原创 2023-01-30 19:39:23 · 632 阅读 · 1 评论 -
一起自学SLAM算法:13.3 运行自主导航
连载文章,长期更新,欢迎关注:在“xiihoo机器人”中使用ros-navigation导航系统进行自主导航,关于ros-navigation的安装与运行细节可以参考12.1.3节,这里的不同之处是将默认的amcl全局定位替换成了Cartographer和ORB-SLAM2联合重定位,如13-6所示。图13-6 联合重定位首先启动机器人平台相关的节点,就不多说了。接着载入由Cartographer构建并保存的地图文件*.pgm和*.yaml到ros-navigation。原创 2023-01-30 19:25:48 · 524 阅读 · 0 评论 -
一起自学SLAM算法:13.2 运行SLAM构建地图
连载文章,长期更新,欢迎关注:在“xiihoo机器人”中推荐使用基于激光的Cartographer和基于视觉的ORB-SLAM2来建图,并且可以利用Cartographer和ORB-SLAM2进行联合建图来提升定位的稳定性。原创 2023-01-30 19:21:05 · 2147 阅读 · 0 评论 -
一起自学SLAM算法:13.1 运行机器人上的传感器
连载文章,长期更新,欢迎关注:由于xiihoo机器人中已经为电机控制板、激光雷达、IMU和相机安装好了配套的ROS驱动,因此只要在机器人上开启相应传感器的ROS驱动节点就可以使用这些传感器了。关于这几个传感器的工作原理请参考第4章的相关内容,这里就不再赘述了。原创 2023-01-30 18:57:56 · 710 阅读 · 0 评论 -
一起自学SLAM算法:第13章-机器人SLAM导航综合实战
连载文章,长期更新,欢迎关注:通过第1~12章的学习,不难发现SLAM导航技术是一个跨学科且理论与实战紧密结合的复杂系统工程性学科。从第1~6章能看出SLAM导航技术涉及大量软硬件结合方面的知识,比如Linux与ROS编程、嵌入式软硬件开发、传感器驱动、多传感器数据融合等。原创 2023-01-30 18:25:09 · 1318 阅读 · 0 评论 -
一起自学SLAM算法:12.4 导航系统面临的一些挑战
连载文章,长期更新,欢迎关注:通过以上3个导航系统的学习,大家对机器人自主导航系统的工作原理一定不陌生了。虽然这些导航系统能很容易就在机器人中运行起来,但目前的这些导航系统还面临不少问题的挑战,下面列举一些比较有代表性的问题。立体障碍物是机器人导航中很头疼的一个问题,因为2D激光雷达只能扫描某个平面内的障碍物,对于高于或低于扫描平面的障碍物是无法探测的。比如一个很矮的扫地机器人能从桌子底下穿过去,而在扫地机器人上安装一个较高的货架后就会导致碰撞。原创 2023-01-30 01:34:12 · 592 阅读 · 0 评论 -
一起自学SLAM算法:12.3 autoware导航系统
连载文章,长期更新,欢迎关注:上面介绍的ros-navigation和riskrrt导航系统主要都是用于机器人的低速导航,并且大多基于2D地图。而autoware导航系统主要用于无人驾驶汽车的高速导航,并且基于3D地图。除了所导航速度高一点和采用3D地图外,autoware的原理几乎与ros-navigation一样,因此下面主要针对autoware的架构做简单分析,其他内容就不再深入展开了。原创 2023-01-29 21:06:49 · 1213 阅读 · 0 评论 -
一起自学SLAM算法:12.2 riskrrt导航系统
连载文章,长期更新,欢迎关注:对于大多数ROS学习者,最先接触到的导航系统基本都是ros-navigation。不过机器人领域的导航系统实现并不只有ros-navigation,这里要介绍的riskrrt就是另外一种导航系统实现。riskrrt的系统框架基本与ros-navigation一样,也就是地图供应、全局定位和路径规划这些主要模块。原创 2023-01-29 20:49:01 · 728 阅读 · 0 评论 -
一起自学SLAM算法:12.1 ros-navigation导航系统
连载文章,长期更新,欢迎关注:可以说ros-navigation是ROS系统中最重要的组件之一,绝大部分自主移动机器人的导航功能都是基于ros-navigation导航系统实现的。下面将从原理分析、源码解读和安装与运行这3个方面展开讲解ros-navigation导航系统。原创 2023-01-29 20:06:51 · 4218 阅读 · 0 评论 -
一起自学SLAM算法:第12章-典型自主导航系统
连载文章,长期更新,欢迎关注:上一章围绕“我在哪”、“我将到何处去”和“我该如何去”三大核心问题讨论了自主导航中的数学基础,并介绍了其中所涉及的环境感知、路径规划和运动控制这几个核心技术。不过依靠单独的一两个算法很难让机器人的自主导航运行起来,因为自主导航是一个理论性和工程性都很强的课题,往往一个自主导航系统包含多个核心算法实现以及必要的各种工程组件。原创 2023-01-29 19:00:49 · 1184 阅读 · 0 评论 -
一起自学SLAM算法:11.5 强化学习与自主导航
连载文章,长期更新,欢迎关注:强化学习(Reinforcement Learning,RL)[21]属于机器学习领域的一个分支,其学习目标是获得最大回报。在10.3.1节中已经讨论过,机器学习过程主要涉及四个要素:数据、模型、学习策略和学习算法,有监督学习、无监督学习和强化学习都是指学习策略。有监督学习以最小化误差为学习目标,也就是让预测值尽量逼近于训练样本监督标签,这样预测与样本监督标签之间的误差才会越小。原创 2023-01-29 18:40:26 · 1437 阅读 · 3 评论 -
一起自学SLAM算法:11.4 运动控制
连载文章,长期更新,欢迎关注:机器人自主导航涉及SLAM、路径规划、运动控制、环境感知等核心技术,这些技术的大致关系如图11-24所示。其实自主导航问题的本质就是图11-1所描述的那3个问题,首先要知道机器人在哪,然后要知道机器人需要到达的目标在哪,最后就是寻找路径并利用控制策略开始导航。关于目标点,由人或者特定程序触发(比如人通过点击地图上的某个点来告诉机器人应该去哪里;或者语音交互程序接收到某条语音控制指令,然后语音控制指令被转换成地图中的相应目标点发送给机器人;原创 2023-01-29 01:29:34 · 1965 阅读 · 1 评论 -
一起自学SLAM算法:11.3 路径规划
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)原创 2023-01-29 01:13:58 · 1908 阅读 · 0 评论 -
一起自学SLAM算法:11.2 环境感知
连载文章,长期更新,欢迎关注:环境感知就是机器人利用传感器获取自身及环境状态信息的过程,自主导航机器人的环境感知主要包括实时定位、环境建模、语义理解等,下面具体讨论。原创 2023-01-29 00:56:10 · 1019 阅读 · 0 评论 -
一起自学SLAM算法:11.1 自主导航发展简史
连载文章,长期更新,欢迎关注:导航其实是一个很古老的问题,古代军队行军打仗时会将战场的地形绘制在布匹上,然后根据当前观测到的地形地貌与地图比对确定位置。在航海途中周围并没有太多可观测的地形,通常借助指南针和天上的星星来确定位置。而如今航天、航海、汽车、日常出行等方方面面都离不开全球导航卫星系统(Global Navigation Satellite System,GNSS),GNSS其实就是美国的GPS、俄罗斯的GLONASS、欧盟的GALILEO、中国的北斗等众多卫星导航系统的统称。原创 2023-01-29 00:48:40 · 655 阅读 · 0 评论 -
一起自学SLAM算法:第11章-自主导航中的数学基础
连载文章,长期更新,欢迎关注:通过计算机中复杂的决策算法,让机器人实现完全自主化是人类一直以来的梦想。所谓完全自主化,就是在完全没有外界指令的干预下,机器人能通过传感器和执行机构与环境自动发生交互,并完成特定的任务(比如自主语言交流、自主移动或自主导航、搬运物品、洗衣做饭带小孩等)。由于我们生活在一个三维空间环境中,在环境空间中移动是机器人与环境发生交互最基本的形式之一,因此自主导航也被誉为机器人自主化的“圣杯”。从表面上看自主导航就是解决从地点A到地点B的问题,但实现起来非常复杂。原创 2023-01-29 00:10:02 · 915 阅读 · 0 评论 -
一起自学SLAM算法:10.3 机器学习与SLAM
推理、知识、神经网络、机器学习、决策理论等诸多的概念,本身就是在不同的层面不同的时期来讨论的,这些概念之间有些是互相重叠的、有些是发展递进的、有些是特例、有些是不同角度出发的同一观点等等。图10-33 发展历程既然从理论上暂时无法得知智能的真正面貌,那么广大读者也就不必拘泥于理论层面的各种概念,仅从实践的角度讨论和学习主流的一些技术应用就已经够了。如图10-34所示,为人工智能技术应用的大致流程。从实际问题出发,对问题进行分析并提取出一些重要的先验信息以帮助我们构造更合适的智能系统来解决问题。原创 2023-01-28 17:25:55 · 1293 阅读 · 0 评论 -
一起自学SLAM算法:10.2 VINS算法
连载文章,长期更新,欢迎关注:不管是激光SLAM还是视觉SLAM,由于传感器采样率、传感器测量精度、主机计算力等因素的限制,在高速运动状态下定位追踪极易丢失。虽然轮式里程计能为激光SLAM系统提供短期运动预测以避免高速运动时丢失的风险,轮式里程计还能在长走廊这样的低特征环境下提供定位辅助。但是轮式里程计也不是万能的,当地面起伏较大或轮子打滑时,轮式里程计将不再可靠;对于在三维空间工作的视觉SLAM来说,提供二维空间定位信息的轮式里程计很难应用其中。原创 2023-01-28 03:01:30 · 1513 阅读 · 0 评论 -
一起自学SLAM算法:10.1 RTABMAP算法
连载文章,长期更新,欢迎关注:同前面介绍过的大多数算法一样,RTABMAP也采用基于优化的方法来求解SLAM问题,系统框架同样遵循前端里程计、后端优化和闭环检测的三段式范式。这里重点讨论RTABMAP两大亮点,一个亮点是支持视觉和激光融合,另一个亮点是内存管理机制。下面将从原理分析、源码解读和安装与运行这3个方面展开讲解RTABMAP算法。原创 2023-01-27 20:55:53 · 3310 阅读 · 0 评论 -
一起自学SLAM算法:第10章-其他SLAM系统
连载文章,长期更新,欢迎关注:除了前面讲到的激光SLAM和视觉SLAM这两大主流SLAM系统外,还有其他一些SLAM方案也备受关注。比如将激光与视觉融合的SLAM、视觉和IMU融合的SLAM、基于深度学习的端到端SLAM、基于模式识别的语义SLAM等,下面通过典型案例逐一介绍。10.1 RTABMAP算法10.1.1 RTABMAP原理分析10.1.2 RTABMAP源码解读10.1.3 RTABMAP安装与运行10.2 VINS算法10.2.1 VINS原理分析。原创 2023-01-27 20:16:16 · 692 阅读 · 0 评论 -
一起自学SLAM算法:9.3 SVO算法
连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解SVO算法。原创 2023-01-27 17:14:48 · 1040 阅读 · 1 评论 -
一起自学SLAM算法:9.2 LSD-SLAM算法
连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解LSD-SLAM算法。原创 2023-01-27 17:02:38 · 1165 阅读 · 0 评论 -
一起自学SLAM算法:9.1 ORB-SLAM2算法
连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解ORB-SLAM2算法。原创 2023-01-27 16:11:24 · 1203 阅读 · 0 评论 -
一起自学SLAM算法:第9章-视觉SLAM系统
连载文章,长期更新,欢迎关注:上一章介绍了以激光雷达做为数据输入的激光SLAM系统,激光雷达的优点在于数据稳定性好、测距精度高、扫描范围广,但缺点是价格昂贵、数据信息量低、安装部署位置不能有遮挡、雨天烟雾等环境容易失效。相比于激光雷达,视觉传感器价格便宜许多、所采集到的图像数据信息量更高、室内室外场景都能适用并且雨天烟雾场景影响较小,不过视觉传感器数据稳定性和精度较差、巨大的数据量也消耗更大的计算资源。主流的视觉传感器包括单目、双目和RGB-D这3类相机,其原理见4.3节相关内容。原创 2023-01-26 23:07:08 · 2480 阅读 · 0 评论 -
一起自学SLAM算法:8.3 LOAM算法
连载文章,长期更新,欢迎关注:不管是Gmapping还是Cartographer,通常都是采用单线激光雷达作为输入并且只能在室内环境运行。虽然Cartographer支持2D建图和3D建图模式,但是Cartographer采用3D建图模式构建出来的地图格式仍然为2D形式的地图。这里介绍一种用在室外环境的激光SLAM算法,即LOAM算法。该算法利用多线激光雷达,能构建出3D点云地图。LOAM算法是一款非常经典的SLAM算法,曾经霸占KITTI数据集效果榜首很长一段时间。原创 2023-01-26 22:33:35 · 1484 阅读 · 0 评论 -
一起自学SLAM算法:8.2 Cartographer算法
连载文章,长期更新,欢迎关注:Gmapping代码实现相对简洁,非常适合初学者入门学习。但是Gmapping属于基于滤波方法的SLAM系统,明显的缺点是无法构建大规模的地图,这一点已经在第7章中讨论过了。而基于优化的方法则可以构建大规模的地图,基于优化的方法实现的激光SLAM算法也有很多,比如Hector、Karto、Cartographer等。原创 2023-01-26 21:59:57 · 9277 阅读 · 1 评论 -
一起自学SLAM算法:8.1 Gmapping算法
连载文章,长期更新,欢迎关注:下面将从原理分析、源码解读和安装与运行这3个方面展开讲解Gmapping 算法。首先要知道,Gmapping是一种基于粒子滤波的算法。在7.7.2节中已经提到过用RBPF(Rao-Blackwellization Particle Filter)这种粒子滤波器来求解SLAM问题,Fast-SLAM算法就是其典型实现之一。其中也有人基于RBPF来研究构建栅格地图(Grid Map)的SLAM算法,它就是ROS中大名鼎鼎的Gmapping算法。不过在Gmapping算法中,对RBP原创 2023-01-22 21:35:51 · 6046 阅读 · 1 评论 -
一起自学SLAM算法:第8章-激光SLAM系统
连载文章,长期更新,欢迎关注:上一章系统地介绍了SLAM的数学理论,从本章开始学习重心将转移到实际项目代码上。这一章将介绍3种流行的激光SLAM算法,即机器人主要通过激光雷达感知环境信息。首先介绍ROS中最经典的基于粒子滤波的Gmapping算法;基于滤波方法的SLAM系统明显的缺点是无法构建大规模的地图,而基于优化的方法可以解决这个问题,这里介绍时下非常流行的基于优化的Cartographer算法;原创 2023-01-21 20:23:39 · 3260 阅读 · 1 评论 -
一起自学SLAM算法:7.7 典型SLAM算法
连载文章,长期更新,欢迎关注:针对式(7-38)所述的在线SLAM系统,以扩展卡尔曼滤波(EKF)为代表的滤波方法,是求解该状态估计问题最典型的方法,在7.4节中已经详细讨论了这些滤波方法的基础原理,而基于滤波方法基础原理的两种典型实现框架EKF-SLAM和Fast-SLAM将在下面进行详细讨论。虽然式(7-39)所示的完全SLAM系统可以用滤波方法求解,比如著名的Fast-SLAM实现框架。但是,贝叶斯网络表示下的完全SLAM系统能很方面地转换成因子图表示,这部分内容已经在7.2.4节中讨论过了。原创 2023-01-21 19:46:52 · 2115 阅读 · 0 评论 -
一起自学SLAM算法:7.6 SFM、BA和SLAM比较
连载文章,长期更新,欢迎关注:SFM、BA和SLAM是在不同研究领域所讨论的问题,由于经常会遇到并且初学者比较容易混淆,这里就拿出来说明一下。SFM(structure from motion,运动重建)是计算机视觉领域的概念,通过收集到的无序图片进行离线三维重建,可以理解为多个图片的拼接。SFM一般使用在比较大的范围,比如构建一个城市的百度地图。SFM具有两个鲜明的特点,一个特点是输入算法的图片是无序的,另一个特点是重建过程离线进行对实时性没有要求。原创 2023-01-21 16:41:31 · 451 阅读 · 0 评论 -
一起自学SLAM算法:7.5 基于因子图的状态估计
连载文章,长期更新,欢迎关注:虽然式(7-90)所示的完全SLAM系统可以用滤波方法求解,比如著名的Fast-SLAM实现框架。但是,贝叶斯网络表示下的完全SLAM系统能很方面地转换成因子图表示,这部分内容已经在7.2.4节中讨论过了。利用因子图表示完全SLAM问题,然后用最小二乘估计进行求解会更方便。这样贝叶斯网络中的最大后验估计就等效为因子图中的最小二乘估计,这种最小二乘估计常常是非线性最小二乘估计。原创 2023-01-21 11:27:03 · 736 阅读 · 0 评论 -
一起自学SLAM算法:7.4 基于贝叶斯网络的状态估计
连载文章,长期更新,欢迎关注:在7.2.4节中,讨论了表示机器人观测与运动之间依赖关系的概率图模型,主要是贝叶斯网络(实际应用在机器人中的是)和马尔可夫网络(实际应用在机器人中的是在概率图模型表示的基础上,就可以利用可观测量(和)推理不可观测量(和),这个概率推理过程也叫状态估计,在7.3节中对基础性的估计理论已经进行了讨论。前面这些关于表示和推理的讨论都是基于一般情况而言,不涉及机器人实际量测数据。原创 2023-01-21 10:21:47 · 1771 阅读 · 0 评论 -
一起自学SLAM算法:7.3 估计理论
连载文章,长期更新,欢迎关注:不管是用贝叶斯网络还是因子图,一旦SLAM问题用概率图模型得到表示后,接下来就是利用可观测量(和)推理不可观测量(和),也就是说SLAM问题的求解过程是一个状态估计。在讲解7.4和7.5节具体状态估计方法之前,大家需要先对估计理论[3] p110~138有所了解。原创 2023-01-21 00:15:21 · 1306 阅读 · 0 评论 -
一起自学SLAM算法:7.2 SLAM中的概率理论
连载文章,长期更新,欢迎关注:考虑实际机器人问题中存在的众多不确定性因素,比如传感器测量噪声、电机控制偏差、计算机软件计算精度近似等。利用概率描述机器人中的不确定性,这样机器人中的不确定性就可以在概率理论框架下被计算和推演,这就是著名的概率机器人学[4]。为了帮助大家理解不确定性是如何被计算的,下面用概率机器人学[4] p6中的经典例子给大家作说明。图7-3 概率机器人学如图7-3所示,假设机器人在长长的走廊上漫步,由于种种原因机器人无法知道自己的位置坐标。这里可以用简单的一维坐标x。原创 2023-01-20 18:15:45 · 1856 阅读 · 0 评论 -
一起自学SLAM算法:7.1 SLAM发展简史
连载文章,长期更新,欢迎关注:纵观历史,历经30多年的发展,SLAM已经不是一个新鲜事物了。但要得益于近几年来火遍全球的人工智能及无人驾驶技术,SLAM才真正进入大众的视野。虽然这些年SLAM研究取得了无数举世瞩目的成果,但是国内的研究状态还处于起步阶段,相关专业学习资料很少,并兼理论性和实践性的系统化归纳整理资料就更少了。为了帮助国内的广大学习者更深入地理解SLAM技术,这里特意对SLAM发展历史做一个梳理,通过对SLAM数学理论发展演进过程的介绍,帮助广大学习者把握SLAM技术背后的本质。原创 2023-01-20 16:34:14 · 2226 阅读 · 0 评论 -
一起自学SLAM算法:第7章-SLAM中的数学基础
连载文章,长期更新,欢迎关注:机器人技术的本质可以用图6-24所示的模型来表示,模型中主要包括感知、决策和交互3个部分。机器人通过搭载的传感器对环境进行感知,即传感器是机器人系统的输入端;机器人通过搭载的执行机构与环境进行交互,即执行机构是机器人系统的输出端;决策作为机器人的中枢系统连接输入端和输出端。决策由低智能的认知层和高智能的逻辑推理层构成,常见的人脸识别、语音识别、机器人定位、机器人避障等都属于低智能的认知层,而复杂的逻辑推理在机器人中还很难实现。原创 2023-01-20 16:15:56 · 2962 阅读 · 0 评论 -
一起自学SLAM算法:6.3 典型机器人底盘搭建
连载文章,长期更新,欢迎关注:机器人是一个复杂的装置,涉及到执行机构、感知、决策等主要环节。机器人上的配备的常用执行机构有轮式运动底盘、机械手臂、音响和显示屏;机器人上的感知设备通常有激光雷达、声呐、摄像头、IMU、轮式里程计编码盘、麦克风、触摸感应;机器人的决策是机器人智能的体现,机器人通常借助感知装置持续跟外部环境进行交互,从而来获取机器人的状态和环境的状态,我们可以简单的把机器人获取自身状态的行为叫做自我认知,把机器人获取环境状态的行为叫做环境认知。原创 2023-01-20 15:59:45 · 1657 阅读 · 0 评论 -
一起自学SLAM算法:6.2 底盘性能指标
连载文章,长期更新,欢迎关注:底盘是移动机器人的核心部件,也是很多商业机器人公司的核心技术所在。底盘的研发,涉及到电机控制系统、运动学模型软硬件、机械机构等交叉学科,开发难度还是很大的。如果是机器人的初学者,建议直接购买市场上成熟的底盘来学习,等掌握了底盘的软硬件各项功能和原理后,再根据自己的能力和需求设计自己的底盘。在选购底盘的时候,需要考虑底盘各项性能指标,比如载重能力、动力性能、控制精度、定位精度等。下面就来介绍这些指标参数,以便于大家根据需求选择合适的底盘。原创 2023-01-20 15:13:59 · 1119 阅读 · 0 评论 -
一起自学SLAM算法:6.1 底盘运动学模型
连载文章,长期更新,欢迎关注:轮式机器人底盘按照转向方式的不同,可以分为两轮差速模型、四轮差速模型、阿克曼模型、全向模型等。两轮差速模型、四轮差速模型、阿克曼模型也称为运动受约束模型,全向模型也称为运动不受约束模型。介绍到的这几种模型都是轮式底盘模型,除此之外还有其他一些底盘模型,比如双足底盘模型、四足底盘模型、六足底盘模型、多足与轮式复合底盘模型等,不过这些只需要了解即可,并不要求掌握。原创 2023-01-20 11:48:43 · 4652 阅读 · 0 评论 -
一起自学SLAM算法:第6章-机器人底盘
连载文章,长期更新,欢迎关注:底盘是机器人传感器和机器人主机的载体,也是移动机器人的基本形式。移动机器人通常可以采用轮式和足式进行移动,通过电机驱动轮子移动的机器人即轮式机器人,通过仿生式的多足关节移动的机器人即多足机器人。由于多足机器人控制非常复杂,所以商业应用较多的是轮式机器人。本章主要对轮式机器人底盘进行讨论,包括底盘运动学模型、底盘性能指标和典型机器人底盘搭建。通过本章的学习,很容易就能搭建出自己的移动底盘,并用于后续SLAM导航学习之中。6.1 底盘运动学模型6.1.1 两轮差速模型。原创 2023-01-19 15:45:31 · 1240 阅读 · 0 评论