ROS2教程 01 创建工作空间

本文涉及的产品
资源编排,不限时长
简介: 本文是关于如何在ROS2(机器人操作系统2)中创建和管理工作空间的教程,介绍了工作空间的概念、ROS1与ROS2工作空间的区别、创建工作空间的步骤,包括建立工作空间文件夹、更新包依赖、编译工作空间以及设置环境变量以便于调用新生成的文件和脚本。

一、什么是工作空间

在开发机器人过程中,将某个机器人的代码、参数、脚本等文件放在文件夹中管理,这个文件夹就是工作空间。
就像在vscode中创建了某个工程一样

二、ROS1和ROS2工作空间的区别

ROS1

曾经的ROS1使用Catkin编译系统,在经历catkin编译后会产生四个空间
src 代码空间:用于存储所有功能包的代码
build 编译空间:用于存储编译过程产生的缓存和中间文件
devel 开发空间:用于放置编译生成的可执行文件
install 安装空间:非必须的,可在工作目录下用catkin_make install生成,可以将可执行文件安装到此空间

ROS2

ROS2使用colcon编译,编译后产生的四个文件夹分别为
src 代码空间:用于存储所有功能包的代码、脚本等
build 编译空间:用于存储编译过程产生的缓存和中间文件
install 安装空间:用于放置编译生成的可执行文件和脚本
log 日志空间:用于保存编译和运行过程中警告、报错等日志的空间

三、创建工作空间

ROS官方关于创建工作空间的教程

1.创建工作空间文件夹

mkdir -p ~/ROSLearningWorkspace/src
#mkdir -p中的 -p为-parent意思,如果该路径下有父目录不存在,则一并创建父目录
#“~”默认为系统根目录
cd ~/ROSLearningWorkspace/src

2.更新包依赖

将他人分享的功能包等放入工作空间时,这些功能包或多或少会有依赖的文件,此时需要更新一下这些功能包的依赖包

首次更新

首次更新时,需要

sudo apt install -y python3-pip
#安装pip3
sudo pip3 install rosdepc
#通过pip3安装rosdepc,rosdepc是中国区适配的rosdep
sudo rosdepc init
#rosdepc初始化
rosdepc update
#rosdepc更新
cd ~/ROSLearningWorkspace
#到工作空间目录下
rosdepc install -i --from-path src --rosdistro humble -y
#安装/更新依赖,此处版本为ROS2 Humble LTS

正常更新

之后更新时,只需要

sudo rosdepc init
#rosdepc初始化
rosdepc update
#rosdepc更新
cd ~/ROSLearningWorkspace
#到工作空间目录下
rosdepc install -i --from-path src --rosdistro humble -y
#安装/更新依赖,此处版本为ROS2 Humble LTS

当为工作空间下的包安装好对应的依赖时,将获得如下反馈

All required rosdeps installed successfully

3.编译工作空间

在完成对依赖的更新后,就可以编译工作空间了

安装编译工具colcon

当没有colcon时需要先获取colcon

sudo apt update
sudo apt upgrade
sudo apt install python3-colcon-ros

开始编译

cd ~/ROSLearningWorkspace
#到工作空间根目录下
colcon build
#colcon build 将编译文件夹下的所有源码并完成相应配置

进阶

1.需要单独编译某个包时,添加后缀–packages-select,可以节省时间

colcon build --packages-select package_name

2.若希望python脚本修改后,不再需要每次重新编译
警告:可能出现代码的不适配

colcon build --symlink-install

在colcon编译成功后,会在工作空间的install目录下生成对应的执行文件,因为python是解释性语言,因此会copy一份到install里面,ROS执行的是install里面的内容,如果不每次重新编译,ROS执行的在install里的copy版本不会更新

4.设置工作空间的环境变量

source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
执行setup.bash来设置工作空间的环境变量,便于调用新生成的文件

. install/setup.bash
# “.”为运行

与ros1区别

需要区别于ros1中的方式
这是在ros1中的方式,请不要使用:

source devel/setup.bash

自动设置环境变量

通过进一步设置可以使得该环境变量在每次打开终端时都自动生效
工作空间的目录可以用pwd命令来查看当前目录路径
此处WORKSPACE需要替换成需要设置的工作空间的目录

echo "source WORKSPACE/install/setup.bash" >> ~/.bashrc

例子:

echo "source /home/mtbotpc/ROSLearningWorkspace/install/setup.bash" >> ~/.bashrc
相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
1月前
|
Ubuntu 机器人 Linux
|
1月前
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
|
1月前
|
机器人
【ROS速成】半小时入门机器人ROS系统简明教程之安装测速(二)
半小时入门机器人ROS系统简明教程之安装测速
|
3月前
|
存储 自然语言处理 机器人
ROS2教程06 ROS2行动
这篇文章是关于ROS2(Robot Operating System 2)行动(Action)通信机制的教程,包括行动的概念、特点、命令行工具的使用,以及如何编写行动的客户端和服务器代码,并介绍了如何测试行动通信。
114 4
ROS2教程06 ROS2行动
|
3月前
|
机器人 Shell Python
ROS2教程05 ROS2服务
这篇文章是关于ROS2(Robot Operating System 2)服务的教程,涵盖了服务的概念、特性、命令行工具的使用,以及如何编写服务的服务器和客户端代码,并提供了测试服务通信机制的示例。
88 4
ROS2教程05 ROS2服务
|
3月前
|
传感器 算法 数据可视化
ROS2教程04 ROS2话题
这篇文章是关于ROS2(Robot Operating System 2)的教程,主要介绍了ROS2中话题的概念、特性、使用方式,以及如何编写发布者和订阅者的代码。
85 3
ROS2教程04 ROS2话题
|
3月前
|
存储 Ubuntu 安全
ROS2教程02 ROS2的安装、配置和测试
本文是关于ROS2(机器人操作系统2)的安装、配置和测试的教程。内容包括使用一键安装脚本快速安装ROS2 Humble版,手动安装步骤,设置语言环境、添加软件源、更新软件包、安装ROS2桌面版和开发工具,配置ROS2环境,创建工作空间,配置ROS2领域以避免网络冲突,以及如何删除ROS2。此外,还包括了测试ROS2是否安装成功的两个案例:基本的Topic通信测试和使用Turtlesim演示程序。适用于Ubuntu 22.04操作系统。
272 1
ROS2教程02 ROS2的安装、配置和测试
|
3月前
|
传感器 自然语言处理 机器人
ROS2教程03 ROS2节点
本文是关于ROS2(机器人操作系统2)节点的教程,涵盖了节点的概念、特性、使用方法,以及如何编写、测试和使用ROS2节点相关的命令行工具。文章介绍了节点的独立性、任务执行、跨硬件分布和多语言编写能力。详细解释了如何启动节点、查看节点信息、编写节点代码(包括面向过程和面向对象的方法),以及如何为功能包添加依赖和入口点。此外,还探讨了重映射节点名称和使用节点命令行工具的方法,如 `ros2 node info` 和 `ros2 node list`。适合已安装ROS2 Humble和Ubuntu 22.04操作系统,并具有Shell基础知识的读者学习。
94 1
|
3月前
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
381 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
|
3月前
|
编解码 机器人 C++
ROS2教程07 ROS2自定义消息接口
这篇文章是关于如何在ROS2(Robot Operating System 2)中创建和使用自定义消息类型的教程,包括消息类型的定义、特点、命令行工具的使用,以及如何编写和测试自定义消息类型接口的步骤。
80 0
ROS2教程07 ROS2自定义消息接口

推荐镜像

更多