Python 实现驱动AI机器人

 更新时间:2022年02月16日 17:04:43   作者:努力奋斗的K崽  
这篇文章主要介绍了Python 实现驱动AI机器人,下文围绕利用Python 实现驱动AI机器人的相关资料展开内容,需要的小伙伴可以参考一下

1.如果尚未启动WSL-ROS环境,请运行Windows“开始”菜单中的WSL-ROS快捷方式。这将打开一个终端应用程序和一个Ubuntu终端实例。我们将这个终端实例称为终端1。

在终端中输入以下命令,在一个空世界中启动TurtleBot3华夫饼的模拟:

[TERMINAL 1] $ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

一个露台模拟窗口应该打开,在里面你会看到一个TurtleBot3华夫饼干

2.在新终端实例中,输入以下命令:

 [TERMINAL 2] $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

总结:

到目前为止,您已经使用roslaunch命令启动了两个单独的ROS应用程序。roslaunch是启动ROS项目的一种方式。正如您应该从上述示例中观察到的,我们以以下方式使用此命令:

roslaunch{package name}{launch file}

该命令将两个参数作为输入:{package name}是包含我们想要执行的功能的ROS包的名称,{launch file}是该包中的一个文件,它确切地告诉ROS我们想要启动的包中的功能。

3.roscd是一个ROS命令,它允许我们导航到系统上安装的任何ROS包的目录,而无需我们事先知道该包的路径。

打开一个新的终端实例(terminal 3),并使用roscd命令导航到Linux文件系统上的turtlebot3_teleop包目录:

4.In TERMINAL 3 enter $ cd ~ to go back to your home directory

[TERMINAL 3] $ roscd turtlebot3_teleop
[TERMINAL 3] $ pwd
[TERMINAL 3] $ ls
[TERMINAL 3] $ ls -F
[TERMINAL 3] $ cat turtlebot3_teleop_key.launch

包的启动文件通常位于包目录中的启动文件夹中。您应该注意到上面ls命令的输出中有一个启动文件夹。
cd是一个Linux命令,允许我们更改终端当前所在的目录。用这个导航到turtlebot3_teleop package launch文件夹,然后再次使用ls查看其中的内容。在这个文件夹中,你会看到turtlebot3_teleop_钥匙。
cat是一个Linux命令,我们可以使用它在终端中显示文件的内容。

pkg:包含我们想要启动的功能的ROS包的名称。
type:我们希望在该包中执行的脚本(即ROS节点)的全名(包括文件扩展名,如果有)。
名称:我们想给ROS节点一个描述性名称,用于在ROS网络上注册。
输出:节点的任何输出将被打印的位置(输出将被打印到终端窗口的屏幕,或输出将被打印到日志文件的日志)。
ROS节点是执行特定机器人任务和操作的可执行程序,如我们在上述示例中看到的远程(或“远程操作”)控制。

5.使用以下命令查看哪些节点当前处于活动状态:

[TERMINAL 3] $ rosnode list

我们可以通过使用rqt_图形包中的rqt_图形节点来可视化活动节点之间的连接。我们可以使用rosrun直接启动此节点(您可能会收到一些错误消息,但不要担心):

[TERMINAL 3] $ rosrun rqt_graph rqt_graph

6.探索ROS主题和信息

通过使用rostopic ROS命令,我们可以了解关于/cmd_-vel主题的更多信息。

在新的终端实例(终端4)中,键入以下内容:

[TERMINAL 4] $ rostopic info /cmd_vel

内容的输出:

 Type: geometry_msgs/Twist

 Publishers:
  * /turtlebot3_teleop_keyboard (http://localhost:#####/)

 Subscribers:
  * /gazebo (http://localhost:#####/)
[TERMINAL 4] $ rosmsg info geometry_msgs/Twist

要完成此操作,请在仍在运行的任何进程(终端1、2和3)中输入Ctrl+C,关闭所有活动的终端进程。因此,相关的Gazebo和rqt_图形窗口也应关闭。

一两分钟后,您将用Python创建一些简单的发布者和订阅者节点,并在它们之间发送消息。正如我们之前了解到的,ROS应用程序应该包含在包中,因此我们需要创建一个包,以便开始创建我们自己的ROS节点。
ROS提供了一个工具来创建一个新的ROS包,并确保所有基本元素都存在:catkin_create_pkg
当我们创建和使用自己的ROS包时,在特定的文件系统位置工作非常重要,这样ROS就可以适当地访问和构建所有内容。这些空间被称为“Catkin工作空间”,其中一个已经在WSL-ROS环境中创建:称为Catkin_ws

#!/usr/bin/env python3
# A simple ROS publisher node in Python

import rospy
from std_msgs.msg import String

class Publisher():
    
    def __init__(self):
        self.node_name = "simple_publisher"
        topic_name = "chatter"

        self.pub = rospy.Publisher(topic_name, String, queue_size=10)
        rospy.init_node(self.node_name, anonymous=True)
        self.rate = rospy.Rate(10) # hz
                
        self.ctrl_c = False
        rospy.on_shutdown(self.shutdownhook) 
        
        rospy.loginfo(f"The '{self.node_name}' node is active...")

    def shutdownhook(self):
        print(f"Stopping the '{self.node_name}' node at: {rospy.get_time()}")
        self.ctrl_c = True

    def main_loop(self):
        while not self.ctrl_c:
            publisher_message = f"rospy time is: {rospy.get_time()}"
            self.pub.publish(publisher_message)
            self.rate.sleep()

if __name__ == '__main__':
    publisher_instance = Publisher()
    try:
        publisher_instance.main_loop()
    except rospy.ROSInterruptException:
        pass

到此这篇关于Python 实现驱动AI机器人的文章就介绍到这了,更多相关Python 驱动AI机器人内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pandas的DataFrame如何做交集,并集,差集与对称差集

    Pandas的DataFrame如何做交集,并集,差集与对称差集

    这篇文章主要介绍了Pandas的DataFrame如何做交集,并集,差集与对称差集,Python的数据类型集合由不同元素组成的集合,集合中是一组无序排列的可 Hash 的值,可以作为字典的Key,下面来看看文章的详细内容吧
    2022-01-01
  • Python调用Orator ORM进行数据库操作

    Python调用Orator ORM进行数据库操作

    Orator ORM 是一个功能丰富且灵活的 Python ORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的 API,下面我们就来看看它的具体使用吧
    2025-02-02
  • Python3中PyQt5简单实现文件打开及保存

    Python3中PyQt5简单实现文件打开及保存

    本文将结合实例代码,介绍Python3中PyQt5简单实现文件打开及保存,具有一定的参考价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • 使用 Python 的 pprint库格式化和输出列表和字典的方法

    使用 Python 的 pprint库格式化和输出列表和字典的方法

    pprint是"pretty-print"的缩写,使用 Python 的标准库 pprint 模块,以干净的格式输出和显示列表和字典等对象,这篇文章主要介绍了如何使用 Python 的 pprint库格式化和输出列表和字典,需要的朋友可以参考下
    2023-05-05
  • python+matplotlib演示电偶极子实例代码

    python+matplotlib演示电偶极子实例代码

    这篇文章主要介绍了python+matplotlib演示电偶极子实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 简单了解Django模板的使用

    简单了解Django模板的使用

    这篇文章主要介绍了简单了解Django模板的使用,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 基于Python绘制三种不同的中国结

    基于Python绘制三种不同的中国结

    马上就要迎来新年了,就绘制了几个中国结,嘿嘿!本文为大家整理了三个绘制中国结的方法,文中的示例代码讲解详细,快跟随小编一起动手尝试一下吧
    2023-01-01
  • Python中figure与axies绘图有哪些不同

    Python中figure与axies绘图有哪些不同

    这篇文章主要介绍了Python中figure与axies绘图有哪些不同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • 一条命令解决mac版本python IDLE不能输入中文问题

    一条命令解决mac版本python IDLE不能输入中文问题

    本文通过一条命令帮助大家解决mac版本python IDLE无法输入中文问题,需要的朋友可以参考下
    2018-05-05
  • python 管理系统实现mysql交互的示例代码

    python 管理系统实现mysql交互的示例代码

    这篇文章主要介绍了python 管理系统实现mysql交互,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论