前言:

在轮式自主移动机器人的研发过程中,编程技术的重要性不言而喻。编程不仅涉及到机器人各种功能模块的协调运作,还决定了机器人能否实现复杂的行为决策和控制。首先,编程技术为机器人提供了“大脑”,从而使其能够感知、理解和响应周围环境。例如,通过编程,机器人可以识别不同的物体、颜色和声音,并根据这些信息做出相应的动作。此外,编程还可以使机器人具备一定的“思维”能力,例如解决路径规划、避障等问题。

在机器人领域中,编程技术具有广泛的应用。例如,编程可以使机器人自主完成一项任务,如清洁、搬运或焊接。编程还可以使机器人适应不同的环境,如在室内或室外、白天或晚上的情况下都能正常运行。此外,编程技术还可以实现机器人的远程控制和监测,从而确保机器人的安全和稳定运行。编程技术在机器人领域中发挥着越来越重要的作用。未来,随着机器人技术的不断发展,编程技术也将不断创新和完善,从而实现机器人在更多领域中的应用。

关键词: 轮式自主移动机器人、编程技术、功能模块协调、行为决策、路径规划

一、研究背景:

随着科技的迅速发展,轮式自主移动机器人已成为自动化和智能化领域的重要研究方向。这类机器人能够在没有人类直接操作的情况下,自主完成任务,如工业生产、环境监测、物流配送等。其核心在于通过高度集成的编程技术实现复杂的行为决策和精确的控制。编程技术在轮式自主移动机器人的研发中扮演着至关重要的角色。它不仅涉及机器人内部各个功能模块的协调运作,如传感器数据处理、运动控制、任务执行等,还决定了机器人能否有效地感知环境、做出决策并执行任务。通过编程,机器人能够识别环境中的物体、颜色和声音,并据此做出相应的动作,如避障、路径规划等。
在实际应用中,编程技术使机器人能够适应多种环境,无论是室内还是室外,白天还是夜晚,都能保持高效稳定的运行。例如,在工业生产中,轮式自主移动机器人可以在复杂的工厂环境中灵活导航,自动搬运物料,避免障碍物并优化路径,从而提高生产效率,减少人工成本。在环境监测中,这些机器人可以自主巡逻,实时采集数据,监测环境变化,提供及时的预警信息。此外,编程技术还支持轮式自主移动机器人的远程控制和实时监测,确保机器人在执行任务时的安全性和可靠性。通过远程编程和控制,操作员可以在远离现场的情况下,对机器人进行指挥和调度,实时监控机器人的运行状态和任务进展,及时发现并解决问题。

随着机器人技术的不断进步,编程技术也在不断创新和完善。例如,机器学习和人工智能算法的引入,使得机器人能够从经验中学习,不断优化其行为和决策。自适应控制算法使机器人能够在动态变化的环境中,迅速调整其运行策略,保持高效稳定的性能。模块化编程技术则使得机器人的软件系统更加灵活和可扩展,能够根据不同的任务需求,灵活组合和重新配置功能模块。

未来的发展趋势将更加注重编程技术的智能化、自适应性和可扩展性,以满足日益复杂的应用需求,推动机器人在更多领域的广泛应用。例如,在医疗领域,轮式自主移动机器人可以自主执行手术或运送药品;在农业领域,这些机器人可以自主检测作物生长状态并进行精准施肥和喷药;在家庭服务领域,机器人可以自主进行清洁、安防等工作,为人们提供更加智能化的生活服务。编程技术在轮式自主移动机器人的研发和应用中起着关键性的作用。随着技术的不断进步,编程技术将为机器人带来更强大的功能和更广泛的应用前景,推动各行各业的智能化转型。


图1-1 现代轮式自主移动机器人

1.2 研究意义

轮式自主移动机器人的迅速发展不仅代表了自动化和智能化领域的技术进步,也为各行各业带来了深远的影响。通过对编程技术的深入研究,可以更好地推动轮式自主移动机器人的普及和应用。
在工业生产中,轮式自主移动机器人能够替代人工完成许多重复性、危险性高的任务,如物料搬运、组装和检验等。通过编程技术,机器人能够在复杂的工厂环境中灵活导航和避障,优化生产流程,从而提高生产效率,减少人为错误,降低运营成本。这对于企业提高竞争力,提升经济效益具有重要意义。在环境监测领域,轮式自主移动机器人可以自主巡逻和采集数据,通过实时监测环境变化,提供及时的预警信息。

图1-2 现代搬运轮式自动机器人
在物流配送中,轮式自主移动机器人能够自主完成货物的搬运和配送任务,通过路径优化和避障技术,提升物流运输的效率和准确性。编程技术的应用,使得机器人能够适应各种复杂的物流环境,从而减少人工干预,提升物流系统的整体效率和服务质量。在医疗领域,轮式自主移动机器人可以自主执行手术、运送药品和医疗器械,降低医护人员的工作强度,提高医疗服务的精准性和效率。在农业领域,机器人可以进行精准的施肥、喷药和监测作物生长状态,提升农业生产的智能化水平。编程技术的不断创新和完善,为这些领域带来了新的发展机遇。

图1-3 现代物料搬运机器人
在家庭服务领域,轮式自主移动机器人可以承担家庭清洁、安防和陪护等任务,为人们提供更加便捷和智能的生活服务。编程技术的进步,使得机器人能够更加灵活地应对家庭环境的变化,提升用户体验和生活质量。轮式自主移动机器人的研发和应用,推动了编程技术、人工智能、传感技术等多领域的技术进步。通过相关研究,不仅可以培养大量高素质的科技人才,推动科研创新,还能够促进跨学科的交流与合作,形成良性的科技生态圈。

图1-4 适用于多场景下的家庭服务机器人
研究编程技术在轮式自主移动机器人中的应用,不仅具有重要的理论意义,还具有广泛的实际应用价值。通过不断创新和完善编程技术,可以实现轮式自主移动机器人在更多领域的广泛应用,推动各行各业的智能化转型和升级,提高社会生产力和生活质量。

1.3 国内外研究现状

1.3.1 单机器人SLAM研究现状

1. 单机器人SLAM国外研究现状

单机器人同步定位与地图构建(SLAM)技术是自主移动机器人领域的核心研究课题之一。SLAM技术使机器人能够在未知环境中同时构建环境地图并实时确定自身位置。国外学者在单机器人SLAM技术的研究方面取得了显著进展。

(1) 经典算法研究
EKF-SLAM(扩展卡尔曼滤波SLAM):
扩展卡尔曼滤波(EKF)是早期用于SLAM问题的经典算法。它利用非线性系统的线性近似,处理机器人及其传感器的不确定性。Montemerlo等人通过对EKF-SLAM的改进,提高了其在大规模环境中的稳定性和精度。
FastSLAM:
FastSLAM算法基于粒子滤波和贝叶斯网络,通过将SLAM问题分解为同时进行的地图构建和定位两部分来解决。Thrun等人提出的FastSLAM及其改进版本FastSLAM 2.0,显著提升了SLAM的计算效率和精度。
Graph-based SLAM(图优化SLAM):
图优化方法将SLAM问题表示为图结构,通过优化图中的节点和边来解决机器人定位和地图构建问题。Kummerle等人提出的g2o(General Graph Optimization)框架用于处理图优化问题,成为图优化SLAM中广泛使用的工具。
(2)视觉SLAM
视觉SLAM利用摄像头获取的图像信息进行定位和地图构建,近年来得到了广泛关注。
ORB-SLAM:
ORB-SLAM(Oriented FAST and Rotated BRIEF SLAM)由Mur-Artal等人提出,是一种基于特征点的视觉SLAM算法。ORB-SLAM通过提取和匹配特征点,实现了高效且精确的定位与地图构建,适用于单目、双目和RGB-D相机。
LSD-SLAM:
LSD-SLAM(Large-Scale Direct Monocular SLAM)是一种直接法的单目视觉SLAM算法,由Engel等人提出。该算法直接利用图像的像素强度信息构建稠密地图,适用于大规模环境下的实时应用。
VINS-Mono:
VINS-Mono(Visual-Inertial Navigation System Mono)由Qin等人提出,结合了视觉信息和惯性测量单元(IMU)数据,通过紧耦合优化实现高精度定位与地图构建,广泛应用于无人机和移动机器人领域。
(3) 深度学习在SLAM中的应用
随着深度学习技术的飞速发展,研究人员开始将其引入SLAM领域,以提升SLAM系统的鲁棒性和精度。
DeepVO:
DeepVO是基于深度学习的视觉里程计算法,由Wang等人提出。该算法利用卷积神经网络(CNN)从输入图像中直接估计相机的相对位姿,提升了视觉里程计的精度。
DS-SLAM:
DS-SLAM(Semantic SLAM)结合了深度学习的语义分割技术,通过分割图像中的不同物体,优化SLAM系统的地图构建和定位精度。Schneider等人提出的DS-SLAM利用语义信息,使SLAM系统在动态环境中表现更为稳定。
(4)多传感器融合SLAM
多传感器融合SLAM通过整合来自不同传感器的数据,如激光雷达、视觉、IMU和超声波,提升SLAM系统的鲁棒性和精度。
LIO-SAM:
LIO-SAM(LiDAR Inertial Odometry and Mapping)由Shan等人提出,结合了激光雷达和惯性测量单元的数据,通过紧耦合优化实现高精度的定位与地图构建,适用于复杂环境中的自主导航。
V-LOAM:
V-LOAM(Visual-LiDAR Odometry and Mapping)结合了视觉和激光雷达数据,通过视觉里程计提供精确的短期运动估计,激光雷达提供精确的距离测量,综合两者优点,提升了SLAM系统的整体性能。
国外在单机器人SLAM技术研究方面取得了诸多进展,涵盖经典算法、视觉SLAM、深度学习应用以及多传感器融合等多个方向。这些研究成果不仅提升了SLAM系统的性能,还为未来机器人在复杂环境中的自主导航应用奠定了坚实的基础。

2. 单机器人SLAM国内研究现状

近年来,国内在单机器人同步定位与地图构建(SLAM)技术的研究方面也取得了显著进展,涵盖了经典SLAM算法、视觉SLAM、深度学习在SLAM中的应用以及多传感器融合SLAM等多个方向。以下是国内在单机器人SLAM研究领域的一些主要进展和代表性工作:

(1) 经典算法研究
国内的研究团队在经典SLAM算法上进行了一系列改进和优化,提升了其在实际应用中的性能。
改进的EKF-SLAM:
国内学者对扩展卡尔曼滤波SLAM(EKF-SLAM)进行了优化,如对滤波器的更新策略和数据关联方法进行了改进,增强了算法的鲁棒性和稳定性。例如,清华大学的研究团队在传统EKF-SLAM的基础上,提出了基于自适应数据关联的改进方法,提高了系统在动态环境中的适应性。
改进的FastSLAM:
国内的研究团队也对FastSLAM算法进行了优化。例如,浙江大学的研究团队对FastSLAM进行了改进,通过引入更高效的粒子滤波和地图更新方法,显著提升了SLAM系统在大规模环境中的性能。
(2)视觉SLAM
视觉SLAM是国内研究的热点领域,许多高校和研究机构在这一领域取得了重要成果。
ORB-SLAM的改进:
国内研究团队对经典的ORB-SLAM算法进行了多种改进。例如,北京大学的研究团队提出了一种基于自适应特征点选择的改进ORB-SLAM算法,提升了系统的定位精度和鲁棒性。
DSO(Direct Sparse Odometry)算法研究:
北京航空航天大学的研究团队在直接法视觉SLAM——DSO的基础上,提出了多种改进,如引入语义信息和深度学习技术,提升了算法在动态环境中的稳定性和精度。
VINS-Mono的应用:
国内研究团队广泛应用和改进VINS-Mono算法。例如,香港科技大学的研究团队在VINS-Mono基础上,结合更高效的优化方法和多传感器融合技术,提升了系统的精度和实时性。
(3)深度学习在SLAM中的应用
国内学者积极探索深度学习技术在SLAM中的应用,取得了显著成果。
深度学习与传统SLAM的结合:
清华大学的研究团队提出了一种基于深度学习的位姿估计方法,将其与传统SLAM算法相结合,显著提升了系统在复杂环境中的定位精度。
基于深度学习的语义SLAM:
复旦大学的研究团队提出了一种基于深度学习的语义分割算法,将语义信息融入SLAM系统中,提高了地图构建的精度和环境理解能力。
(4)多传感器融合SLAM
多传感器融合SLAM技术在国内也得到了广泛研究,研究团队通过融合不同类型的传感器数据,提升SLAM系统的鲁棒性和精度。
激光雷达与视觉融合SLAM:
上海交通大学的研究团队提出了一种激光雷达与视觉融合的SLAM系统,通过结合激光雷达的精确距离测量和视觉传感器的丰富环境信息,实现了高精度的定位与地图构建。
IMU与视觉融合SLAM:
浙江大学的研究团队在VINS-Mono的基础上,进一步融合IMU和视觉数据,通过优化算法提升了系统的定位精度和鲁棒性,广泛应用于无人机和移动机器人领域。
(5)实际应用与产业化
国内SLAM技术的研究不仅局限于学术领域,还在实际应用和产业化方面取得了显著进展。许多科技公司和初创企业积极投入SLAM技术的研发和应用,如小米、华为、百度等公司在自主导航、自动驾驶和智能机器人领域推出了多款基于SLAM技术的产品,推动了SLAM技术的产业化进程。

国内在单机器人SLAM技术的研究方面取得了显著进展,涵盖了经典算法、视觉SLAM、深度学习应用以及多传感器融合等多个方向。这些研究不仅提升了SLAM系统的性能,还为机器人在复杂环境中的自主导航应用提供了坚实的理论基础和技术支持。随着研究的不断深入,国内SLAM技术将进一步推动机器人技术的进步和应用普及。

图1-5 国内SLAM单机器人设计

1.3.2 多机器人SLAM研究现状

1. 多机器人SLAM研究国外现状

多机器人同步定位与地图构建(SLAM)技术是近年来研究的热点之一。通过多台机器人协同工作,可以显著提升环境感知的覆盖范围和效率,增强系统的鲁棒性和可靠性。国外学者在多机器人SLAM的研究方面取得了显著进展,涵盖了算法优化、协同策略、通信机制和实际应用等多个方面。以下是国外在多机器人SLAM研究领域的一些主要进展和代表性工作:
(1)协同SLAM算法
分布式SLAM(Distributed SLAM):
分布式SLAM通过在多台机器人之间分配计算任务来实现协同工作。Howard等人提出了一种分布式EKF-SLAM算法,每台机器人独立执行SLAM任务,并通过交换位姿和地图信息实现协同。同时,Cunningham等人提出的分布式图优化方法(DDF-SAM),通过分布式因子图优化,提高了多机器人SLAM的计算效率和鲁棒性。
合作SLAM(Cooperative SLAM):
合作SLAM强调机器人之间的密切协作,通过共享信息提高整体系统性能。Fox等人提出了一种基于Markov决策过程的合作SLAM方法,通过决策策略优化机器人之间的合作。Bourgault等人研究了多机器人之间的观测共享和信息融合,通过最大化共享信息的使用,提升了SLAM系统的性能。
(2)多机器人通信机制
多机器人SLAM需要高效的通信机制来传递位姿、地图和观测信息。
无线通信:
无线通信是多机器人SLAM中的关键技术之一。国外研究团队研究了基于Wi-Fi、ZigBee等无线通信技术的多机器人SLAM系统,优化了数据传输的实时性和可靠性。例如,Zhou等人提出了一种基于Wi-Fi的多机器人SLAM系统,通过优化通信协议,实现了高效的数据共享和协同工作。
基于网络的SLAM:
基于网络的SLAM方法通过网络连接实现机器人之间的信息交换和协同工作。Paz等人提出了一种基于网络的多机器人SLAM框架,通过网络连接实现高效的信息共享和地图融合。此外,Doherty等人研究了基于物联网(IoT)的多机器人SLAM,通过IoT设备实现机器人与环境之间的信息交互。
(3)多机器人SLAM中的数据融合
数据融合是多机器人SLAM中的重要研究方向,通过融合多台机器人感知的数据,可以提高地图的精度和环境感知能力。
基于Kalman滤波的数据融合:
Kalman滤波是多机器人SLAM中常用的数据融合方法。Thrun等人提出了一种基于信息滤波的数据融合方法,通过信息矩阵的加权融合,实现了高效的多机器人数据融合和地图构建。
基于图优化的数据融合:
图优化方法在多机器人SLAM中得到了广泛应用。Olson等人提出了一种基于因子图的数据融合方法,通过优化因子图中的节点和边,提升了地图构建的精度和一致性。此外,Grisetti等人研究了基于g2o框架的多机器人图优化方法,通过高效的图优化算法,实现了多机器人协同SLAM。
(4) 实际应用与实验验证
国外研究团队在多机器人SLAM的实际应用方面也取得了显著进展,通过实验验证了多机器人SLAM系统的性能和可行性。
无人机编队SLAM:
Unmanned Aerial Vehicle (UAV) 编队SLAM是多机器人SLAM中的重要应用方向。Michael等人研究了无人机编队SLAM,通过协调多架无人机的运动,实现了大范围环境的高效感知和地图构建。
地面机器人集群SLAM:
地面机器人集群SLAM在灾后救援、环境监测等领域具有重要应用价值。国外研究团队通过实验验证了地面机器人集群SLAM系统的性能,如Burgard等人研究的地面机器人协同SLAM系统,通过多机器人协同,实现了复杂环境下的高效探测和地图构建。
国外在多机器人SLAM技术研究方面取得了显著进展,涵盖了协同SLAM算法、多机器人通信机制、数据融合以及实际应用与实验验证等多个方向。这些研究成果不仅提升了多机器人SLAM系统的性能,还为未来多机器人系统在复杂环境中的应用提供了坚实的理论基础和技术支持。随着研究的不断深入,多机器人SLAM技术将在更广泛的应用场景中发挥重要作用。

2. 多机器人SLAM研究国内现状

多机器人同步定位与地图构建(SLAM)技术在国内也得到了广泛研究和探索。多机器人SLAM通过多台机器人协同工作,能够显著提高环境感知的覆盖范围和效率,增强系统的鲁棒性和可靠性。以下是国内在多机器人SLAM研究领域的一些主要进展和代表性工作:
(1)多机器人协同SLAM算法
分布式SLAM:
国内研究团队在分布式SLAM算法方面进行了深入研究。例如,中国科学院自动化研究所的研究团队提出了一种基于分布式图优化的多机器人SLAM方法,通过在机器人之间分配计算任务和信息交换,实现了高效的地图构建和定位。
合作SLAM:
合作SLAM强调机器人之间的密切协作,通过共享信息提高整体系统性能。国内学者如清华大学的研究团队提出了一种基于信息论的合作SLAM方法,通过优化信息共享策略,提升了多机器人系统的协同效率。

(2)多机器人通信机制
多机器人SLAM需要高效的通信机制来传递位姿、地图和观测信息。
无线通信:
无线通信是多机器人SLAM中的关键技术之一。国内研究团队研究了基于Wi-Fi、ZigBee等无线通信技术的多机器人SLAM系统,优化了数据传输的实时性和可靠性。例如,上海交通大学的研究团队提出了一种基于Wi-Fi的多机器人SLAM系统,通过优化通信协议,实现了高效的数据共享和协同工作。
基于网络的SLAM:
基于网络的SLAM方法通过网络连接实现机器人之间的信息交换和协同工作。国内学者如哈尔滨工业大学的研究团队提出了一种基于网络的多机器人SLAM框架,通过网络连接实现高效的信息共享和地图融合。
(3)多机器人SLAM中的数据融合
数据融合是多机器人SLAM中的重要研究方向,通过融合多台机器人感知的数据,可以提高地图的精度和环境感知能力。
基于Kalman滤波的数据融合:
Kalman滤波是多机器人SLAM中常用的数据融合方法。国内学者如浙江大学的研究团队提出了一种基于信息滤波的数据融合方法,通过信息矩阵的加权融合,实现了高效的多机器人数据融合和地图构建。
基于图优化的数据融合:
图优化方法在多机器人SLAM中得到了广泛应用。国内学者如南京理工大学的研究团队提出了一种基于因子图的数据融合方法,通过优化因子图中的节点和边,提升了地图构建的精度和一致性。
(4) 实际应用与实验验证
国内研究团队在多机器人SLAM的实际应用方面也取得了显著进展,通过实验验证了多机器人SLAM系统的性能和可行性。
无人机编队SLAM:
Unmanned Aerial Vehicle (UAV) 编队SLAM是多机器人SLAM中的重要应用方向。国内研究团队如北京航空航天大学的研究团队研究了无人机编队SLAM,通过协调多架无人机的运动,实现了大范围环境的高效感知和地图构建。
地面机器人集群SLAM:
地面机器人集群SLAM在灾后救援、环境监测等领域具有重要应用价值。国内研究团队如中国科学院沈阳自动化研究所的研究团队通过实验验证了地面机器人集群SLAM系统的性能,如地面机器人协同SLAM系统,通过多机器人协同,实现了复杂环境下的高效探测和地图构建。
国内在多机器人SLAM技术研究方面取得了显著进展,涵盖了协同SLAM算法、多机器人通信机制、数据融合以及实际应用与实验验证等多个方向。这些研究成果不仅提升了多机器人SLAM系统的性能,还为未来多机器人系统在复杂环境中的应用提供了坚实的理论基础和技术支持。随着研究的不断深入,多机器人SLAM技术将在更广泛的应用场景中发挥重要作用。

图1-6 国内SLAM多机器人设计

二、ROS环境搭建

2.1ROS简述

算法和方法必须以可编译的代码形式存在,用以进行实验验证。为了在机器人系统中轻松有效地进行测试,需要建立一个通用软件框架来减少测试解决方案的准备时间。Robot Operating System(ROS)正是为此而设立的,它是一个旨在简化面向机器人的模块化代码开发的软件框架,在机器人领域被广泛使用。ROS是一种元操作系统,其假定底层有操作系统来协助完成任务,因此必须依赖于底层操作系统提供的大量功能。
作为一个开源的元操作系统,ROS为机器人提供了一系列服务。它提供了操作系统所应提供的一系列服务,包括硬件抽象、低级设备控制、常用功能的实现、进程间消息传递和包管理等,ROS在普通主机操作系统之上建立了通信层,允许多个ROS节点之间交换消息。ROS节点是使用ROS提供的设施进行通信和执行任务的程序。ROS节点独立且可并发运行,甚至不必在同一台设备上运行。
通信机制有两种主要方式:主题和服务,两者都可携带消息。主题是异步通信的一种手段:节点在主题上发布消息,其他节点可以订阅或不订阅。一旦节点在主题上发布消息,所有订阅该主题的节点都会收到该消息。服务则在两个节点之间提供同步通信,并要求传输请求和响应消息才能成功。
ROS节点可以实现各种函数,如数据管理、数学函数或任何使用ROS支持的语言实现的功能。硬件驱动程序是展示ROS模块化功能强大的最佳实践,对于给定的机器人,可以开发订阅一组标准主题以接收命令的ROS节点,并实现将这些命令传递给机器人所需的低级代码。因此,可以直接将为其他机器人开发的代码用于自己的机器人,例如实现特定的探索算法等。ROS允许开发者抽象出许多机器人的硬件细节,并以编写针对标准化机器人的代码为目标进行开发。ROS促进代码重用,并已成为机器人领域的业界标准。

图 2-1 智行mini2机器人实验平台

2.2 环境搭建

ROS历经多个版本的升级,目前正不断适用于机器人领域的研究与控制,ROS对于Ubuntu的支持是最好的,因此一般的ROS平台都安装在Ubuntu上。在这里笔者所采用的是kinetic版本的ROS,对应的Ubuntu版本为16.04。笔者建议初学者安装VMware虚拟机而不是直接双系统。有关虚拟机上安装ROS的具体安装步骤如下:
(1)安装VMware:VMware是虚拟机软件,即可以在本软件上运行其他的系统。本软件的安装直接百度就行,脚本之家什么的一般都会有附带许可证密匙的资源,按流程安装即可。
(2)在VMware上安装Ubuntu16.04
(3)在Ubuntu系统上安装ROS
历经上面三个步骤后,在终端中(右键打开或按Ctrl+Alt+T打开)输入 roscore,若出现如下图所示的画面,则代表安装成功。

图2-2安装成功画面

2.3工作空间的建立

工作空间指我们存放代码的地方,之前安装的ROS平台可以看作一个库,我们在工作空间中调用库中函数来完成自己的代码。工作空间看起来像一个文件夹,但其不是直接新建文件夹就能解决的,具体生成步骤如下(笔者这里相关的创建文件夹操作直接用鼠标右键完成):
(1)在home文件夹下右键新建文件夹,命名为catkin_ws(这里的命名可以是任何名称,不一定非要是catkin_ws)
(2).在catkin_ws下右键新建文件夹,命名为src(这里的命名一定要是src,不能是其他的名称)
(3)在src文件夹下右键打开中断(这里的终端路径一定要是src中)输入catkin_init_workspace (意思是告诉系统这是一个ROS的工作空间)会发现在src中生成了cmakelists文件

(4)回到上一级文件夹,即catkin_ws文件夹下,输入catkin_make(编译所有源码),会生成build和devel两个文件夹,这样即代表着建立工作空间完成
其中:

build:指编译空间,一般不用去管
devel:指开发空间,编译所生成的可执行文件都在此文件夹中
src:指代码空间,我们所写的源码都在此文件夹下

2.4 新建功能包

ROS中不同的代码都放在src中不同的功能包中,每个功能包相当于一个文件夹,与建立工作空间一样,单纯的新建文件夹是不行的,具体操作如下:
1.在src文件夹下打开终端,输入catkin_create_pkg <所创建功能包名称> <需要的依赖>;如catkin_create_pkg test roscpp
在src中会出现相应的文件夹

2.在catkin_ws下打开终端,输入catkin_make(注:对任何源码进行改动后都要重新编译)
3.在编译完成后,都要设置环境变量:在catkin_ws终端输入source /devel/setup.bash,这一步很是麻烦,因此可以采取简便操作:在home文件夹下按Ctrl+H,会显示出隐藏文件,使用gedit打开.bashrc文件

在文件的最后加上source ~/catkin_ws/devel/setup.bash(若你之前工作空间不是以catkin_ws命名,则将catkin_ws改为命名的名称)

添加完这个后,编译完成后会自动设置环境变量,不需要重复手动添加了!!