ROS学习记录

中科院软件所-机器人操作系统入门(ROS入门教程)
https://www.icourse163.org/learn/ISCAS-1002580008?tid=1450503443#/learn/announce
ROS学习记录_第1张图片2.4.1-2,metapackage
ROS学习记录_第2张图片
3.1.1 Master And Node
ROS通信架构
Master是节点管理器件(节点由此注册),。roscore启动它,顺便启动了rosout(日志输出),parameter server(参数服务器)。
Node是ROS的进程,被称作节点。Package里可执行文件运行的实例。rosrun启动,rosnode info [node_name]显示详细信息;rosnode kill [node_name]结束某个node;rosnode list 显示目前节点;roslaunch [pkg_name] [file_name.launch]启动多个master和node

3.3.1 Topic和Msg
ROS主要通信方式:Topic,Service, Parameter Service, ACtionlib
Topic:ROS中的异步通信方式,Node间通过publish-subscribe机制通信,topic相当于是一个频道,是一个中转点。
Message:topic内容的数据类型(类的概念,具体publish每一条Msg是对象),定义在pkg/msg/.msg中。基本msg包括布尔…;常用 rostopic list;rostopic info;rostopic echo显示某个topic内容;rostopic pub发布;rosmsg list;rosmsg show
ROS学习记录_第3张图片4.1 Service和Srv
Service是ROS中的同步通信方式,Node间通过requedt-reply方式通行。
Srv对比Msg,是Service通信的数据格式,定义在
.srv文件中。
Srv只能嵌套Msg,不能嵌套Srv!!!rosservice list;rosservice info;rosservice call service_name args调用某个service;rossrv list;rossrc show;

  1. 2 Parameter server(参数和代码分离开)
    Parameter server的通讯方式更加静态,存储各种参数的字典(映射关系),可用命令行,launch文件和node(api)读写
    Rosparam list;Rosparam get……set….dump….load….delete…

4.4. Action
Service和Srv的进阶使用,SERVER服务器端向CLIENT客户端返回运行状态,CLIENT也能够随时取消。用在长时间、可抢占的任务中。

ROS常用工具
仿真:Gazebo,还有V-rep也常用,无人驾驶常用Carsion
调试、可视化:Rviz、rqt
命令行工具:rostopic、rosbag…
专用工具:Moveit!
5.1 Gazebo
Gazebo默认采用ODE物理引擎,还有bullet,用于动力学、导航、感知等任务的模拟
5.2 RViz
5.3rqt(rosqt,Qt写的,比RViz提供功能更高级
Rqt_graph画节点图
Rq_plot画接收速度图
5.4 rosbag数据的记录与回放

6.1 roscpp介绍
Client library:提供ros编程的库(类似api,但比api的层级更高,又封装了一遍)。有roscpp(c++)、rospy(python)、toslisp…
Roscpp的常用函数介绍,NodeHandle Class常用

6.2~6.3 topic DEMO(roscpp中的写法)
前面介绍的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:
main (argc,argv)
int argv;
char *argv[];或写成:
main (int argc,char *argv[])
由于main函数不能被其它函数调用, 因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到main的形参中去。
Talker.cpp、listener.cpp
6.4 service.demo
6.5 param_demo 演示

学习利用python写cpp文件(rospy),很多函数定义与roscpp含义不同,在ros2系统中有改进。
Node、topic、service、param、time
7.1 Node、topic相关函数
7.2 service、param、time
7.3 topic_demo
7.4 service_demo

介绍TF(坐标系变换)&URDF(统一机器人描述格式)
8.1 TF:transform缩写
TF定义坐标转换的标准、话题(topic)、工具、接口。
Ros机器人中定义部件是link,每个link有个frame,包含了坐标系
Tf树,任意两个frame间有一个broadcaster,即两个frame间有一个node来发送消息,broadcaster本质上是一个publisher

8.2 TF消息
两个frame间的数据格式是transformstamped.msg
Tf树的数据结构介绍
8.3 tf in c++
8.4 tf in pythom
8.5 urdf(unified robot description file)统一机器人描述文件
Link部件,joint两个部件间的关节,对应其间的tf
Link和jiont都要在urdf中定义,都是.xml的文件格式
SLAM相关内容(simutaneous location amd mapping)
9.1Ros中的地图
9.2 karto slam(比gmapping更早的算法)
具体实现的更加细节的东西

10.1 navigation stack(metapackage)2D导航模块
10.2 move_base导航的规划算法,全局规划、局部规划、处理异常行为
10.3costmap

你可能感兴趣的:(ROS)