首页 ROS学习笔记:Beginner阶段

ROS学习笔记:Beginner阶段

举报
开通vip

ROS学习笔记:Beginner阶段ROS官网学习资料整理1Version:1.0;Date:20140430;Author:LiGaofeng,NKU目录目录.................................................................................................................................................................1一、基本命令.................................

ROS学习笔记:Beginner阶段
ROS官网学习资料整理1Version:1.0;Date:20140430;Author:LiGaofeng,NKU目录目录.................................................................................................................................................................1一、基本命令.................................................................................................................................................3二、创建一个WorkSpace..............................................................................................................................3三、创建一个Package...................................................................................................................................33.1一个包的组成..................................................................................................................................33.2包与catkinWorkSpace空间关系...................................................................................................33.3创建一个catkinPackage.................................................................................................................43.4包的依赖..........................................................................................................................................53.4.1First-orderdependencies........................................................................................................53.4.2.Indirectdependencies.............................................................................................................53.5定制自己的包..................................................................................................................................53.5.1认识package.xml文件各部分含义.....................................................................................5四、编译一个ROS包....................................................................................................................................64.1BuildingPackages.............................................................................................................................6五、理解ROS节点........................................................................................................................................65.1熟悉如下几个概念..........................................................................................................................75.2ClientLibraries..................................................................................................................................75.3roscore...............................................................................................................................................75.4开始使用rosnode............................................................................................................................85.5用rosrun...........................................................................................................................................9六、理解ROS中的Topics...........................................................................................................................106.1键盘遥控乌龟................................................................................................................................116.2ROSTopics......................................................................................................................................116.3介绍rostopic..................................................................................................................................126.3.1rostopicecho........................................................................................................................126.3.2rostopiclist...........................................................................................................................136.4ROSMessages.................................................................................................................................136.4.1用rostopictype...................................................................................................................146.4.2用rostopicpub命令...........................................................................................................156.4.3用rostopichz命令.............................................................................................................16七、理解ROS中的Services和Parameters................................................................................................187.1ROSServices...................................................................................................................................187.2用rosservice命令..........................................................................................................................187.2.1rosservicelist........................................................................................................................197.2.2rosservicetype......................................................................................................................197.2.3rosservicecall.......................................................................................................................207.3用rosparam....................................................................................................................................217.3.1rosparamlist.........................................................................................................................217.3.2rosparamset和get命令......................................................................................................217.3.3rosparamdump和rosparamload命令...............................................................................23八、使用rqt_console和roslaunch.............................................................................................................248.1安装rqt和turtlesim包。.............................................................................................................248.2rqt_console和rqt_logger_level的用法.........................................................................................24ROS官网学习资料整理2Version:1.0;Date:20140430;Author:LiGaofeng,NKU8.2.1关于logger的输出等级。.................................................................................................268.2.2roslaunch的用法.................................................................................................................278.2.3roslaunching.........................................................................................................................27九、用rosed编辑文件................................................................................................................................299.1rosed的使用...................................................................................................................................299.2用tab键编辑一个包下的所有文件。.........................................................................................309.3Editor...............................................................................................................................................30十、创建一个ROSmsg和srv.....................................................................................................................3110.1msg和srv介绍............................................................................................................................3110.2msg................................................................................................................................................3210.2.1创建一个msg...................................................................................................................3210.2.2使用rosmsg......................................................................................................................3310.3使用srv........................................................................................................................................3410.3.1创建一个srv.....................................................................................................................3410.3.2使用rossrv........................................................................................................................3510.4msg和srv的一般步骤................................................................................................................3510.5一些帮助工具..............................................................................................................................37十一、写一个简单的发布者Publisher和订阅者(Subscriber)(C++语言).............................................3711.1写一个Publisher节点.................................................................................................................3711.2写一个Subscriber节点。...........................................................................................................3911.3编译你的节点..............................................................................................................................40十二、测试发布节点和订阅节点。...........................................................................................................4112.1运行Publisher..............................................................................................................................4112.2运行Subscriber............................................................................................................................42十三、写一个简单的Service和Client.......................................................................................................4213.1写一个Service节点....................................................................................................................4213.2写一个Client节点......................................................................................................................4313.3编译你的节点..............................................................................................................................44十四、测试Service和Client.......................................................................................................................4514.1运行Service(记得先运行roscore)........................................................................................4514.2运行Client...................................................................................................................................45十五、记录数据以及回复数据...................................................................................................................4615.1记录数据(创建bag文件)......................................................................................................4615.1.1记录所有发布的topics....................................................................................................4615.2查看bag文件及playingbag文件..............................................................................................4715.3记录数据的一部分......................................................................................................................48十六、roswtf的使用...................................................................................................................................48ROS官网学习资料整理3Version:1.0;Date:20140430;Author:LiGaofeng,NKU一、基本命令cd[file_name]:进入某一文件路径cd..:返回上一级目录ls:列出当前路径下的所有文件rospackfind[package_name]:返回所要找的包的路径roscd:将当前路径设置为某一个ROS包或栈的路径或其子路径pwd:显示出当前roscdlog:将路径设置为ROS存储日志文件的路径。rosls[locationname[/subdir]]:直接将路径改为某个包下的某个子目录TAB键,相当于Eclipse里面的ALT+/。但没有ALT+/功能那么强大,只能在路径唯一时才会自动出来。不会给出可选列表二、创建一个WorkSpace$mkdir-p~/catkin_ws/src$cd~/catkin_ws/src$catkin_init_workspace初始化了工作空间,创建了一个catkin_ws空间,在该空间下有一个src文件夹。$cd~/catkin_ws/$catkin_make执行完该命令后,查看当前路径,会发现该空间除了src,又多了build和devel文件夹。这两个文件夹中是一些配置信息、编译信息等。三、创建一个Package3.1一个包的组成必须满足三个要求:1.一个包里必须包含一个package.xml文件,用于说明关于包的基本信息(metainformation)——相当于Android里德Manifest.xml文件。2.包必须包含一个CMakeLists.txt文件。3.一个文件夹里只能有一个包。这也意味着,不会有多个包共用相同的路径。3.2包与catkinWorkSpace空间关系一个包通常要在一个catkinWorkSpace中。也可以单独创建包。包在WorkSpace空间中的结构是这样的:workspace_folder/--WORKSPACEsrc/--SOURCESPACECMakeLists.txt--'Toplevel'CMakefile,providedbycatkinpackage_1/ROS官网学习资料整理4Version:1.0;Date:20140430;Author:LiGaofeng,NKUCMakeLists.txt--CMakeLists.txtfileforpackage_1package.xml--Packagemanifestforpackage_1...package_n/CMakeLists.txt--CMakeLists.txtfileforpackage_npackage.xml--Packagemanifestforpackage_n3.3创建一个catkinPackage首先要先进入之前创建的一个WorkSpace的src目录中$cd~/catkin_ws/src然后用catkin_create_pkg<package_name>[depend1][depend2][depend3]创建一个包。$catkin_create_pkgbeginner_tutorialsstd_msgsrospyroscpp依照上述命令,创建了一个名为beginner_tutorials的包。这个包里包含了一个package.xml和CMakeList.txt文件。进入src文件可以看到多了一个名为beginner_tutotials的包。进入beginner_tutorials查看一下。里面有如下文件:ROS官网学习资料整理5Version:1.0;Date:20140430;Author:LiGaofeng,NKU那么,什么是包的依赖呢?上述的命令里,有三个依赖,std_msgsrospyroscpp,他们分别是什么含义呢?3.4包的依赖3.4.1First-orderdependencies一个包直接依赖的文件?类?包?库?3.4.2.Indirectdependencies包所依赖的文件可能还依赖别的文件。用rospackdepends1<name>查询想要查询的类的依赖rospackdepends<package_name>列出包所有依赖的对象3.5定制自己的包3.5.1认识package.xml文件各部分含义1.description标签<description>thiscanbeyourdescription</description>2.maintainer标签<maintaineremail=user@todo.todo>user</maintainer>这个标签描述了谁是这个包的维护者。至少需要一个维护者。标签中给出了维护者的邮箱3.license标签<license>BSD</license>需要选择一个开放源码 许可 商标使用许可商标使用许可商标使用许可商标使用许可商标使用许可 证。开放源码许可证有:BSD,MIT,BoostSoftwareLicense,GPLv2,GPLv3,LGPLv2.1,andLGPLv3等,在ROS里采用BSD开源许可证4.dependencies标签给出了该包依赖于哪些包或文件默认为buildtool_depend、编译build_depend、运行run_depend切换行号显示12<buildtool_depend>catkin</buildtool_depend>1314<build_depend>roscpp</build_depend>15<build_depend>rospy</build_depend>16<build_depend>std_msgs</build_depend>1718<run_depend>roscpp</run_depend>19<run_depend>rospy</run_depend>20<run_depend>std_msgs</run_depend>5.去掉各种注释和无用的标签之后的packag.xml文件如下:<?xmlversion="1.0"?><package><name>beginner_tutorials</name><version>0.1.0</version><description>Thebeginner_tutorialspackage</description><maintaineremail="ligf@robot.nankai.edu.cn">LiGaofeng</maintainer>ROS官网学习资料整理6Version:1.0;Date:20140430;Author:LiGaofeng,NKU<license>BSD</license><urltype="website">http://wiki.ros.org/beginner_tutorials</url><authoremail="ligf@robot.nankai.edu.cn">LiGaofeng</author><buildtool_depend>catkin</buildtool_depend><build_depend>roscpp</build_depend><build_depend>rospy</build_depend><build_depend>std_msgs</build_depend><run_depend>roscpp</run_depend><run_depend>rospy</run_depend><run_depend>std_msgs</run_depend></package>四、编译一个ROS包4.1BuildingPackages1.利用catkin_make命令该命令是一个命令行工具,为 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 catkin工作流程提供了方便。可以看做catkin_make命令把Cmake工作流程中的cmake和make的响应结合到了一起。$catkin_make[make_targets][-DCMAKE_VARIABLES=...]2.BuildingYourPackage$cd~/catkin_ws/$catkin_make首先必须进入一个catkin空间,不然在进行catkin_make编译时,catkin_make默认的编译路径是空间下的src目录,如果不在空间目录,则找不到src文件,编译不成功。如果更改编译路径:#Inacatkinworkspace$catkin_make--sourcemy_src$catkin_makeinstall--sourcemy_src#(optionally)编译之后,在工作空间中除了src文件夹,还有build和devel文件夹。build是cmake和make在编译包时生成的一些设置文件。查看该文件夹会发现其中多了一个beginner_tutorials的包。devel文件夹是默认的devel空间路径,是安装包之前的一些必要的可执行文件和库。五、理解ROS节点我们会用到一个轻量级的模拟器,用下面命令安装:$sudoapt-getinstallros-<distro>-ros-tutorialsROS官网学习资料整理7Version:1.0;Date:20140430;Author:LiGaofeng,NKU将其中的distro替换成自己安装的ros版本的名字,比如ros-hydro5.1熟悉如下几个概念Nodes:节点Messages:消息。一种数据类型,用来向一个Topic订阅或发布数据。Topics:话题Master:主节点rosout:标准输出/标准错误的输出roscore:Master+rosout+parameterserver5.2ClientLibrariesROSclientlibrary允许节点以不同的变成语言与其他节点通信。其中有两个包:rospy=pythonclientlibraryroscpp=c++clientlibrary5.3roscore在运行ROS时应该首先运行的。运行:$roscore会看到如下样式的输出:...loggingto~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-machine_name-13039.logCheckinglogdirectoryfordiskusage.Thismaytakeawhile.PressCtrl-CtointerruptDonecheckinglogfilediskusage.Usageis<1GB.startedroslaunchserverhttp://machine_name:33919/ros_commversion1.4.7SUMMARY========PARAMETERS*/rosversion*/rosdistroNODESROS官网学习资料整理8Version:1.0;Date:20140430;Author:LiGaofeng,NKUauto-startingnewmasterprocess[master]:startedwithpid[13054]ROS_MASTER_URI=http://machine_name:11311/setting/run_idto9cf88ce4-b14d-11df-8a75-00251148e8cfprocess[rosout-1]:startedwithpid[13067]startedcoreservice[/rosout]5.4开始使用rosnode好了,现在打开一个新的terminal,让我们用rosnode来看看roscore都做了什么吧。Note:打开一个新的terminal会重设环境,~/.bashrc文件会issourced,如果在运行像rosnode这样的命令时出现问题,你需要添加以下环境设置文件到~/.bashrc文件中,或手动重新source他们。下面的命令会列出当前处于活动状态的所有节点:$rosnodelist如果什么都没有运行,会看到只有rosout节点下面命令会返回关于某指定节点的信息:$rosnodeinfo/rosout返回信息如下所示:------------------------------------------------------------------------Node[/rosout]Publications:*/rosout_agg[rosgraph_msgs/Log]Subscriptions:*/rosout[unknowntype]Services:*/rosout/set_logger_level*/rosout/get_loggersROS官网学习资料整理9Version:1.0;Date:20140430;Author:LiGaofeng,NKUcontactingnodehttp://machine_name:54614/...Pid:5092(Note:在打开新的terminal时不要关掉最初的那个terminal,因为关掉terminal的话原先运行的Master节点也被关闭了。如果碰到这种情况,在运行rosnodelist时会发现报错:cann’tcommunicatewithMaster。解决 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是:运行roscore命令开启Master,然后再重新打开一个terminal)5.5用rosrun.rosun命令能够直接利用包名运行一个节点,而不需要知道包的路径:(问题:包与节点的关系是什么?)$rosrun[package_name][node_name]现在我们可以运行turtlesim包中的turtlesim_node试试小乌龟的仿真程序:我的运行效果如下:这时候再新开一个terminal运行rosnodelist命令会发现多了一个turtlesim节点。你还可以用下面命令更改节点的名字$rosrunturtlesimturtlesim_node__name:=my_turtle新的效果图:ROS官网学习资料整理10Version:1.0;Date:20140430;Author:LiGaofeng,NKUrosnode的ping命令:$rosnodepingmy_turtle六、理解ROS中的Topics在本节中,需要用roscore运行一个Master节点,然后用rosrunturtlesimturtlesim_node运行乌龟仿真程序。ROS官网学习资料整理11Version:1.0;Date:20140430;Author:LiGaofeng,NKU6.1键盘遥控乌龟我们已经运行起了乌龟的仿真节点,也需要驱动乌龟的程序。在新的terminal中运行下列命令:$rosrunturtlesimturtle_teleop_key运行之后可以通过键盘的方向键控制小乌龟的移动:需要注意的是,控制时,屏幕的焦点应该是打开turtle_teleop_key的那个terminal。那么在这个场景的背景究竟是怎么运行的呢?6.2ROSTopicsturtlesim_node和turtle_teleop_key节点通过ROSTopics与其他节点通信。turtle_teleop_key在一个topic上发布键盘输入信息,而turtlesim订阅同一个topic的信息来接收键盘输入。我们可以用rqt_graph查看当前正在运行的节点和Topics。rqt_graph创建当前正在运行的系统的一个动态框图。rqt_graph是rqt包的一部分,如果没安装的话用下列命令安装。$sudoapt-getinstallros-<distro>-rqt$sudoapt-getinstallros-<distro>-rqt-common-plugins同样,其中的distro要替换成自己安装的ROS系统的版本名,如hydro。在新的terminal中运行下列命令,能看到如下结果:$rosrunrqt_graphrqt_graphROS官网学习资料整理12Version:1.0;Date:20140430;Author:LiGaofeng,NKU如果把鼠标放在上图中的/turtle1/cmd_vel上,与/turtle1/cmd_vel相关的节点会高亮。turtlesim_node和turtle_teleop_key节点是通过一个叫/turtle1/cmd_vel的Topic通信。6.3介绍rostopic可以用rostopic工具来得到关于ROSTopics的信息。可以用帮助命令查看命令参数$rostopic-h命令列表如下:rostopicbwdisplaybandwidthusedbytopicrostopicechoprintmessagestoscreenrostopichzdisplaypublishingrateoftopicrostopiclistprintinformationaboutactivetopicsrostopicpubpublishdatatotopicrostopictypeprinttopictype6.3.1rostopicecho用rostopicecho[topicName]可查看一些中间信息。$rostopicecho/turtle1/cmd_vel输出结果如下图所示:ROS官网学习资料整理13Version:1.0;Date:20140430;Author:LiGaofeng,NKU这时再看看rqt_graph图(可以按左上角的刷新按钮):6.3.2rostopiclist该命令列出当前活动的topics。用-h命令可以查看list命令下有哪些可选参数。$rostopiclist-h我们可以用rostopiclist–v来列出发布和订阅的Topics。6.4ROSMessages话题(Topics)上的通信在节点间传递消息(Messages)时发生。为完成发布者(publisher:,如ROS官网学习资料整理14Version:1.0;Date:20140430;Author:LiGaofeng,NKUturtle_teleop_key节点)和订阅者(subscriber,如turtlesim_node节点)之间的通信,发布者和订阅者必须发送和接收相同类型的消息。这意味着一个topic的类型是由发布到这个topic上的message的类型定义的。发布到topic上的message的类型可用rostopictype命令来决定。6.4.1用rostopictype该命令返回任意被发布的topic的message类型。rostopictype[topic]对于Hydro和之后的版本,运行命令:$rostopictype/turtle1/cmd_vel会返回如下信息:geometry_msgs/Twist我们可以用rosmsg命令查看一下这个message的详细信息:$rosmsgshowgeometry_msgs/Twist返回如下信息:geometry_msgs/Vector3linearfloat64xfloat64yfloat64zgeometry_msgs/Vector3angularfloat64xfloat64yfloat64z见下图:ROS官网学习资料整理15Version:1.0;Date:20140430;Author:LiGaofeng,NKU 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 上述数据,应该分别是绕x/y/z轴的线速度和角速度6.4.2用rostopicpub命令rostopicpub命令可以向一个topic上发布数据。命令 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 如下:rostopicpub[topic][msg_type][args]对于Hydro和其之后的版本,命令实例如下:$rostopicpub-1/turtle1/cmd_velgeometry_msgs/Twist--'[2.0,0.0,0.0]''[0.0,0.0,1.8]'命令解析:该命令向/turtle1/cmd_vel这个topic上发布了一个消息,这个消息的类型是geometry_msgs/Twist类型的(分别来表征小龟的线速度和角速度),这个消息的值为“[2.0,0.0,0.0][0.0,0.0,1.8]”。也就是说小龟在x轴(这个坐标系是固结在小龟身上的,以小龟向前的方向为x轴,垂直于小龟移动平面,从小龟腹部指向龟壳的方向为z轴,y轴方向以右手坐标系标准确定)方向速度为2.0,y方向线速度为0,z轴方向速度为0.绕x轴角速度为0,绕y轴角速度为0,绕z轴角
本文档为【ROS学习笔记:Beginner阶段】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
肥猫叫noah
暂无简介~
格式:pdf
大小:2MB
软件:PDF阅读器
页数:0
分类:高中语文
上传时间:2020-04-18
浏览量:0