ROS学习记录

中科院软件所-机器人操作系统入门(ROS入门教程)
https://www.icourse163.org/learn/ISCAS-1002580008?tid=1450503443#/learn/announce
在这里插入图片描述2.4.1-2,metapackage
在这里插入图片描述
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
在这里插入图片描述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 柴长坤 中国大学MOOC 目錄 前言 第一章 ROS简介 机器人时代的到来 ROS发展历程 什么是ROS 安装ROS 安装ROS-Academy-for-Beginners教学包 二进制与源码包 安装RoboWare Studio 单元测试一 第二章 ROS文件系统 Catkin编译系统 Catkin工作空间 Package软件包 CMakeLists.txt package.xml Metapacakge软件元包 其他常见文件类型 单元测试二 第三章 ROS通信架构(一) Node & Master Launch文件 Topic Msg 常见msg类型 单元测试三 第四章 ROS通信架构(二) Service Srv Parameter server Action 常见srv类型 常见action类型 单元测试四 第五章 常用工具 Gazebo RViz Rqt Rosbag Rosbridge moveit! 单元测试五 第六章 roscpp Client Library与roscpp 节点初始、关闭与NodeHandle Topic in roscpp Service in roscpp Param in roscpp 时钟 日志与异常 第七章 rospy Rospy与主要接口 Topic in rospy Service in rospy Param与Time 第八章 TF与URDF 认识TF TF消息 tf in c++ tf in python 统一机器人描述格式 附录:TF数学基础 三维空间刚体运动---旋转矩阵 三维空间刚体运动---欧拉角 三维空间刚体运动---四元数 第九章 SLAM 地图 Gmapping Karto Hector 第十章 Navigation Navigation Stack move_base costmap Map_server & Amcl 附录:Navigation工具包说明 amcl local_base_planner carrot_planner clear_costmap_recovery costmap_2d dwa_local_planner fake_localization global_planner map_server move_base_msg move_base move_slow_and_clear navfn nav_core robot_pose_ekf rotate_recovery
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值