ROS Notes
安装
当前ROS新的发行版缺少某些关键的包,所以需要重新安装Ubuntu14.04然后再安装ROS Indigo,安装14.04(太老)后出现内核太老识别不了当前网卡故障:
https://askubuntu.com/questions/729212/install-intel-ac-8260-wireless-drivers-offline
1. 管理并配置环境
确认安装成功
1 | export | grep ROS |
创建WS
1 | mkdir -p ~/catkin_ws/src |
2. 文件系统
预备工作 安装ros-tutorials包
1 | sudo apt-get install ros-indigo-ros-tutorials |
文件系统工具
rospack find [包名称] 允许你获取软件包的有关信息。
find rospy``` 1
+ ```rospack find roscpp
roscd [本地包名称[/子目录]] 允许你直接切换工作目录到某个软件包或者软件包集当中
roscpp``` 1
+ ```roscd roscpp/cmake
log```可以切换到ROS保存日记文件的目录下。 1
2- rosls 直接按软件包的名称而不是绝对路径查看列表
+ ```rosls roscpp_tutorials
3. 创建程序包
包的组成
- package.xml文件提供有关程序包的元信息
- CMakeList.txt
- 每个目录下只能有一个程序包
- 一个工作空间下可以可以有多个包,每个包含有自己的CMakeList.txt
创建catkin程序包
切换到工作空间
~/catkin_ws/src``` 1
- ```catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
- 第一个参数是包的名字,后面的是包的依赖
- 查看包的依赖关系
depends1 beginner_tutorials``` 查看一级依赖 1
2
3
4
5
6
7* ```rospack depends beginner_tutorials``` 查看简介
* 创建的包将会出现在WS的src文件夹里边
# 4. 编译程序包
- catkin_make
+ catkin_make (/catkin/commands/catkin_make) 是一个命令行工具,它简化了catkin的标准工作流程。你可以认为catkin_make (/catkin/commands/catkin_make)是在CMake标准工作流程中依次调用了cmake 和 make
+ ```catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
编译
在WS根目录运行
1
2
3+ 然后运行```catkin_make install``` (可选)
+ 指定src位置
* ```catkin_make --source my_srcinstall --source my_src``` 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 5. 理解节点
- 图概念概述
+ Nodes (/Nodes):节点,一个节点即为一个可执行文件
* 一个节点其实只不过是ROS程序包中的一个可执行文件。ROS节点可以使用ROS客户库与其他节点通信。节点可以发布或接收一个话题。节点也可以提供或使用某种服务。
+ Messages (/Messages):消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
+ Topics (/Topics):话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
+ Master (/Master):节点管理器,ROS名称服务 (比如帮助节点找到彼此)
+ rosout (/rosout): ROS中相当于stdout/stderr。
+ roscore (/roscore): 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。
- 客户端库
+ rospy = python 客户端库
+ roscpp = c++ 客户端库
- **使用roscore**
+ roscore 是你在运行所有ROS程序前首先要运行的命令。
- **使用rosnode**
+ rosnode 显示当前运行的ROS节点信息。
+ rosnode list 指令列出活跃的节点
+ rosnode info 命令返回的是关于一个特定节点的信息
- **使用rosrun**
+ rosrun 允许你使用包名直接运行一个包内的节点
* ```rosrun [package_name] [node_name]turtlesim turtlesim_node``` 1
* ```rosnode list
turtlesim turtlesim_node __name: 1
* ```rosnode ping my_turtle
6. 理解话题
运行小乌龟模拟程序
1
- ```rosrun turtlesim turtlesim_node
turtlesim turtle_teleop_key``` 1
2
3
4
5
## ROS话题
- turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息
- 使用rqt_graph
+ 安装$ sudo apt-get install ros-<distro>-rqt $ sudo apt-get install ros-<distro>-rqt-common-plugins1
2+ 运行
* ```rosrun rqt_graph rqt_graphros话题介绍
- rostopic bw display bandwidth used by topic
rostopic echo print messages to screen 可以显示在某个话题上发布的数据。
rostopic pub publish data to topic 可以把数据发布到当前某个正在广播的话题上
pub [topic] [msg_type] [args]``` 1
* ```rostopic pub -1 /turtle1/command_velocity turtlesim/Velocity -- 2.0 1.8
双破折号告诉命令选项解析器接下来的参数部分都不是命令选项
rostopic type print topic type 用来查看所发布话题的消息类型。
type [topic]``` 1
* ```rostopic type /turtle1/command_velocity
rosmsg命令来查看消息的详细情况
show turtlesim/Velocity``` 1
2
3
4
5
6
7
8
9
10
11
12
13
# 7. 理解服务和参数
## ROS服务
- 服务(services)是节点之间通讯的另一种方式
- 服务允许节点发送请求(request) 并获得一个响应(response)
## 使用rosservice
- rosservice list
+ 输出可用服务的信息
- rosservice call
+ 调用带参数的服务
+ ```rosservice type [service]
type clear``` 1
2
3- rosservice type
+ 输出服务类型
+ ```rosservice call [service] [args]call clear``` 1
2
3
4
5
6
7
8
9- rosservice find 依据类型寻找服务find services by service type
- rosservice uri 输出服务的ROSRPC uri
- rossrv show
+ 查看服务详细信息
## 使用rosparam
- 存储并操作ROS 参数服务器(Parameter Server)
- rosparam set 设置参数
+ ```rosparam set background_r 150
rosparam get 获取参数
get background_g``` 1
2
3+ ```rosparam get /```来显示参数服务器上的所有内容
- rosparam load 从文件读取参数
+ ```rosparam load [file_name] [namespace]load params.yaml copy``` 将yaml文件重载入新的命名空间 1
2
3- rosparam dump 向文件中写入参数
+ ```rosparam dump [file_name]``` 将所有的参数写入params.yaml文件
+ ```rosparam dump params.yaml
rosparam delete 删除参数
- rosparam list 列出参数名
8. 使用rqt_console与roslaunch
使用rqt_console和rqt_logger_level
- rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。
- rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)
- Fatal是最高优先级,Debug是最低优先级
使用roslaunch
- roslaunch可以用来启动定义在launch文件中的多个节点。
[package] [filename.launch]``` 1
- 新建launch文件夹
roscd beginner_tutorials #这里需要export ROS_PACKAGE_PATH=~/catkin_ws/src:$ROS_PACKAGE_PATH
mkdir launch
cd launch1
- 创建turtlemimic.launch文件,
</launch>1
2- 开始运行
+ ```roslaunch beginner_tutorials turtlemimic.launch
+ 发送消息```rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'```
+ 运行rqt_graph观察