1、什么是ROS?

Robot operating System ,简单说机器人操作系统,弱耦合的分布式进程框架,通过进程间的消息传递和管理。实现硬件抽象和设备控制。

2、节点(node)

  • node 是ROS的核心实体。
  • 一段ROS程序
  • 使用ROS的中间件进行通信
  • 节点之间可以独立的启动和停止

3、和节点相关的概念

  • message
  • topic
  • roscore :
  1. 有且只有一个roscore 可以运行
  2. 必须首先启动roscore
  3. 负责调度通信
  4. 发布器节点和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程序包,命名程序包名称、依赖项

         <name></name>

         <build_depend></build_depend>

         <run_depend></run_depend>

        

  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 文件:

<launch>
<node name="publisher" pkg="my_minimal_nodes" type="my_minimal_publisher2"/>
<node name="subscriber" pkg="my_minimal_nodes" type="my_minimal_psubscriber"/>
</launch>

  运行命令:  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

  

  

  

ROS基础-基本概念和简单工具(1)的更多相关文章

  1. java基础之JDBC三:简单工具类的提取及应用

    简单工具类: public class JDBCSimpleUtils { /** * 私有构造方法 */ private JDBCSimpleUtils() { } /** * 驱动 */ publ ...

  2. ROS_Kinetic_20 ROS基础补充

    ROS_Kinetic_20 ROS基础补充 1 手动创建ROS功能包 参考官网:http://wiki.ros.org/cn/ROS/Tutorials/Creating%20a%20Package ...

  3. ROS_Kinetic_09 ROS基础内容(四)

    ROS_Kinetic_09 ROS基础内容(四) 参考网址: http://wiki.ros.org/cn/ROS/Tutorials/UsingRosEd http://wiki.ros.org/ ...

  4. ROS_Kinetic_05 ROS基础内容(二)

    ROS_Kinetic_05 ROS基础内容(二) 1. ROS节点node 官网教程:http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingNodes ...

  5. ROS_Kinetic_04 ROS基础内容(一)

    ROS_Kinetic_04 ROS基础内容(一) 在开始基础内容之前,假定您已经完成了ROS kinetic版本的安装, 如果没有请参考ROS kinetic安装说明. 1. 环境变量 在使用ROS ...

  6. Linux磁盘概念及其管理工具fdisk

    Linux磁盘概念及其管理工具fdisk [日期:2016-08-27] 来源:Linux社区  作者:chawan [字体:大 中 小]   引言:冯诺依曼体系中的数据存储器就是我们常说的磁盘或硬盘 ...

  7. 超简单工具puer——“低碳”的前后端分离开发

    本文由作者郑海波授权网易云社区发布. 前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具.其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其 ...

  8. DotNetty关键概念及简单示例(基于NET5)

    DotNetty关键概念及简单示例(基于NET5) 目录 DotNetty关键概念及简单示例(基于NET5) 1.DotNetty 设计的关键 1.1 核心组件 1.1.1 Channel 1.1.2 ...

  9. Bootstrap<基础十> 响应式实用工具

    Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以通过媒体查询结合大型.小型和中型设备,实现内容对设备的显示和隐藏. 需要谨慎使用这些工具,避免在同一个站点创建完全不同 ...

随机推荐

  1. 后端程序猿标配之linux命令

    超清图片,可放大查看. 来源:https://www.cnblogs.com/ryanlamp/p/7511883.html

  2. 搞了一次IE浏览器兼容,我有点奔溃....

    浏览器兼容问题(主要时IE上遇到的坑坑坑) caniuse 工具(基本参考作用,实际还是需要测试) (1)安装babel-polyfill基本操作了,IE浏览器没有内置Promise对象,不仅如此,几 ...

  3. 类型,值,变量知识总结(js)

    文章目录: 一. 全局变量和局部变量分析 二. 从两个角度去理解变量作用域 三. 关于浮点数值计算产生舍入误差的问题分析 四. 理解js预解析 一. 全局变量和局部变量分析 在函数外部由var定义的变 ...

  4. Wonder发布v1.1正式版本,新增资产预览、脚本、AssetBundle等

    更新说明 本次版本重点增加了脚本组件,并且实现了类似于unity的AssetBundle,支持动态加载场景和资源. 相关链接 官网 Wonder官方QQ群: 106047770 相关资料 Wonder ...

  5. Java并发之synchronized关键字深度解析(二)

    前言 本文继续[Java并发之synchronized关键字深度解析(一)]一文而来,着重介绍synchronized几种锁的特性. 一.对象头结构及锁状态标识 synchronized关键字是如何实 ...

  6. C#获取字符串的拼音和首字母

    在C#中我们想要获取字符串的拼音并不是那么困难的,在网上看到很多都是特别笨的方式来实现,其实各有各的好处吧,如果使用了下方法方式,它不知道多音字,这就是一个问题. /// <summary> ...

  7. 一起学Vue之计算属性和侦听器

    概述 在Vue开发中,模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.当你想要在模板中多次引用相同表达式时,就会更加难以处理.所以,对于任何复 ...

  8. Android动态添加碎片

    我们编写一个能够用过按钮动态更替碎片的APP,首先在主页上显示第一个碎片,点击按钮后可以替换到第二个碎片,或者删除已经替换掉的第二个碎片. 一.MainActivity.java import and ...

  9. 避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为

    避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为 在使用WinForm标准的TreeView控件的过程中,添加了如下类似的节点 parentNode ...

  10. flyway 非常坑爹的中文乱码问题

    flyway 也真是够了, 动不动乱码,烦死了! 我的 命令是这样的: flyway  -driver=com.mysql.jdbc.Driver -user=root -password=12345 ...