ROS历届版本
14年Indigo,16年Kinetic,18年 20年Noetic,
ROS总体架构
通信机制,开发工具,应用功能,开源社区四位一体构建
学习所需操作工具
rqt_为ROS的图像化工具箱(即Qt),3D建模平台为rvis,虚拟仿真平台为gazebo
ROS实现功能的方式:计算图
通过以下四个模块:
1)节点(rosnode),用以表述各类软件;
2)节点管理器(ROS Master),节点的控制中心;
3)话题(rostopic),用以异步通信于节点和节点之间,传输信息(Message);
4)服务(rosservice),用以建立节点之间的连接,同步通信;
话题模型:发布者与订阅者之间通过传输字符串或其他标准信息流通信
话题通信机制:
Talker (发布者)注册(通过向ROS Master注册节点信息)
listener(订阅者)注册(同上注册)
ROS Master对于所注册的两个节点进行信息匹配
listener发送连接请求
Talker接受连接
两者开启网络通讯
Talker发布对应的信息
两者通信前五个步骤通过的是RPC(Remote Procedure Call)通信方式,易于简易且快速的连接,建立连接后,通过TCP(Transmission Control Protocol)连接,确保通信数据精准到达
与话题通信相比,服务通信缺少了两者相互连接的确认请求过程,更加简易的实现通信
ROS的文件系统
ROS基本使用操作:
ROS的常用命令:
catkin_create_pkg:用于创建功能包(功能包用于保存节点,放源码的最小单元)
rospack:获取功能包的信息,如:所处位置
catkin_make:编译工作空间中的功能包(产生可执行文件)
rosrun:运行功能包中的可执行文件(编译后使用)
工作空间:
src:存放代码的空间(存放CMakeLists.txt)其为最高层CMake文件
devel:开发空间,存放各类脚本,如:setup.bash
build:存放编译产生的中间文件
install:安装空间(与devel相像)
代码执行逻辑与顺序:
1.创建工作空间(建立src,于src中编写catkin_init_workspace)
2.编译工作空间(在src上级,也就是catkin_ws中编译空间:catkin_make)
3.设置环境变量(source devel/setup.bash)
4.检查环境变量($echo $ROS_PACKAGE_PATH)
功能包:
1.创建功能包(于src中创建,通过catkin_create_pkg xxx std_msgs rospy roscpp)
2.编译功能包(回到上级文件夹catkin_ws,编译catkin_make)
source ~/catkin_ws/devel/setup.bash