ROS 笔记
ros的编程范式
- ros认为,linux平台下,机器人的软件由一个个小程序组成,这些小程序称为node,每个小程序负责一部分功能
- ros实现的框架就是,小程序的并发执行+相互通信,程序(进程)的并发由linux系统调度,相互通信是ros重点实现的message+service模型
- ros中的node可以都在同一个机器上,也可以运行在不同机器上并通过以太网等底层传输方式。ros的通信实现基于socket。
- ros的核心除了这个通信和并发机制外,是其生态社区,大量的工具和包可快速搭建机器人,深入学习。
Where Next?
Description: This tutorial discusses options for getting to know more about using ROS on real or simulated robots.
Tutorial Level: BEGINNER
At this point in the beginner's tutorials you should have an understanding of the core concepts of ROS.
Given a robot that runs ROS, you could use this understanding to list topics published and subscribed by the robot, to identify the messages consumed by these topics and then write your own nodes that process sensor data and act in the world.
The real attraction of ROS is not the publish/subscribe middle-ware itself but that ROS provides a standard mechanism for developers around the world to share their code. The best "feature" of ROS is its enormous community.
The number of packages available can be overwhelming. This tutorial attempts to give you an idea of what to explore next.
Launching a Simulator
Even if you have a real robot, it is good to get started using a simulator so that if something goes wrong you don't injure yourself or damage an expensive robot.
You can get started with the PR2 Simulator or the Turtlebot Simulator. Alternately, you might search for your robot and check whether it has a simulator of its own.
At this point, you might try to control the simulated robot using a 'teleop' package (e.g., turtlebot_teleop) or use your understanding of ROS to find a topic and write code that sends an appropriate message to drive your robot.
Exploring RViz
RViz is a powerful visualization tool that allows you to view the robot's sensors and internal state. The user guide will help you get started.
Understanding TF
The TF package transforms between different coordinate frames used by your robot and keeps track of these transforms over time. A good understanding of TF is essential when working with any real robot. It is worthwhile to work through the tutorials.
If you're building your own robot, you might at this point consider constructing a URDF model for your robot. If you're using a "standard" robot then one has probably already being built for you. Nevertheless, it may be worthwhile to briefly familiarize yourself with the URDF package.
Going Deeper
At this point, you're probably ready to start getting your robot to perform more sophisticated tasks. The following pages may help you:
actionlib - The actionlib package provides a standardized interface for interfacing with preemptible tasks. This is widely used by "higher-level" packages in ROS.
navigation - 2D navigation: map-building and path planning.
MoveIt - To control the arms of your robot
------------------------------------------------------------------
Intermediate Level
More client API tutorials can be found in the relevant package (roscpp, rospy, roslisp)
- Creating a ROS package by hand.
This tutorial explains how to manually create a ROS package.
- Managing System dependencies
This explains how to use rosdep to install system dependencies.
- Roslaunch tips for large projects
This tutorial describes some tips for writing roslaunch files for large projects. The focus is on how to structure launch files so they may be reused as much as possible in different situations. We'll use the 2dnav_pr2 package as a case study.
- Running ROS across multiple machines
This tutorial explains how to start a ROS system using two machines. It explains the use of ROS_MASTER_URI to configure multiple machines to use a single master.
- Defining Custom Messages
This tutorial will show you how to define your own custom message data types using the ROS Message Description Language.
- Using a C++ class in Python
This tutorial illustrates a way to use a C++ class with ROS messages in Python.
- Packaging your ROS project as a snap
This tutorial covers how to package and deploy your ROS project as a snap.
- How to Write a Tutorial
This tutorial covers useful template and macros for writing tutorials, along with example tutorials that are available for guidance on ros.org
ROS 笔记的更多相关文章
- ROS笔记——创建简单的主题发布节点和主题订阅节点
在安装好ROS后,接着学习如何创建节点和节点之间的通信方式,以一个简单的主题发布节点和主题订阅节点说明. 节点是连接ROS网络等可执行文件,是实现某些功能的软件包,也是一个主要计算执行的进程. 一.创 ...
- ROS笔记 Topics
http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics rostopic rqt_graph rosmsg rqt_graph 一个用于查看topi ...
- ROS笔记3 理解nodes
http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes 介绍几个命令行工具用法 roscore rosnode rosrun A node reall ...
- ROS笔记2 构建一个package
构建package catkin_make 可以理解为一个集成了CMake和make的命令行工具 通常的cmake构建如下 # In a CMake project $ mkdir build $ c ...
- ROS笔记1 安装及创建一个ROS Package
安装 跟着官方的安装指引来就行了.安装前要先确定自己的ros版本和ubuntu版本.这二者是一一对应的. http://wiki.ros.org/ROS/Installation 主要是package ...
- ROS 笔记 程序包/节点/topic
官方教程: wiki.ros.org/cn/ROS/tutorials 程序包打创建于编译 创建程序包 在工作空间的src底下,输入如下命令: $ catkin_create_pkg 要创建的包名 依 ...
- ROS笔记一
1.lwip:瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈.实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用. 2.RTOS:实时操作 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
随机推荐
- 在windows中使用Navicat连接Linux虚拟机中的mysql数据库
今天想用navicat远程连接虚拟机中的MySQL数据库,一直连不上,在网上搜索了一下,发现原因是MySQL对远程用户登陆的授权问题.这里说一下我的解决方法.(本人小白) 首先,我用navicat去远 ...
- pyqt加载图片
使用QPixmap可以加载图片,但是图片只能是标准二进制文件格式: bmp,gif,ico,jpeg,jpg,mng,pbm,pgm,png,ppm,svg,svgz,tga,tif,tiff,xbm ...
- 整合quickx到普通cocos2dx
quickx是对cocos2dx的lua扩展,它做了一些C++的扩展,同时还在lua做了一些封装, 让用lua开发cocos2dx更快,中文站http://quick.cocoachina.com/. ...
- java ssm框架入门(三)正式项目的web.xml配置
一个正规的上线的web.xml的配置. <?xml version="1.0" encoding="UTF-8"?> <web-app id= ...
- 转:Linux下随机10字符病毒的清除
病毒表现:网络流量暴满,疯狂地向香港的一个IP发数据,同时在top里面表现为随机的10位字母的进程,看/proc里面的信息,则为ls,cd之类常见的命令,CPU利用率也在top之首.杀死该进程后,会再 ...
- 禁止复制 + 锁右键 + 禁止全选(兼容IE Chrome等)
function iEsc() { return false; }function iRec() { return true; }function DisableKeys() { if (eve ...
- HTML5关于上传API的一些使用(中)
上一次写了关于HTML的上传API,XMLHttpRequest2.0的上传方式,以及HTML5中上传之前本地的预览,包括对于图片以及部分信息的预 览.这次我们就讲下HTML5中关于上传的一些各种个性 ...
- Java中float/double取值范围与精度
Java浮点数 浮点数结构 要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个 ...
- git 停止在12% writing objects 怎么回事?
git 停止在12% writing objects 怎么回事? 输入以下代码试一下: git config --global http.postBuffer 524288000
- iBATIS SQL Maps
让我们重回到车辆管理系统和张三的故事中. 在 iBATIS SQL Maps 的世界里也存在 one-to-many.many-to-one 的关系,想必你已经对这些概念驾轻就熟了.好!还是每个 Pe ...