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节点是执行特定机器人任务和操作的可执行程序,如我们在上述示例中看到的远程(或“远程操作”)控制。

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

[TERMINAL 3] $ rosnode list

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

[TERMINAL 3] $ rosrun rqt_graph rqt_graph

4.探索ROS主题和信息
通过使用rostopic ROS命令,我们可以了解关于/cmd_-vel主题的更多信息。
在新的终端实例(终端4)中,键入以下内容:

[TERMINAL 4] $ rostopic info /cmd_vel
This should provide an output similar to the following:

 Type: geometry_msgs/Twist

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

 Subscribers:
  * /gazebo (http://localhost:#####/)

This confirms what we discovered earlier about the publisher(s) and subscriber(s) to the /cmd_vel topic. In addition, this also tells us the topic type, or the type of message that is being published on this topic.

We can use the rosmsg ROS command to provide further information about this message, or any other message that we may be interested in:

[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

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一个 Python 客服机器人,你需要掌握以下技能和知识: 1. Python 编程语言基础知识和语法 2. 熟悉 HTTP 协议,能够使用 Python 的 requests 库进行 HTTP 请求和响应的处理 3. 掌握自然语言处理技术,能够使用 Python 的自然语言处理库,如 NLTK、spaCy 等 4. 熟悉机器学习算法和框架,如 TensorFlow、Keras、Scikit-learn 等,能够训练和部署机器学习模型 5. 熟悉聊天机器人的设计和实现原理,如基于规则的机器人、基于检索的机器人、基于生成模型的机器人等 6. 了解常见的客服机器人应用场景和需求,如智能客服、在线问答、聊天室机器人等 在掌握以上技能和知识的基础上,你可以按照以下步骤实现一个简单的 Python 客服机器人: 1. 收集和整理问题和答案,这些问题和答案可以是人工整理的,也可以通过爬虫从网络上收集和整理 2. 根据收集的问题和答案,设计和实现机器人的问答系统,可以采用基于规则的方法、基于检索的方法或基于生成模型的方法 3. 集成机器人的问答系统和用户界面,可以采用命令行界面或 Web 界面 4. 部署机器人到云端或本地服务器,使其可以进行远程访问 需要注意的是,实现一个高质量的客服机器人需要投入大量的时间和精力,需要不断地完善和优化机器人的问答系统和用户界面。同时,还需要考虑用户隐私保护、安全性、稳定性等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值