您好,欢迎访问三七文档
第一节安装ROS1、ROS版本:KneticUbuntu版本:16.04LTS2、获取安装包sudosh-c'echodeb(lsb_release-sc)main/etc/apt/sources.list.d/ros-latest.list'3、设置钥匙sudoapt-keyadv--keyserverhkp://ha.pool.sks-keyservers.net:80--recv-key421C365BD9FF1F717815A3895523BAEEB01FA1164、确保系统最新sudoapt-getupdate5、安装Kinetic完整版sudoapt-getinstallros-kinetic-desktop-full6、初始化rosdepsudorosdepinitrosdepupdate7、设置环境,添加环境变量echosource/opt/ros/kinetic/setup.bash~/.bashrcsource~/.bashrc8、安装rosinstall工具sudoapt-getinstallpython-rosinstall9、启动ROSroscore第二节配置ROS环境1、查看是否配置了环境export|grepROS若配置成功,输出为:如果没成功,需要输入:source/opt/ros/kinetic/setup.bash在每次打开终端时你都需要先运行上面这条命令后才能运行ros相关的命令,为了避免这一繁琐过程,你可以事先在.bashrc文件(初学者请注意:该文件是在当前系统用户的home目录下。)中添加这条命令:echosource/opt/ros/kinetic/setup.bash~/.bashrcsource~/.bashrc2、创建ROS工作空间(1)创建一个catkin空间:mkdir–p~/catkin_ws/srccd~/catkin_ws/src(2)工作空间为空,在src目录中没有任何软件包,只有一个CMakeLists.txt文件,仍可以编译这个空间:cd~/catkin_wscatkin_makecatkin_make命令在catkin工作空间中是一个非常方便的工具。如果你查看一下当前目录应该能看到'build'和'devel'这两个文件夹。在'devel'文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层,想了解更多请参考catkin文档。接下来首先source一下新生成的setup.*sh文件:sourcedevel/setup.bash想保证工作空间已配置正确且ROS_PACKAGE_PATH环境变量包含了你的工作目录,查看命令:echo$ROS_PACKAGE_PATH显示结果:第三节ROS文件系统1、先安装ros-tutorials程序包:sudoapt-getinstallros-kinetic-ros-tutorials2、Packages:软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。Manifest(package.xml):清单,是对于'软件包'相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。程序代码分布在众多ROS软件包中,ROS提供了专门的命令工具简化操作。(1)rospack,允许你获取软件包的有关信息如返回软件包的路径信息:rospackfindroscpp(2)roscd,允许你直接切换工作目录到某个软件包或软件包集中。例如:roscdroscpp和ROS中的其他工具一样,roscd只能切换到哪些路径已经包含到ROS_PACKAGE_PATH环境变量中的软件包,查看是否包含:echo$ROS_PACKAGE_PATH在ROS_PACKAGE_PATH中添加更多路径:echoexportROS_PACKAGE_PATH=yourworkspace:$ROS_PACKAGE_PATH~/.bashrc(3)rosls,直接按软件包的名称使用ls命令,无须加入绝对路径。例如:roslsroscpp_tutorials(4)TAB键补全功能第四节创建ROS软件包1、一个catkin程序包应该符合:必须包含package.xml文件,提供有关程序包的元信息。必须包含CMakeLists.txt文件。每个目录下只能有一个程序包。2、在catkin工作空间里开发catkin程序包。(1)切换到catkin工作空间下得src目录:cd~/catkin_ws_src(2)使用catkin_create_pkg命令创建一个名为‘beginner_tutorials’的程序包,这个程序包依赖于std_msgs、roscpp和rospy。catkin_create_pkgbeginner_tutorialsstd_msgsrospyroscpp这样,就会在~/catkin_ws/src下创建一个beginner_tutorials的文件夹,里面包含一个package.xml文件和一个CMakeLists.txt文件。(3)使用rospackdepends1查看一级依赖包rospackdepends1beginner_tutorials这些依赖包随后保存在package.xml文件中。(4)使用rospackdepends查看间接依赖包。rospackdependsbeginner_tutorials第五节编译ROS程序包1、使用catkin_make编译beginner_tutorials程序包:cd~/catkin_wscatkin_make第六节理解ROS节点1、概念:Nodes:节点,一个节点就是一个可执行文件,可以通过ROS与其他节点通信。Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。Topics:话题,节点可以发布消息到话题上,也可以订阅话题以接收消息。Master:节点管理器。rosout:ROS中相当于stdout/stderr。roscore:主机+rosout+参数服务器。2、打开ROSroscore3、打开一个新终端,使用rosnode查看节点信息rosnodelist查看当前正在运行的节点rosnodeinfo/rosout查看更多关于rosout的信息。4、rosrun使用包名直接运行一个包内的节点,而不需要直到这个包的路径。rosrun[package_name][node_name]打开一个新的终端,运行turtlesim包中的turtlesim_node:rosrunturtlesimturtlesim_node5、再查看节点信息rosnodelist6、改变节点名称rosrunturtlesimturtlesim_node__name:=my_turtle7、测试my_turtle节点rosnodepingmy_turtle第七节理解ROS话题1、确保roscore已经在运行。2、在新终端运行turtlesimrosrunturtlesimturtlesim_node3、通过键盘远程控制turtle,在新终端运行:rosrunturtlesimturtle_teleop_key按下键盘上的方向键就可以控制turtle。4、turtlesim节点和turtle_teleop_key节点通过话题互相通信,turtle_teleop_key在一个话题上发布按键输入消息,turtlesim订阅该话题以接收该消息。通过rqt_graph显示当前运行的节点和话题。(1)安装rqt程序包sudoapt-getinstallros-kinetic-rqt-common-plugins(2)在一个新终端运行:rosrunrqt_graphrqt_graph可以看到,my_turtle节点和turtle_teleop_key节点通过一个名为/turtle1/cmd_vel的话题互相通信。5、rostopic介绍(1)查看rostopic子命令rostopic–h(2)rostopicecho可显示在某个话题上发布的数据rostopicecho/turtle1/cmd_vel移动turtle后才会显示出发布的数据。(3)再看一下rqt_graph可以看到rostopicecho现在也订阅了/turtle/cmd_vel话题。(4)rostopiclist列出所有当前订阅和发布的话题rostpoiclist–hrostopiclist–v显示有关发布和订阅的话题及其类型的详细信息6、ROS消息话题之间的通信是通过在节点之间发送ROS消息实现的,发布器(turtle_teleop_key)和订阅器(turtlesim_node)之间的通信必须使用相同类型的消息。话题的类型是由发布在它上面的消息的类型决定的。(1)rostopictype查看发布话题的消息类型rostopictype/turtle1/cmd_vel(2)rosmsgshow查看消息的详细情况rosmsgshowgeometry_msgs/Twist7、rostopicpub把数据发布到当前某个正在广播的话题上rostopicpub-1/turtle1/cmd_velgeometry_msgs/Twist--'[2.0,0.0,0.0]''[0.0,0.0,1.8]'此命令会发送一条消息给turtlesim,告诉它以2.0的线速度和1.8的角速度移动。解释:rostopicpub:将消息发布到某个给定的话题-1:(单个破折号)这个参数项是rostopic发布一条消息后马上退出/turtle1/cmd_vel:消息发布到的话题名称geometry_msgs/Twist:所发布消息的类型--:(双破折号)接下来的参数部分都不是命令选项8、rostopicpub–r发布一个稳定的命令流rostopicpub/turtle1/cmd_velgeometry_msgs/Twist-r1--'[2.0,0.0,0.0]''[0.0,0.0,1.8]'此时的rqt_graph中的图形为9、rqt_plot实时显示一个发布到某个话题上的数据变化图形。rosrunrqt_plotrqt_plot第八节理解ROS服务和参数1、服务是节点间通讯的另一种方式,服务允许节点发送请求并获得一个响应。2、rosservicelist输出可用服务的消息3、rosservicetype查看服务的类型rosservicetypeclearrosservicecallclear服务清除了turtlesim_node的背景上的轨迹4、rosservicetypespawn|rossrvshow这个服务使我们可以在给定位置和角度生成一只新乌龟,名字参数是可选的。如:rosservicecallspawn220.2“”第九节使用rqt_consloe和rqt_logger_level1、rqt_console属于ROS日志框架的一部分,用来显示节点的输出信息。rqt_logger_level允许我们修改节点运行时输出信息的日志等级。2、运行rqt_console和rqt_logger_levelrosrunrqt_consolerqt_consolerosrunrqt_logger_levelrqt_logger_level3、在新终端运行turtlesimrosrunturtlesimturtlesim_node
本文标题:ROS学习笔记
链接地址:https://www.777doc.com/doc-4174240 .html