ROS基础学习笔记——古月居入门21讲

1,905 阅读4分钟

ROS 学习报告

一基础概念

linux系统介绍、安装、基础操作

c++/python简单基础介绍

ros系统安装

二核心概念

ROS是什么

ROS = 通信机制 + 开发工具 + 应用功能 + 生态系统

目标:提高机器人研发中的软件复用率

通信机制:松耦合分布式通信

开发工具:TF坐标变换、QT工具箱、Gazebo、Rviz

Gazebo是一款3D动态模拟器,能够在复杂的室内和室外环境中准确有效地模拟机器人群

在机器人控制系统中,坐标系是非常重要的,ROS中使用tf软件库进行坐标转换

QT工具箱实现许多的可视化辅助功能

rviz是ROS官方提供的一款3D可视化工具,几乎我们需要用到的所有机器人相关数据都可以在rviz中展现

应用功能:navigationslam、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

moveit--机械臂运动