1、什么是ROS?
Robot operating System ,简单说机器人操作系统,弱耦合的分布式进程框架,通过进程间的消息传递和管理。实现硬件抽象和设备控制。
2、节点(node)
- node 是ROS的核心实体。
- 一段ROS程序
- 使用ROS的中间件进行通信
- 节点之间可以独立的启动和停止
3、和节点相关的概念
- message
- topic
- roscore :
- 有且只有一个roscore 可以运行
- 必须首先启动roscore
- 负责调度通信
- 发布器节点和roscore通信(如初始化一个topic)
- publisher、subscriber
4、工具
catkin_create_pkg: 创建一个package
catkin_make: 编译ROS程序
rosrun: 运行ros程序
rostopic: 主题有关的命令
rostopic list ; rostopic hz topic1; rostopic bw topic1; rostopic info topic1; rostopic echo topic1
rosnode list : 产看运行的节点列表
roslaunch : 通过编辑.launch 的文件自动启动多个节点
rosbag : 对话题数据的记录和回放
rosbag record topic1
rosbag play name1.bag
rqt_plot: 对结果的可视化
5、常用工具详细介绍
catkin_create_pkg:
catkin_create_pkg [packageNmae] [依赖项]
依赖项: roscpp: 使用c++编译器,兼容c++接口; std_msgs: ros预定义的数据类型
catkin_make:
package.xml : 组织ROS程序包,命名程序包名称、依赖项
CMakeLists.txt : 一个简单示例如下
cmake_minimum_required(VERSION 2.8.3) project(demo-proj1-nodes) # package name find_package(catkin REQUIRED COMPONENTS roscpp std_msgs ) catkin_package( # INCLUDE_DIRS include # LIBRARIES my_minimal_nodes # CATKIN_DEPENDS roscpp std-msgs # DEPENDS system_lib ) include_directories( include ${catkin_INCLUDE_DIRS} ) add_executable(my_minimal_publisher src/minimal_publisher.cpp) add_executable(my_minimal_publisher2 src/sleep_minimal_publisher.cpp) target_link_libraries(my_minimal_publisher ${catkin_LIBRARIES} ) target_link_libraries(my_minimal_publisher2 ${catkin_LIBRARIES} )
编译命令:catkin_make
编译后会有,devel 和build 两个文件夹
rosrun:
首先使用添加环境变量: source ./devel/setup.bash
rosrun [package-name] [可运行程序名称]
rqt_graph:
图形展示拓扑图。
roslaunch:
批量启动节点,需要编写 .launch的启动文件, 简单示例如下:
在package 目录下,创建 launch 目录,并在其中创建 .launch 文件:
"publisher" pkg="my_minimal_nodes" type="my_minimal_publisher2"/> "subscriber" pkg="my_minimal_nodes" type="my_minimal_psubscriber"/>
运行命令: roslaunch [package name] [.launch]
catkin_simple:
简化和规范 CMakeLists.txt
https://github.com/wsnewman/learning_ros_external_packages
打开~/.bashrc 在末尾添加,alias cs_create_pkg='~/path/cs_create_pkg.py'
之后可以使用命令: cs_create_pkg [package name] [依赖] 创建ros包
将catkin_simple 复制到你的程序包同级的目录中,如下,之后可以使用 catkin_make 编译。
catkin_simple 也可以从该地址中获得,一些详细使用方法也在其中https://github.com/catkin/catkin_simple