【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包

本文涉及的产品
资源编排,不限时长
简介: 【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包

1、运行海龟仿真器证明ROS安装成功

运行海龟仿真器共分为三步,如下:

  1. 启动ROS Master
roscore

 2.启动小海龟仿真器

rosrun turtlesim turtlesim_node 

 3.启动海龟控制节点

rosrun turtlesim turtle_teleop_key

注:这三行代码需要在三个终端中分别输入,若ROS安装成功,则可以通过键盘的方向键控制小海龟的运动。另外需要注意的是,在控制海龟运动时要保证自己在启动海龟控制节点(即第三步)这个终端,否则是无法控制的(自己吃过这个亏)。现把控制海龟运动的结果展示,如下图所示:3412acd7cc184456a16229322d0d3088.png


2、ROS命令行工具的使用

    看到这里,那么你的ROS肯定是安装成功了。我们可以通过键盘控制小海龟上下左右的移动了!!!感觉有点神奇,但是不是也存在一些疑惑呢,这几行命令怎么就能控制海龟了呢,ROS系统到底是怎么实现这一个效果的呢?下面就利用一些ROS的命令解释海龟仿真器的具体实现。


首先还是先来介绍一些ROS中相关的一些概念:

节点(Node)——执行单元

  • 执行具体任务的进程、独立运行的可执行文件
  • 不同节点可使用不同的编程语言、可分布式运行在不同的主机上
  • 节点在系统中的名称必须是唯一的


节点管理器(ROS Master)——控制中心

  • 为节点提供命名和注册服务
  • 跟踪和记录话题/服务通信,辅助节点互相查找、建立连接
  • 提供参数服务器,节点使用此服务器存储和检索运行时的参数


话题(Topic)——异步通信机制

  • 节点间用来传输数据的重要总线
  • 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一


消息(Message)——话题数据

  • 具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型
  • 使用编程语言无关的.msg文件定义,编译过程生成对应的代码文件


服务(Service)——同步通信机制

  • 使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据
  • 使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件

第一次看这些概念肯定不能完全看懂,后面通过一步步的实践慢慢理解!!!下面正式通过一些命令来解释海龟仿真器的实现过程。

  • rqt_graph

5eefd5a5c35044428e98ce33f67deb24.png可以看出现在系统中有两个运行的节点(/teleop_turtle【键盘控制节点】和/turtlesim【仿真器节点】)和一个话题(/turtle1/cmd_vel)。


  • rosnode list 查看节点列表

这行代码可以查看系统中的节点,运行上述代码结果如下:

cb5c5bb741cc4e54a687993de73b2ce3.png

可以看出,运行上述代码后会显示两个和运行rqt_graph一样的节点,但是还多出一个节点,这个节点是默认启动roscore就会存在的,这里可以不予理会。


  • rostopic list 查看话题列表

这行代码可以查看系统中的话题,运行上述代码结果如下:

eb9ed96035d14343a81cdb9ab286fa30.png

可以看出系统订阅了上图中话题,其中/turtle1/cmd_vel话题就是控制小海龟运动的。之前我们是通过键盘控制海龟运动,现在可以通过发布话题实现小海龟的运动,命令如下:

rostopic pub -r 10 /turtle1/cmd_vel  geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0" 

上述命令中-r 10表示以每秒10次的频率发布话题,(若无-r 10,则小海龟运动一段距离后就会停下)geometry_msgs/Twist表示消息结构,其后面的内容是具体数据(包括角速度、线速度)。运行上述代码的结果如下:小海龟做圆周运动。

ee1b91af595a49c0a8500470979b65f8.png

  • rosservice list 查看服务列表d6db8ea887c74791811e9f05cab90316.png
rosservice call /spawn "x: 3.0
y: 3.0
theta: 0.0
name: 'turtle2'" 

上述代码发布服务请求,生成一个坐标在(3,3)位置的海龟turtle2,运行结果如下:ef4983b30f6148c7ae1e9b856e366688.png

产生turtle2后,我们可以再次使用rostopic list 来查看话题列表,会发现话题变多了,同样我们也可以发布话题来控制海龟2的运动。

c8cdb3ed213b4fc0a4a428bceeaad3b5.png

  • rosmsg show +消息类型 显示消息结构f11b06cc4fd340a0b77652a1ea0c1171.png

3、创建工作空间和功能包

工作空间是一个存放工程开发相关文件的文件夹,其下有四个文件夹,如下:

  • src: 代码空间(Source Space)
  • build: 编译空间(Build Space)
  • devel: 开发空间(Development Space)
  • install:安装空间(Install Space)

创建工作空间步骤

  1. 创建工作空间
mkdir ~/catkin_ws
cd catkin_ws
mkdir src
cd src
catkin_init_workspace
  1. 编译工作空间
cd ~/catkin_ws
catkin_make
catkin_make install
  1. 设置环境变量
source devel/setup.bash

**注:**若不想每次都设置环境变量,可将下面代码复制到.bashrc文件中,该文件为主目录下的隐藏文件(显示隐藏文件:ctrl+H)

source /home/wsj/catkin_ws/devel/setup.bash

a6a429968c8244f9a4a004fb5f5b938a.png

  1. 检查环境变量
echo $ROS_PACKAGE_PATH

7e3cca44ba9f4c8cbe51f1415dbf4128.png

创建功能包步骤:

  1. 创建功能包
cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
//test_pkg为功能包名,std_msgs rospy roscpp为三个依赖
  1. 编译功能包
cd ~/catkin_ws
catkin_make
source  ~/catkin_ws/devel/setup.bash


相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
3月前
|
Ubuntu 机器人 Linux
|
28天前
|
存储 传感器 编解码
ROS机器视觉入门:从基础到人脸识别与目标检测
前言 从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本,系统采用Ubuntu20.04,ROS采用noetic。 颜色编码格式,图像格式和视频压缩格式 (1)RGB和BGR:这是两种常见的颜色编码格式,分别代表了红、绿、蓝三原色。不同之处在于,RGB按照红、绿、蓝的顺序存储颜色信息,而BGR按照蓝、绿、红的顺序存储。 rgb8图像格式:常用于显示系统,如电视和计算机屏幕。 RGB值以8 bits表示每种颜色,总共可以表示256×256×256=16777216种颜色
136 70
|
2月前
|
存储 传感器 编解码
ROS机器视觉入门:从基础到人脸识别与目标检测
【11月更文挑战第9天】从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。
142 56
|
3月前
|
传感器 机器人 数据处理
ROS 编程入门的介绍
【10月更文挑战第13天】ROS(Robot Operating System)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用 ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个 ROS 功能包并实现一些基本功能。
|
3月前
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
112 0
|
3月前
|
机器人
【ROS速成】半小时入门机器人ROS系统简明教程之安装测速(二)
半小时入门机器人ROS系统简明教程之安装测速
102 0
|
3月前
|
传感器 机器人 数据处理
ROS 编程入门的介绍
2.1 创建 ROS 功能包 ROS(Robot Operating System)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用 ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个 ROS 功能包并实现一些基本功能。 2.1.1 使用 ROS 主题 ROS 主题(Topic)是一种发布/订阅机制,允许节点之间进行通信。每个节点可以发布主题消息或订阅主题消息来获取数据。以下是如何使用 ROS 主题的步骤: 创建功能包 首先,我们需要创建一个新的 ROS 功能包。在终端中运行以下命令: catkin_create_pkg de_ws my_r
|
5月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
236 1
|
4月前
|
传感器 机器人 数据处理
ROS 编程入门的介绍
2.1 创建 ROS 功能包 ROS(Robot Operating System)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用 ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个 ROS 功能包并实现一些基本功能。 2.1.1 使用 ROS 主题 ROS 主题(Topic)是一种发布/订阅机制,允许节点之间进行通信。每个节点可以发布主题消息或订阅主题消息来获取数据。以下是如何使用 ROS 主题的步骤: 创建功能包 首先,我们需要创建一个新的 ROS 功能包。在终端中运行以下命令: catkin_create_pkg de_ws my_r
111 0
|
2月前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
80 14

推荐镜像

更多