ROS 学习报告
一基础概念
linux系统介绍、安装、基础操作
c++/python简单基础介绍
ros系统安装
二核心概念
ROS是什么
ROS = 通信机制 + 开发工具 + 应用功能 + 生态系统
目标:提高机器人研发中的软件复用率
通信机制:松耦合分布式通信
开发工具:TF坐标变换、QT工具箱、Gazebo、Rviz
Gazebo是一款3D动态模拟器,能够在复杂的室内和室外环境中准确有效地模拟机器人群
在机器人控制系统中,坐标系是非常重要的,ROS中使用tf软件库进行坐标转换
QT工具箱实现许多的可视化辅助功能
rviz是ROS官方提供的一款3D可视化工具,几乎我们需要用到的所有机器人相关数据都可以在rviz中展现
应用功能:navigation、slam、moveit
生态系统:博客、ros wiki、软件源......
通信机制
Node:执行具体任务的进程、独立运行的可执行文件
ROS Master:控制中心

话题通信--异步通信机制
Topic:节点间用来传输数据的重要总线;使用发布/订阅模型,数据由发布者传输到订阅者
Message:topic传输的数据


服务通信--同步通信机制
使用客户端/服务器(C/S)模型

参数
Parameter:全局字典;由ros master来管理

文件系统
Package:完成某一个特定功能的软件基本单元
Package manifest:记录package的基本信息
Meta Packages:组织多个用于同一目的的功能包


ROS命令行工具的使用
• rostopic • rosservice • rosnode • rosparam • rosmsg • rossrv
以小海龟为例
启动ROS Master
roscore
启动小海龟仿真器
rosrun turtlesim turtlesim_node
启动海龟控制节点
rosrun turtlesim turtle_teleop_key
可视化工具查看计算图
rqt_graph

三编程基础
创建工作空间与功能包
工作空间
workspace是一个存放工程开发相关文件的文件夹
-
src : source space 代码空间
-
build : build space 编译空间
-
devel : development space 开发空间
-
install : install space 安装空间
-
创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
- 编译工作空间
cd ~/catkin_ws/
catkin_make
- 设置环境变量
source devel/setup.bash
- 检查环境变量
echo $ROS_PACKAGE_PATH
功能包
话题编程
Publisher和Subscriber的编程实现
话题模型:



话题消息的定义与使用
创建msg文件
服务编程
服务端server和客户端client的编程实现



参数的使用与编程方法

创建功能包
cd home/xianghaoxiang/catkin_ws/src
catkin_create_pkg learning_paremeter roscpp rospy std_stvs
参数命令行使用
- 列出当前的所有参数
rosparam list
- 显示某一个参数值
rosparam get param_key
- 设置某个参数值
rosparam set param_key param_value
- 保存参数到文件
rosparam dump file_name
- 从文件读取参数
rosparam load file_name
- 删除参数
rosparam delete param_key
编程方法(C++)
如何获取/设置参数
- 初始化ROS节点
- get函数获取参数
rosparam get param_key - set函数设置参数
rosparam set param_key param_value
parameter_config.cpp:

配置代码编译规则
CMakeLists.txt:

配置CMakeLists.txt中的编译规则:
- 设置需要编译的代码和生成的可执行文件
add_executable(pareameter_config src/parameter_config.cpp) - 设置链接库
targer_link_libraries(parameter_config ${catkin_LIBRARIES})
编译并运行发布者
cd ~/catkin_ws
catkin_make 编译
source devel/setup.bash
roscore 启动ROS Master
rosrun turtlesim turtlesim__node 运行海龟节点
rosrun learning_parameter parameter_config 执行参数功能包


最后修改了背景颜色参数
[69,86,255] - > [255,255,255]
编程方法(Python)
parameter_config.py

四常用组件
ROS中的坐标系管理系统
概念
TF功能包能干什么**
- 进行坐标转换
- 实现相对位置的求解、两个部件之间的联系控制
TF坐标变换如何实现
- 广播TF变换
- 监听TF变换
机器人中的坐标变换例子

海龟跟随实例
sudo apt-get install ros-kinetic-turtle-tf 安装tf功能包
roslaunch turtle_tf turtle_tf_demo.launch .launch文件是一个集成了多个Node的脚本
rosrun turtlesim turtle_teleop_key 键盘操控turtle
rosrun tf view_frames 可视化工具1,查看树结构的坐标系之间的关系


可视化工具2
rosrun tf tf_echo turtle1 turtle2
查看两个坐标系的变化
!可视化工具3!
rviz
rviz是ROS官方提供的一款3D可视化工具,几乎我们需要用到的所有机器人相关数据都可以在rviz中展现
rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz

tf坐标系广播与监听的编程实现
创建功能包
创建tf广播器和tf监听器代码
turtle_tf_broadcaster.cpp
turtle_tf_listener.cpp
配置tf广播器与监听器代码编译规则
CMakeLists.txt
编译并运行
launch启动文件的使用方法
语法
launch文件 = 脚本
= 通过XML文件实现多节点的配置和启动(可自动启动ROS Master)
标签:
开启
结束
<node pkg="turtlesim" name="sim1" type="turtlesim_node" output"lalala"/>
respawn 重启
required 必须要求的节点
ns namespace 命名
args launch文件内部的参数
一个参数一整个参数文件
launch文件内部的局部变量,和parameter不同
重新映射计算图资源的命名 “改名字”
调用其他的launch文件
Launch示例
simple.launch

turtlesim_parameter_config.launch

start_tf_demo_c++.launch

turtlesim_remap.launch

常用可视化工具的使用
QT工具箱

单独输入rqt,可打开综合工具箱
Rviz
强大的机器人数据可视化工具
需要有数据
Gazebo
强大的三维物理仿真平台
自己产生数据
roslaunch gazebo_ros .....launch
五进阶学习
机器人控制与仿真
gazebo + ros_control
SLAM 即时定位与地图建模
- gmapping
- hecter