ROS学习笔记(一)ROS基础入门 — 参考创客制造

这篇博客是ROS初学者的入门指南,涵盖了创建工作空间、理解ROS话题、服务和参数,以及使用rqt_console、roslaunch等工具。文章详细介绍了如何创建ROS消息、服务,编写发布器和订阅器,以及测试Service和Client。还涉及录制和回放数据、roswtf检查以及手动创建ROS package。此外,提到了catkin工作流和管理系统依赖项的技巧。
摘要由CSDN通过智能技术生成

2016年12月8日 Thur
我是看的这土豆网的教程
http://www.tudou.com/listplay/nZHW3aBlxmw/XIovKWZJF2o.html
ROS是依赖于某种空间组合的概念,而这种概念是通过配置脚本环境来说实现的。
检查ROS_ROOT和ROS_PACKAGE_PATH的方法:

ROS中文论坛网址:
http://www.cnros.org/forum.php?mod=viewthread&tid=1&extra=page%3D10

SLAMcn:
http://www.slamcn.org/index.php/%E9%A6%96%E9%A1%B5

简直是福音,ROS是支持先锋机器人的,意味我可以用很多人已经开发的好的包,会降低我的开发成本,那么基本上可以说,用先锋机器人来代替turtlbot了
在这里放一下链接地址


打算跟着创客智造的学习走:
http://www.ncnynl.com/archives/201608/498.html

ROS 一些最基本也是最重要的概念
1.Packages: Package是ROS系统中最底层最基本的组织,里面存放各种文件:库、工具、可执行文件等.
2.Manifest: 一个package描述xml文件,定义package之间的依赖关系.
3.Stacks: package的集合,比package这个概念高一级别
4.Stack Manifest: 作用类似package manifest文件,但是它是针对stack的.
在文件系统中很容易识别package和stack:
1.package是一个包含 manifest.xml 文件的目录.
2.stack是一个包含 stack.xml 文件的目录.

这里写图片描述
2.3 文件系统工具
ROS中大量代码分散在众多的packages和stacks之中. 命令工具ls 和 cd已不能满足检索要求。因此ROS提供了一套自己的命令工具来完成与这些命令相似的工作.
2.3.1 使用rospack和rosstack
rospack 和 rosstack 命令都包含于 rospack package中. 两个命令用于获取packages 和stacks的信息. 教程中我们只提及命令的find的参数,作用是返回相应package或者stack的目录路径. 用法:
这里写图片描述
roscd用于快速进入同的目录
这里写图片描述
roscd log用于切换到ROS存储知识文件的目录
使用rosls 用于列出指定的package和stack中的文件和目录

一个catkin程序包由什么组成?
1、package.xml 文件
2、包含一个catkin版本的CMakeLists.txt文件
3、每个目录下只能有一个程序包,也就是说同一个目录下面不能嵌套多个程序的包

my_package/
    CMakeLists.txt
    package.xml

我如果想建一个catkin程序的包的时候
他的总体的框架:

workspace_folder/
    src/
        CMakeLists.txt
        package.xml
        package01/
            CMakeLists.txt
            package.xml
        package02/
            CMakeLists.txt
            package.xml
        package03/
            CMakeLists.txt
            package.xml

在home的目录下按ctrl + h 然后找到对应的 .bashrc
这里写图片描述

现在使用catkin_create_pkg命令来创建一个名为’beginner_tutorials’的新程序包,这个程序包依赖于std_msgs、roscpp和rospy
这里写图片描述
这将会创建一个名为beginner_tutorials的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件,这两个文件都已经自动包含了部分你在执行catkin_create_pkg命令时提供的信息。
catkin_create_pkg命令会要求你输入package_name,如果有需要你还可以在后面添加一些需要依赖的其它程序包,这里的depend就是他的依赖项
这里写图片描述
程序包之间的依赖关系
一级依赖
可以用rospack 可以查看一级依赖的关系
但是我在做的时候回有这个问题
这里写图片描述
定义自己的package.xml
这里写图片描述
描述标签:

<description>The beginner_tutorials package</description>

维护者标签

   7   <!-- One maintainer tag required, multiple allowed, one person per tag --> 
   8   <!-- Example:  -->
   9   <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  10   <maintainer email="user@todo.todo">user</maintainer>

这是package.xml中要求填写的一个重要标签,因为它能够让其他人联系到程序包的相关人员。至少需要填写一个维护者名称,但如果有需要的话你可以添加多个。除了在标签里面填写维护者的名称外,还应该在标签的email属性中填写邮箱地址

许可标签

 12   <!-- One license tag required, multiple allowed, one license per tag -->
  13   <!-- Commonly used license strings: -->
  14   <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  15   <license>TODO</license>

你应该选择一种许可协议并将它填写到这里。一些常见的开源许可协议有BSD、MIT、Boost Software License、GPLv2、GPLv3、LGPLv2.1和LGPLv3。

依赖项标签
接下来的标签用来描述程序包的各种依赖项,这些依赖项分为build_depend、buildtool_depend、run_depend、test_depend。

使用catkin_make进行编译
如果直接在刚刚建立的目录下面进行编译的话,就会出现如下错误:
这里写图片描述
那么该如何解决呢?
首先你应该退到RosWorSpace的工作目录下,然后输入 source /opt/ros/indigo/setup.bash
然后在catkin_make
这里写图片描述


图概念概述
node : 就是一个可执行程序
topic :topic 是一个话题,节点发布消息到话题上面
message:在一个消息,消息是ROS的一个数据类型。用于订阅和发布一个话题
rosout :相当于 stdout
master:节点服务器,用于帮助找到彼此的节点

客户端
ROS的客户端运行不同的编程的语言之间的节点相互通信
rospy就是Python客户端
roscpp就是cpp客户端
rosjava 就是java客户端
rosjs 就是javascripts客户端
rosnode list 能够列出所有活跃的节点
rostpolic list 所有节点运行的话题
roservice list 所有节点的运行服务
rosparam list 所有节点的参数
rosbag info .bag
rosrun rqt_bag rqt_bag
这里写图片描述

可视化节点检测

然后现在让我们跑小乌龟。

sudo apt-get install ros-indigo-ros-tutorials
roscore
rosrun turtlesim turtlesim_node

这里写图片描述
小海龟登场

如果想要给小海龟换名字的话:
这里写图片描述
这里写图片描述
注意两点:1、记得加冒号 2、__是两个

可以用rosnode cleanup来清除节点
rosnode ping <你的节点的名字>

打开一个新终端
rosrun turtlesim turtle_teleop_key
然后就可以用箭头移动小乌龟了
只有把这个终端窗口点击成主窗口,才能按上下键移动
常用的命令;
rosmsg show visualization_msgs/Marker
rosmsg list
rostopic list


这个下面主要是从小菜鸟上校的博客中学习到的
ROS的文件系统中有两个最基本的概念:Package 和 Manifest 也就是包和清单
package 是组织ROS代码中最基本的系统,每一个package包括一些库文件,可执行呢文件,脚本以及其他一些文件。
manifest文件是对package的下个相关信息一个描述
rospack用来获取一个包的相关信息

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值