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用来获取一个包的相关信息