ROS基础-基本概念和简单工具(1)
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程序包,命名程序包名称、依赖项
<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)的更多相关文章
- java基础之JDBC三:简单工具类的提取及应用
简单工具类: public class JDBCSimpleUtils { /** * 私有构造方法 */ private JDBCSimpleUtils() { } /** * 驱动 */ publ ...
- ROS_Kinetic_20 ROS基础补充
ROS_Kinetic_20 ROS基础补充 1 手动创建ROS功能包 参考官网:http://wiki.ros.org/cn/ROS/Tutorials/Creating%20a%20Package ...
- ROS_Kinetic_09 ROS基础内容(四)
ROS_Kinetic_09 ROS基础内容(四) 参考网址: http://wiki.ros.org/cn/ROS/Tutorials/UsingRosEd http://wiki.ros.org/ ...
- ROS_Kinetic_05 ROS基础内容(二)
ROS_Kinetic_05 ROS基础内容(二) 1. ROS节点node 官网教程:http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingNodes ...
- ROS_Kinetic_04 ROS基础内容(一)
ROS_Kinetic_04 ROS基础内容(一) 在开始基础内容之前,假定您已经完成了ROS kinetic版本的安装, 如果没有请参考ROS kinetic安装说明. 1. 环境变量 在使用ROS ...
- Linux磁盘概念及其管理工具fdisk
Linux磁盘概念及其管理工具fdisk [日期:2016-08-27] 来源:Linux社区 作者:chawan [字体:大 中 小] 引言:冯诺依曼体系中的数据存储器就是我们常说的磁盘或硬盘 ...
- 超简单工具puer——“低碳”的前后端分离开发
本文由作者郑海波授权网易云社区发布. 前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具.其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其 ...
- DotNetty关键概念及简单示例(基于NET5)
DotNetty关键概念及简单示例(基于NET5) 目录 DotNetty关键概念及简单示例(基于NET5) 1.DotNetty 设计的关键 1.1 核心组件 1.1.1 Channel 1.1.2 ...
- Bootstrap<基础十> 响应式实用工具
Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以通过媒体查询结合大型.小型和中型设备,实现内容对设备的显示和隐藏. 需要谨慎使用这些工具,避免在同一个站点创建完全不同 ...
随机推荐
- 1. 初探--prometheus调研
一.基本概念 Prometheus 是由前 Google 工程师从 2012 年开始在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prom ...
- 咪咕音乐链接歌词封面搜索等接口API
搜索 pd.musicapp.migu.cn/MIGUM2.0/v1.0/content/search_all.do?&ua=Android_migu&version=5.0.1&am ...
- 聊一聊JS输出为[object,object]是怎么回事
JS输出为[object object] 今天在学习ES6中的 Symbol 数据类型时,在写demo时控制台输出为 Symbol[object object] ,当时有点疑惑,查阅了相关资料后搞清楚 ...
- web前端分享JavaScript到底是什么?特点有哪些?
web前端分享JavaScript到底是什么?特点有哪些?这也是成为web前端工程师必学的内容.今天为大家分享了这篇关于JavaScript的文章,我们一起来看看. 一.JavaScript是什么? ...
- 重构 JAVA 聊天室 —— CS 模式的简单架构实现
前言 自从开始弄起数据挖掘之后,已经很久没写过技术类的博客了,最近学校 JAVA 课设要求实现一个聊天室,想想去年自己已经写了一个了,但是有些要求到的功能我也没实现,但看着原有的代码想了想加功能好像有 ...
- VMware kali虚拟机环境配置
编译内核 (1)执行命令uname -r以查看内核版本. (2)执行命令apt-cache search linux-headers查看是否安装内核头文件. (3) 如果uname -r出现的内容在 ...
- layui2.5 开关在confirm确认了之后在关/开
<!--默认选中--> <div class="layui-form-item layui-form"> <div class="layui ...
- 【目录】Cocos2d-x系列
1.Cocos2d-x的坐标系统 2.Cocos2d-x 点击菜单按键居中放大(无需修改底层代码) 3.发布Cocos2d-x的PC端程序 4.Cocos2d-x游戏实例<忍者飞镖>之对象 ...
- IT兄弟连 HTML5教程 响应式布局实例
在学习Media Queries模块前,先通过一个响应式布局实例来了解一下响应式布局和Media Queries模块的简单应用.在本例中,使用HTML5的结构元素定义了5个盒子.当浏览器窗口尺寸不同时 ...
- Spring Boot Quartz 分布式集群任务调度实现
Spring Boot Quartz 主要内容 Spring Scheduler 框架 Quartz 框架,功能强大,配置灵活 Quartz 集群 mysql 持久化定时任务脚本(tables_mys ...