ROS学习笔记.docx
- 文档编号:5929801
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:13
- 大小:1.41MB
ROS学习笔记.docx
《ROS学习笔记.docx》由会员分享,可在线阅读,更多相关《ROS学习笔记.docx(13页珍藏版)》请在冰点文库上搜索。
第一节安装ROS
1、ROS版本:
Knetic Ubuntu版本:
16.04LTS
2、获取安装包
sudosh-c'echo"debhttp:
//packages.ros.org/ros/ubuntu$(lsb_release-sc)main">/etc/apt/sources.list.d/ros-latest.list'
3、设置钥匙
sudoapt-keyadv--keyserverhkp:
//ha.pool.sks-:
80--recv-key421C365BD9FF1F717815A3895523BAEEB01FA116
4、确保系统最新
sudoapt-getupdate
5、安装Kinetic完整版
sudoapt-getinstallros-kinetic-desktop-full
6、初始化rosdep
sudorosdepinit
rosdepupdate
7、设置环境,添加环境变量
echo"source/opt/ros/kinetic/setup.bash">>~/.bashrc
source~/.bashrc
8、安装rosinstall工具
sudoapt-getinstallpython-rosinstall
9、启动ROS
roscore
第二节配置ROS环境
1、查看是否配置了环境
export|grepROS
若配置成功,输出为:
如果没成功,需要输入:
source/opt/ros/kinetic/setup.bash
在每次打开终端时你都需要先运行上面这条命令后才能运行ros相关的命令,为了避免这一繁琐过程,你可以事先在.bashrc文件(初学者请注意:
该文件是在当前系统用户的home目录下。
)中添加这条命令:
echo"source/opt/ros/kinetic/setup.bash">>~/.bashrc
source~/.bashrc
2、创建ROS工作空间
(1)创建一个catkin空间:
mkdir–p~/catkin_ws/src
cd~/catkin_ws/src
(2)工作空间为空,在src目录中没有任何软件包,只有一个CMakeLists.txt文件,仍可以编译这个空间:
cd~/catkin_ws
catkin_make
catkin_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-tutorials
2、
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中添加更多路径:
echo"exportROS_PACKAGE_PATH"=
"$ROS_PACKAGE_PATH">>~/.bashrc
(3)rosls,直接按软件包的名称使用ls命令,无须加入绝对路径。
例如:
roslsroscpp_tutorials
(4)TAB键补全功能
第四节创建ROS软件包
1、一个catkin程序包应该符合:
l必须包含package.xml文件,提供有关程序包的元信息。
l必须包含CMakeLists.txt文件。
l每个目录下只能有一个程序包。
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_ws
catkin_make
第六节理解ROS节点
1、概念:
lNodes:
节点,一个节点就是一个可执行文件,可以通过ROS与其他节点通信。
lMessages:
消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
lTopics:
话题,节点可以发布消息到话题上,也可以订阅话题以接收消息。
lMaster:
节点管理器。
lrosout:
ROS中相当于stdout/stderr。
lroscore:
主机+rosout+参数服务器。
2、打开ROS
roscore
3、打开一个新终端,使用rosnode查看节点信息
rosnodelist
查看当前正在运行的节点
rosnodeinfo/rosout
查看更多关于rosout的信息。
4、rosrun使用包名直接运行一个包内的节点,而不需要直到这个包的路径。
rosrun[package_name][node_name]
打开一个新的终端,运行turtlesim包中的turtlesim_node:
rosrunturtlesimturtlesim_node
5、再查看节点信息
rosnodelist
6、改变节点名称
rosrunturtlesimturtlesim_node__name:
=my_turtle
7、测试my_turtle节点
rosnodepingmy_turtle
第七节理解ROS话题
1、确保roscore已经在运行。
2、在新终端运行turtlesim
rosrunturtlesimturtlesim_node
3、通过键盘远程控制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–h
rostopiclist–v显示有关发布和订阅的话题及其类型的详细信息
6、ROS消息
话题之间的通信是通过在节点之间发送ROS消息实现的,发布器(turtle_teleop_key)和订阅器(turtlesim_node)之间的通信必须使用相同类型的消息。
话题的类型是由发布在它上面的消息的类型决定的。
(1)rostopictype查看发布话题的消息类型
rostopictype/turtle1/cmd_vel
(2)rosmsgshow查看消息的详细情况
rosmsgshowgeometry_msgs/Twist
7、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查看服务的类型
rosservicetypeclear
rosservicecallclear
服务清除了turtlesim_node的背景上的轨迹
4、rosservicetypespawn|rossrvshow
这个服务使我们可以在给定位置和角度生成一只新乌龟,名字参数是可选的。
如:
rosservicecallspawn220.2“”
第九节使用rqt_consloe和rqt_logger_level
1、rqt_console属于ROS日志框架的一部分,用来显示节点的输出信息。
rqt_logger_level允许我们修改节点运行时输出信息的日志等级。
2、运行rqt_console和rqt_logger_level
rosrunrqt_consolerqt_console
rosrunrqt_logger_levelrqt_logger_level
3、在新终端运行turtlesim
rosrunturtlesimturtlesim_node
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ROS 学习 笔记