本课程结束时,您将能够:
1.在模拟中,使用ROS控制TurtleBot3机器人。
2.使用roslaunch和rosrun启动ROS应用程序。
3.使用关键ROS命令行工具询问正在运行的ROS应用程序。
4.创建一个由多个节点组成的ROS包,并对这些节点(在Python中)进行编程,以便使用ROS通信方法彼此通信。
5.浏览Linux文件系统,学习如何在Linux终端中执行各种文件系统操作。
[TERMINAL 1] $ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
练习1:让机器人移动
[TERMINAL 2] $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
到目前为止,您已经使用roslaunch命令启动了两个单独的ROS应用程序。roslaunch是启动ROS项目的一种方式。正如您应该从上述示例中观察到的,我们以以下方式使用此命令:
roslaunch {package name} {launch file}
该命令将两个参数作为输入:{package name}是包含我们要执行的功能的ROS包的名称,{launch file}是该包中的一个文件,它确切地告诉ROS我们要在包中启动的功能
练习2:探索ROS包
roscd是一个ROS命令,它允许我们导航到系统上安装的任何ROS包的目录,而无需我们事先知道该包的路径。
[TERMINAL 3] $ roscd turtlebot3_teleop
[TERMINAL 3] $ pwd
[TERMINAL 3] $ ls
[TERMINAL 3] $ ls -F
[TERMINAL 3] $ cat turtlebot3_teleop_key.launch
pwd是一个Linux命令,它告诉我们终端当前在文件系统中的位置(即打印工作目录)。使用此选项确认终端提示告诉您的内容
我们现在知道turtlebot3_teleop软件包在我们的机器上的位置,然后我们可以使用更多的Linux命令来进一步探索这一点:
ls是一个Linux命令,它列出当前目录的内容。用它列出turtlebot3_teleop软件包目录的内容。这将简单地列出当前目录中的项目,但我们可以使用-F选项了解更多信息
cat是一个Linux命令,我们可以使用它在终端中显示文件的内容。使用此按钮可显示turtlebot3_teleop_键的内容。启动文件。
练习3:可视化ROS网络
在终端3中,输入$cd~ 返回主目录(请记住,~是主目录的别名)。
可以使用ROS命令rosnode查看ROS网络上当前处于活动状态的所有节点。
[TERMINAL 3] $ rosnode list
[TERMINAL 3] $ rosrun rqt_graph rqt_graph
我们可以通过使用rqt_图形包中的rqt_图形节点来可视化活动节点之间的连接。我们可以使用rosrun直接启动这个节点(您可能会收到一些错误消息,但不要担心它们)
练习4:探索ROS主题和信息
通过使用rostopic ROS命令,我们可以了解关于/cmd_-vel主题的更多信息。
[TERMINAL 4] $ rostopic info /cmd_vel
[TERMINAL 4] $ rosmsg info geometry_msgs/Twist
我们可以使用rosmsg ROS命令提供有关此消息或我们可能感兴趣的任何其他消息的进一步信息
练习5:创建自己的ROS包
一两分钟后,您将用Python创建一些简单的发布者和订阅者节点,并在它们之间发送消息。正如我们之前了解到的,ROS应用程序应该包含在包中,因此我们需要创建一个包,以便开始创建我们自己的ROS节点。
ROS提供了一个工具来创建一个新的ROS包,并确保所有基本元素都存在:catkin_create_pkg。
当我们创建和使用自己的ROS包时,在特定的文件系统位置工作非常重要,这样ROS就可以适当地访问和构建所有内容。这些空间被称为“Catkin工作空间”,其中一个已经在WSL-ROS环境中创建:称为Catkin_ws。
[TERMINAL 1] $ cd ~/catkin_ws/src
[TERMINAL 1] $ catkin_create_pkg pubsub std_msgs rospy
[TERMINAL 1] $ catkin build week1_pubsub
[TERMINAL 1] $ src
练习6:创建发布者节点
在pubsub包目录中,使用cd命令导航到src文件夹。
touch是一个Linux命令,我们可以使用它创建一个空文件。使用此选项创建名为publisher的空文件。py,我们将很快为其添加内容:
[TERMINAL 1] $ touch publisher.py
[TERMINAL 1] $ ls -lF
[TERMINAL 1] $ chmod +x publisher.py
[TERMINAL 1] $ roscore
我们现在可以使用rosrun命令来运行这个节点。然而,由于我们之前关闭了所有设备,ROS主机不再活动。首先,我们需要使用roscore手动重新启动它
[TERMINAL 2]$ rosrun publisher.py
[TERMINAL 3]$ rosrun publisher.py
[TERMINAL 3]$ rosrun week1_pubsub publisher.py
$rosnode list:这将提供系统上当前活动的所有节点的列表。验证发布服务器节点的名称在此列表中是否可见。
$rostopic list:这将提供系统上节点当前使用的主题列表。请验证我们的发布者将消息发布到的主题的名称是否在此列表中。
到目前为止,我们已经使用了rostopic ROS命令和另外两个参数:
list,为我们提供ROS系统上所有活跃主题的列表,以及
info,为我们提供有关某个感兴趣的特定主题的信息。
我们可以使用Linux终端的自动完成功能为我们提供一个列表,列出所有可用选项,我们可以使用rostopic命令。为此,您可以键入rostopic,后跟空格,然后按Tab键两次:
rostopic[SPACE][TAB][TAB]
rostopic hz{topic name}提供了有关向主题发布消息的频率(单位:hz)的信息:
这应该告诉我们,我们的发布者节点正在以(或接近)10 Hz的频率向/chatter主题发布消息,这正是我们在发布者中要求的。py文件(在我们的Publisher类的_init__;部分中)。按Ctrl+C停止此命令
rostopic echo{topic name}显示发布到某个主题的消息:这将为我们的出版商提供即时消息流。py节点正在发布到/chatter主题。按Ctrl+C停止此操作。
通过查看帮助文档,我们可以看到此命令的一些附加选项:
例如,从这里,我们可以了解到,如果我们只想让echo命令显示来自/chatter主题的一组消息,我们可以使用-n选项。例如,仅显示最近的两条消息
[TERMINAL 3] $ rostopic hz /chatter
[TERMINAL 3] $ rostopic echo /chatter
[TERMINAL 3] $ rostopic echo -h
[TERMINAL 3] $ rostopic echo /chatter -n2
练习7:创建订阅服务器节点
现在,您将创建另一个节点来订阅我们的发布者节点正在向其广播消息的主题,以访问主题消息中的信息。
练习8:创建启动文件
在终端1中,使用roscd导航到pubsub-package目录的根目录。
使用Linux mkdir命令在包根文件夹中创建一个名为launch的新目录:
[TERMINAL 1] $ roscd week1_pubsub
[TERMINAL 1] $ mkdir launch
收尾
在这节课中,我们了解了ROS中的一些关键概念,例如包;启动文件;节点和使用主题和消息的发布者-订阅者通信方法。
我们已经学会了如何使用一些关键的ROS命令:
roslaunch:通过启动文件启动多个ROS节点。
roscd:仅使用软件包名称导航到已安装的ROS软件包。
rosnode:显示有关活动ROS节点的信息。
rosrun:在ROS包中运行可执行文件。
rostopic:显示有关活动ROS主题的信息。
rosmsg:显示可在ROS应用程序中使用的所有ROS消息的信息。
roscore:启动ROS主机:ROS运行所需的基准节点和程序。
除此之外,我们还学习了如何使用catkin_create_pkg,这是一个用于创建ROS包模板的帮助脚本。
我们还学习了如何在Linux终端中工作,以及如何使用以下关键命令导航Linux文件系统:
pwd:打印当前工作目录的路径,以显示当前所在的目录。
ls:列出当前目录中的文件。
cd:更改目录以在文件系统中移动。
mkdir:创建一个新目录(mkdir{new_folder})。
cat:显示文件的内容。
chmod:修改文件权限(即为所有用户向文件添加执行权限:chmod+x{file})。
触摸:创建一个没有任何内容的文件。
最后,我们学习了如何在Python中创建基本的ROS节点,以便使用标准ROS消息发布和订阅ROS主题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)