古月居ROS 入门21讲--PA5-PA8笔记

ROS 入门21讲--PA5-PA8笔记

一、PA5 ROS 安装

1、配置软件库

古月居ROS 入门21讲--PA5-PA8笔记_第1张图片

备注:上面的四个选项打上钩。

2、添加软件源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

3、添加密钥

sudo apt-get adv -- keyserver'hkp:keyserver.ubuntu.com:80'--recv-key C1CF6E31E6BADE8868B127B4F4ED6FBAB17C654

4、安装 ROS

sudo apt update
sudo apt install ros-melodic-desktop-full

5、初始化 rosdep

sudo rosdep init
rosdep update

6、设置环境变量

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

7、安装 rosinstall

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

8、ros 默认安装路径

/opt/ros/melodic

古月居ROS 入门21讲--PA5-PA8笔记_第2张图片

9、检测 ROS 是否安装成功

启动ROS Master:roscore
启动小海龟仿真器:rosrun turtlesim turtlesim_node
启动海龟控制节点:rosrun turtlesim turtle_teleop_key

备注:打开三个终端输入分别输入上面的指令。

ROS安装步骤:http://wiki.ros.org/melodic/Installation/Ubuntu

二、PA6 ROS是什么

1、ROS 是什么

∙ \bullet 通信机制 + 开发工具 + 应用功能 + 生态系统 → 提高机器人研发中的软件复用率

2、ROS 中的通信机制

古月居ROS 入门21讲--PA5-PA8笔记_第3张图片

3、开发工具

∙ \bullet 命令行&编译器/TF坐标转换/QT工具箱/Rviz/Gazebo

4、应用功能

∙ \bullet Navigation/SLAM/Movelt

5、生态系统

∙ \bullet 发行版(Distribution): ROS 发行版包括一系列带有版本号、可以直接安装的功能包。

∙ \bullet 软件源(Repository):ROS 依赖于共享网络上的开源代码,不同的组织机构可以开发或贡献自己的机器人软件。

∙ \bullet ROS wiki:记录 ROS 信息文档的主要论论坛。

∙ \bullet 邮件列表(Mailing list): 交流 ROS 更新的主要渠道,同时也可以交流 ROS 开发的各种疑问。

∙ \bullet ROS Answer:咨询 ROS 相关问题的网站。

∙ \bullet 博客(Blog):发布 ROS 社区中的新闻、图片、视频(http://www.ros.org/news)

三、PA7 ROS 的核心概念

1、节点与节点管理器

■ \blacksquare 节点(Node) – 执行单元

∙ \bullet 执行具体任务的进程、独立运行的可执行文件;

∙ \bullet 不同节点可使用不同的编程语言,可分布式运行在不用的主机;

∙ \bullet 节点在系统中的名词必须是唯一的。

■ \blacksquare 节点管理器(ROS Master) – 控制中心

∙ \bullet 为节点提供命名和注册服务;

∙ \bullet 跟踪和记录话题/服务通信,辅助节点互相查找、建立连接;

∙ \bullet 提供参数服务器,节点使用此服务器存储和检索运行时的参数。

古月居ROS 入门21讲--PA5-PA8笔记_第4张图片

2、话题通信

■ \blacksquare 话题(Topic) – 异步通信机制

∙ \bullet 节点间用来传输数据的重要总线;

∙ \bullet 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一。

■ \blacksquare 消息(Message)-- 话题数据

∙ \bullet 具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;

∙ \bullet 使用编程语言无关的 .msg 文件定义,编译过程中生成对应的代码文件。

古月居ROS 入门21讲--PA5-PA8笔记_第5张图片

古月居ROS 入门21讲--PA5-PA8笔记_第6张图片

3、服务通信

■ \blacksquare 服务(Service) – 同步通信机制

∙ \bullet 使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据;

∙ \bullet 使用编程语言无关的 .srv 文件定义请求和应答数据结构,编译过程中生成对应的代码文件。

古月居ROS 入门21讲--PA5-PA8笔记_第7张图片

古月居ROS 入门21讲--PA5-PA8笔记_第8张图片

4、话题与服务的区别

话题 服务
同步性 异步 同步
通信模型 发布/订阅 服务器/客户端
底层协议 ROSTCP/ROSUDP ROSTCP/ROSUDP
反馈机制
缓冲区
实时性
节点关系 多对多 一对多
使用场景 数据传输 逻辑处理

5、参数

■ \blacksquare 参数(Parameter) – 全局共享字典

∙ \bullet 可通过网络访问的共享、多变量字典;

∙ \bullet 节点使用此服务器来存储和检索运行时的参数;

∙ \bullet 适合存储静态、非二进制的配置参数,不适合存储动态配置的数据。

古月居ROS 入门21讲--PA5-PA8笔记_第9张图片

6、文件系统

■ \blacksquare 功能包(Package)

∙ \bullet ROS 软件中的基本单元,包括节点源码、配置文件、数据定义等。

■ \blacksquare 功能包清单(Package manifest)

∙ \bullet 记录功能包的基本信息,包括作者信息、许可信息、依赖选项、编译标志等。

■ \blacksquare 元功能包(Meta Packages)

∙ \bullet 组织多个用于同一目的的功能包。

古月居ROS 入门21讲--PA5-PA8笔记_第10张图片

古月居ROS 入门21讲--PA5-PA8笔记_第11张图片

四、PA8 ROS命令行工具的使用

1、常见命令

∙ \bullet rostopic

∙ \bullet rosservice

∙ \bullet rosnode

∙ \bullet rosparam

∙ \bullet rosmsg

∙ \bullet rossrv

2、以小海龟为例

启动 ROS Master:roscore
启动小海龟仿真器: rosrun turtlesim turtlesim_node
启动小海龟控制节点:rosrun turtlesim turtle_teleop_key

古月居ROS 入门21讲--PA5-PA8笔记_第12张图片

∙ \bullet 使用 rqt_graph 可视化计算图

古月居ROS 入门21讲--PA5-PA8笔记_第13张图片

∙ \bullet 查看话题列表: rosnode list

在这里插入图片描述

∙ \bullet 发布话题消息:

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

古月居ROS 入门21讲--PA5-PA8笔记_第14张图片

∙ \bullet 发布服务请求

rosservice call /spawn "x: 0.0
y: 0.0
theta: 0.0
name: 'turtle2'" 
name: "turtle2"

古月居ROS 入门21讲--PA5-PA8笔记_第15张图片

备注:在最下面产生了小海龟。

∙ \bullet 话题记录

rosbag record -a -O cmd_record

∙ \bullet 话题复现

rosbag play cmd_record.bag

你可能感兴趣的:(古月居ROS-21讲笔记,人工智能,ubuntu)