目录
一 Ros简介
1.ros官网:
http://www.ros.org/
2.ros版本发展
二 框架
1 框架总览
工作空间的树形结构如下:
Catkin 是ROS 定制的编译构建系统,是对 CMake的扩展,用来编译ros程序。
Catkin 工作空间是文件夹,管理ros的功能包。
建立工作空间然后编译命令行如下
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source ~/catkin_ws/devel/setup.bash #编译后刷新环境
src文件夹下面是各个包的源代码,包是catkin变异的基本单元,编译时会一次查找各个包然后生成exe。
build中是cmake& catkin的缓存和中间文件。
devel中是目标文件,包括头文件,dll(动态链接库),sll(静态链接库),exe.
其中build 和devel文件夹是编译时自动产生的。
CMakeLists的常用命令如下:
package.xml的常用模式如下
运行Ros中的多个可执行程序时使用launch文件,配置文件yaml。
launch 文件格式如下:
2.通信格式
共有四种:话题 Topic 服务service 参数服务 parameter service 动作库 Actionlib
2.1 话题 Topic
Topic: ROS中的异步通信方式。Node之间通过publish-subscribe通信。先发布再订阅,多发布多订阅。
Message 是topic 内容的数据类型,定义在*.msg文件中. Rgb 图像的格式,类似于一个类,发布的就是对象。
2.2 Service 服务
Service 是ROS 中同步通信的方式。Node 之间可以通过request-reply 方式通信。Node A发出请求后等待回复。
Service 通信的数据格式 srv,定义在 *.srv 中。
SRV 上为请求,下为应答.
Srv中嵌套msg文件。
2.3 Topic 和 Service 的对比
2.4 Action 动作
Action 类似于service ,带有状态反馈的通信方式,适用于在长时间(导航)、可抢占(可被中断)的任务中。
Action 通信的数据格式在 *.action 文件中。
Goal 是请求,Result 是最终结果,feedback不断传回状态。
3.常用指令
3.1 关于包
rospack find package_name #定位包的位置
rospack list #所有包的名称
roscd package_name #跳转到包的路径下
rosls package_name #输出包的信息
roscd package_name file_name #编辑文件
catkin_create_pkg <pkg_name> [deps] #创建包
rosdep install [pkg_name] #安装包所需依赖
3.2 关于节点
roscore #启动管理器,管理node之间的通信
rosrun [pkg_name] [node_name] #启动node
rosnode list #当前正运行的node列表
rosnode info [node_name] #node的信息
rosnode kill [node_name] #结束node
roslaunch [pkg_name] [filename.launch] #启动master和多个node
3.3 关于通信
Topic
rostopic list #列出当前所有topic
rostopic info /topic_name #topic的信息
rostopic echo /topic_name #topic的内容
rostopic pub /topic_name #向topic发布内容
rosmsg list #列出所有msg
rosmsg show #显示msg内容
Service
rosservice list #列出活跃的service
rosservice info service_name #显示属性
rosservice call service_name args #调用service
rossrv list #列出所有srv
rossrv show srv_name #显示内容
Param
rosparam list
rosparam get param_key #显示参数的值
rosparam set param_key param_value #设置参数值
rosparam dump file_name #保存参数到文件
rosparam load file_name #从文件读取参数
rosparam delete param_key #删除参数
Rosbag(ROS 命令行工具),记录和回放数据流。用于后期调试排查。
rosbag record <topic_names> #记录一些topic到bag中
rosbag record -a #记录所有topic到bag中
rosbag play <bag-files> #回放bag
三 工具
Gazebo 仿真工具,ODE物理引擎,用于动力学、导航、感知等任务的模拟。
Rviz(The Robot Visualization tool) 可视化工具,方便监控调试。将接收到的信息显示出来。
Rqt(ROS qt),基于qt开发,常用rqt_graph (通信架构),rqt_plot(绘制曲线), rqt_console(日志) .
四 功能
各种成熟的算法包啦~
五 社区
世界各地都有同志在做,你不是一个人在战斗!