ROS(Robot Operating System) Tutorial 学习记录
编写: 王宇
2018-03-31
注: 此文档仅仅是我阅读时的流水账,也因为本人英语水平有限,仅凭个人的自我理解所编写,不可避免的存在错误和偏差,请以官方原文为准。
官方教程:http://wiki.ros.org/ROS/Tutorials
Beginner Level
1. 安装配置ROS环境
安装ROS
- 官方推荐 ROS Kinettic Kame http://wiki.ros.org/Distributions
- 安装步骤: http://wiki.ros.org/kinetic/Installation/Ubuntu
管理环境
- 概念 :notion of combining spaces using the shell environment
- 检查环境
-
$ printenv | grep ROS
- 安装命令
-
$ source /opt/ros/kinetic/setup.bash
创建ROS工作空间
- Build空间
-
$ mkdir -p ~/catkin_ws/src
-
$ cd ~/catkin_ws
-
$ catkin_make
- catkin : http://wiki.ros.org/catkin
- 设置
-
$ source devel/setup.bash
- 确认环境变量: $ROS_PACKAGE_PAHT
2. ROS文件系统
预备
- 安装教程预先准备的Package
-
$ sudo apt-get install ros-<distro>-ros-tutorials
Overview 文件系统概念
- Package : Package 组织ROS单元代码的抽象组织结构,每个Package能够包含库,可以执行文件,脚本和其他部分
- Manifests(package.xml) : Manifest是对Package的描述,它定义Package的依赖,明确Package的元数据,像版本,License等。
文件系统工具
- 使用 rospack - 得到Packages中的信息
-
$ rospack find [package_name]
- 使用 roscd - 更改目录
-
$ roscd [locationname [/subdir]]
- roscd log - 切换到日志目录
-
$ roscd log
- 使用 rosls - 查询目录
-
$ rosls [locationname [/subdir]]
Tab 补全
3.创建ROS Package
- Package 由什么组成的?
- package.xml 提供Package的元数据描述
- catkin使用的CMakeList.txt
- 每个Package必须有它自己的目录
- 在 catkin工作空间中的Package
-
- 创建catkin Package
-
$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
- 编译和设置
$ cd ~/catkin_ws
$ catkin_make
$ . ~/catkin_ws/devel/setup.bash
- package 依赖
- 自定义你的Package
4. 编译ROS Package
编译 Packages
- 使用 catkin_make - 类似于cmake make工具
-
$ catkin_make --source my_src
$ catkon_make install --source my_src
- 构建你的Package
-
$ cd ~/catkin_ws/
$ ls src
beginner_turorials/CMakeLists.txt
$ catkin_make
5. 理解ROS Nodes节点
预备- 同ROS文件系统
Overview Graph 概念
- Node : 用ROS(roscore)协同其他node的可以执行体
- Message: 当使用subscribing和publishing topic时,被使用的数据类型
- Topics:subscribing和publishing 时的主题
- Master:ROS的服务名
- rosout:ROS的 stdout stderr
- roscore: Master + rosout + parameter server
Nodes
- ROS nodes 使用 ROS 客户端库与其他节点通讯。
- Nodes可以发布和订阅一个主题。Node
- Node能够提供和使用服务
客户端库
ROS客户端库允许nodes使用不同的程序语言编写,用于通讯,例如Python和C++
roscore
- 运行roscore
-
$ roscore
- 变更权限
-
$ sudo chown -R <your_username> ~/.ros
- 网络设置: http://wiki.ros.org/ROS/NetworkSetup#Single_machine_configuration
使用 rosnode
- 查询Node信息
-
$ rosnode list
从rosout中查看内容
- rosnode info 命令查看特定node信息
使用rosrun
$ rosrun [package_name] [node_name]
6. 理解ROS Topics主题
启动一个例子
- 启动 roscore
-
$ roscore
- 运行 turtlesim - turtlesim是package,turtlesim_node 和 turtle_turtle_teleop_key是 node
$ rosrun turtlesim turtlesim_node
- turtle键盘遥控
-
$ rosrun turtlesim turtle_teleop_key
ROS Topics
The turtlesim_node 和 turtle_teleop_key 节点使用各自的ROS Topic进行通讯。turtle_teleop_key是发布键盘消息的topic, turtlesim 订阅相同topic,去接受键盘消息。让我们使用rqt_graph(能够显示nodes和topics)去运行
- 使用 rqt_graph
rqt_graph在系统中,建立一个实时动态图像。rqt_graph是rqt package的一部分。
- 安装 rqt_graph
-
$ sudo apt-get install ros-<distro>-rqt
-
$ sudo apt-get install ros-<distro>-rqt-common-plugins
- rqt_graph的显示效果
- 介绍rostopic
-
$ rostopic -h
- 使用 Using rostopic echo
-
$ rostopic echo [topic]
- 使用 rostopic list
- rostopic list返回所有当前发布和订阅主题列表
-
$ rostopic list -h
ROS Message
在nodes之间,topics上凭借发送的ROS Message去通讯。因为发布和订阅通讯,它们必须发送接收相同类型的信息。这意味着,topic类型凭借message 类型发布被定义。
- 使用 rostopic type
-
$ rostopic type [topic]
rostopic continued
- 使用 rostopic pub
-
$ rostopic pub [topic] [msg_type] [args]
- 使用rostopic hz
-
$ rostopic hz [topic]
- 使用rqt_plot
相关推荐
ROS(Robot Operating System,机器人操作系统)是机器人领域广泛使用的开源框架,它为机器人软件开发提供了一个标准化的平台。本文将详细解析"ros-tutorial-icourse"教程,旨在帮助ROS入门者快速掌握其安装与使用的...
ROS,全称Robot Operating System,是一个开源操作系统框架,专门用于设计和实现机器人系统的软件架构。ROS_Tutorial ROS基础笔记两篇(中文版).zip是一个压缩包,包含了两份中文版的学习资料,分别是"ROS学习笔记...
在Windows系统上,微软提供了相应的SDK(软件开发工具包),而在ROS(Robot Operating System,机器人操作系统)平台上,则主要使用由Kinect制造商提供的OpenNI SDK,并且该SDK已经被移植到了ROS中。 首先,我们...
ROS(Robot Operating System,机器人操作系统)是一种开源的机器人操作系统,可以帮助开发者快速构建机器人应用程序。 ROS 入门学习非常重要,找到正确的方向往往能大大提高学习效率。本文将结合作者的学习经历,给...
ROS(Robot Operating System,机器人操作系统)是一个开源操作系统,专门设计用于为各种机器人设备和软件提供一个统一的框架。"Ros_tutorial.zip_ROS" 文件很可能包含了一系列ROS的基础教程,帮助初学者了解并学习...
### ROS (Robot Operating System): 全面解析与实践指南 #### 一、ROS 概述 **ROS**(Robot Operating System)并非一个真正的操作系统,而是一个灵活的框架用于编写机器人软件。它提供了一系列工具和服务来简化...
ROS(Robot Operating System)是一个开源操作系统,专门为机器人设备和软件应用程序设计。这个“ros_tutorial_hello.rar”压缩包很可能是ROS中的一个初学者教程,旨在引导用户了解如何在ROS环境中编写基本的“Hello...
ROS(Robot Operating System)是一个开源操作系统,专门设计用于机器人技术,提供了一整套工具和库,使得机器人软件开发变得更加高效和可移植。URDF(Unified Robot Description Format)是ROS中的一种XML格式,...
ROS(Robot Operating System)线程化教程主要针对的是在ROS系统中如何有效地利用多线程技术来提升程序的并发性能和资源利用率。ROS是机器人软件开发的一个开源框架,它为编写复杂的机器人应用提供了便利的接口和...
ROS(Robot Operating System)是一种广泛应用于机器人开发的操作系统框架,它提供了一套工具、库以及标准,使得开发者能够轻松地创建、编译和部署机器人软件。在这个项目中,"基于ROS+kcf算法 读取电脑自带摄像头 ...
在机器人技术领域,ROS(Robot Operating System)是一个广泛使用的开源操作系统,专为设计和开发智能机器人系统而构建。它提供了一个框架,使开发者能够轻松地编写软件模块,并将它们集成到复杂的机器人应用中。本...
**ROS (Robot Operating System) 简介** ROS(Robot Operating System)是一个开源操作系统,专为机器人设备和软件开发而设计。它提供了一个框架,使开发者可以轻松地创建复杂的机器人应用,包括硬件接口、低级设备...
ROS (Robot Operating System) 是一个开源操作系统,专为机器人设备和软件开发而设计。它提供了一个框架,使得机器人系统的开发、模拟和测试变得更加容易。Gazebo 是ROS中的一个重要组件,是一个三维仿真环境,用于...
ROS(Robot Operating System)是机器人领域广泛使用的开源操作系统,它为机器人硬件抽象、传感器和执行器接口、消息传递、软件包开发提供了框架。Gauss机械臂是一款先进的机器人手臂,其在ROS环境下的仿真包允许...
随着机器人操作系统(Robot Operating System,简称ROS)的普及与移动设备技术的发展,越来越多的应用场景需要ROS与Android平台进行交互。本文将详细介绍如何在Ubuntu环境下搭建ROS与Android之间的通信环境,并提供...
ROS(Robot Operating System,机器人操作系统)是机器人领域广泛使用的开源框架,它提供了工具和库,使得机器人系统的开发、测试和部署变得更加便捷。本教程“Ros_tutorial”将引导你逐步了解ROS的基础知识,并掌握...
About This Book, Design, simulate, build and program an interactive autonomous mobile robotProgram Robot Operating System using PythonGet a grip on the hands-on guide to robotics for learning various ...
About This Book, Design, simulate, build and program an interactive autonomous mobile robotProgram Robot Operating System using PythonGet a grip on the hands-on guide to robotics for learning various ...
Robot Operating System (ROS) is one of the most popular robotics software frameworks in research and industry. It has various features for implement different capabilities in a robot without ...
ROS(Robot Operating System,机器人操作系统)教程 ROS是机器人领域广泛应用的一个开源框架,它提供了一套工具、库和协议,用于帮助开发机器人软件。ROS教程是学习如何利用ROS进行机器人编程的重要资源。"ros_...