首页 > 其他分享 >【机器人和人工智能——自主巡航赛项】动手实践篇

【机器人和人工智能——自主巡航赛项】动手实践篇

时间:2024-06-13 10:30:06浏览次数:24  
标签:move pose goal 人工智能 赛项 巡航 rospy import self

文章目录

任务信息

在这里插入图片描述
自动巡航功能
在这里插入图片描述

roslaunch启动

roslaunch 功能包 指定的launch文件

rosrun启动

rosrun 功能包 指定的.py / .cpp文件

手把手实现代码

初始代码

#!/usr/bin/env python

#coding: utf-8

import rospy
import math
import actionlib
import serial
import time
from std_msgs.msg import String
from actionlib_msgs.msg import *
from move_base_msgs.msg import MoveBaseAction, MoveBaseGoal
from nav_msgs.msg import Path
from geometry_msgs.msg import PoseWithCovarianceStamped
from tf_conversions import transformations
from math import pi
from std_msgs.msg import String
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os

class navigation_demo:
    def __init__(self):
        self.set_pose_pub = rospy.Publisher('/initialpose', PoseWithCovarianceStamped, queue_size=5)
        self.move_base = actionlib.SimpleActionClient("move_base", MoveBaseAction)
        self.move_base.wait_for_server(rospy.Duration(60))

    def set_pose(self, p):
        if self.move_base is None:
            return False

        x, y, th = p

        pose = PoseWithCovarianceStamped()
        pose.header.stamp = rospy.Time.now()
        pose.header.frame_id = 'map'
        pose.pose.pose.position.x = x
        pose.pose.pose.position.y = y
        q = transformations.quaternion_from_euler(0.0, 0.0, th/180.0*pi)
        pose.pose.pose.orientation.x = q[0]
        pose.pose.pose.orientation.y = q[1]
        pose.pose.pose.orientation.z = q[2]
        pose.pose.pose.orientation.w = q[3]

        self.set_pose_pub.publish(pose)
        return True

    def _done_cb(self, status, result):
        rospy.loginfo("navigation done! status:%d result:%s"%(status, result))

    def _active_cb(self):
        rospy.loginfo("[Navi] navigation has be actived")

    def _feedback_cb(self, feedback):
        msg = feedback
        #rospy.loginfo("[Navi] navigation feedback\r\n%s"%feedback)

    def goto(self, p):
        rospy.loginfo("[Navi] goto %s"%p)
        goal = MoveBaseGoal()

        goal.target_pose.header.frame_id = 'map'
        goal.target_pose.header.stamp = rospy.Time.now()
        goal.target_pose.pose.position.x = p[0]
        goal.target_pose.pose.position.y = p[1]
        q = transformations.quaternion_from_euler(0.0, 0.0, p[2]/180.0*pi)
        goal.target_pose.pose.orientation.x = q[0]
        goal.target_pose.pose.orientation.y = q[1]
        goal.target_pose.pose.orientation.z = q[2]
        goal.target_pose.pose.orientation.w = q[3]

        self.move_base.send_goal(goal, self._done_cb, self._active_cb, self._feedback_cb)
        result = self.move_base.wait_for_result(rospy.Duration(60))
        if not result:
            self.move_base.cancel_goal()
            rospy.loginfo("Timed out achieving goal")
        else:
            state = self.move_base.get_state()
            if state == GoalStatus.SUCCEEDED:
                rospy.loginfo("reach goal %s succeeded!"%p)
        return True

    def cancel(self):
        self.move_base.cancel_all_goals()
        return True
if __name__ == "__main__":
    rospy.init_node('navigation_demo',anonymous=True)
    goalListX = rospy.get_param('~goalListX', '2.0, 2.0,2.0')
    goalListY = rospy.get_param('~goalListY', '2.0, 4.0,2.0')
    goalListYaw = rospy.get_param('~goalListYaw', '0, 90.0,2.0')

    goals = [[float(x), float(y), float(yaw)] for (x, y, yaw) in zip(goalListX.split(","),goalListY.split(","),goalListYaw.split(","))]
    print ('Please 1 to continue: ')
    input = raw_input()
    r = rospy.Rate(1)
    r.sleep()
    navi = navigation_demo()
    navi.goto(goals[0])
    rospy.sleep(5)
    navi.goto(goals[2])
    rospy.sleep(5)
    while not rospy.is_shutdown():
          r.sleep()

添加二维码识别

修改防报错
在这里插入图片描述

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

添加全局变量id,订阅者,ar_cb函数
在这里插入图片描述

添加图像数字识别

添加库文件
在这里插入图片描述

添加全局变量find_id,订阅者,find_id识别函数
在这里插入图片描述

添加语音播报

指定音乐路径,要根据自己情况修改
在这里插入图片描述
执行指令后进行语音播报
在这里插入图片描述

添加小车行驶路径

添加区域一的if语句,其余区域也一样。
在这里插入图片描述

手动对图片分类
在这里插入图片描述

讲解视频

万创鑫诚.实践功能融合

其余篇章

1.【机器人和人工智能——自主巡航赛项】基础篇
2.【机器人和人工智能——自主巡航赛项】进阶篇

标签:move,pose,goal,人工智能,赛项,巡航,rospy,import,self
From: https://blog.csdn.net/2201_75475240/article/details/139552583

相关文章

  • 人工智能应用-知识问答
    文章目录垂直领域知识问答的特点知识问答的实现方案知识库+文本匹配(传统方案)直接生成(基于LLM的方案)RAG(基于LLM的方案)基于知识体系(基于LLM的方案)各类方案对比垂直领域知识问答的特点1、问答内容通常不存在通用语料2、回答内容对准确率要求较高,召回率要求相对较低。......
  • 人工智能的历史、现状与未来展望
    一、引言人工智能(AI)作为当今科技领域的热门话题,已经深入到了我们生活的方方面面。从智能家居到自动驾驶,从医疗诊断到金融分析,AI的应用正在不断拓展。本文将带您回顾人工智能的历史,分析当前的发展现状,并展望未来的发展趋势。二、人工智能的历史起源与早期发展人工智能的概念......
  • Apple Intelligence 带来的十大影响:人工智能的iPhone时刻到来
    引言在最近的WWDC大会上,Apple发布了全新的AppleIntelligence,引起了全球的广泛关注。这次发布被誉为“人工智能的iPhone时刻”,标志着我们每个人都将拥有第一个AI助理,并将引领AIAgent进入红海时代。本文将详细分析AppleIntelligence的十大影响,探讨其如何改变我们的生活和......
  • [Day 8] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
    智能合約與去中心化應用智能合約(SmartContracts)是一種基於區塊鏈技術的程式碼,旨在自動執行、驗證或執行合約的內容或執行條款。透過智能合約,合約中的各方可以在無需第三方信任的情況下進行交易,實現自動化、透明化和不可逆轉的交易。1.智能合約基礎智能合約的基礎是在區塊......
  • 人工智能——机器学习——神经网络(深度学习)
    一.人工智能:人工智能是让机器获得像人类一样具有思考和推理机制的智能技术,这一概念最早出现在1956年召开的达特茅斯会议上。其中深度学习可以理解为神经网络。刚开始只有神经网络的概念,随着神经网络的层数增加,就逐渐将神经网络叫做深度学习。神经网络发展简史:神经网络的......
  • 【权威发布】2024年人工智能与机械设计国际会议(ICAIMD 2024)
    2024年人工智能与机械设计国际会议2024InternationalConferenceonArtificialIntelligenceandMechanicalDesign会议简介        2024年人工智能与机械设计国际会议是一个专注于探讨人工智能与机械设计交叉领域最新发展的国际盛会。本次会议汇集了全球顶尖......
  • 机器学习课程设计,人工智能课程设计,深度学习课程设计--基于Transformer的家庭暴力情绪
    文章目录摘要第一章背景与意义1.1背景1.1.1家庭暴力发展现状1.1.2家庭暴力的危害1.2意义与目的第二章关键技术与方法2.1文本模态特征提取法2.2视频模态特征提取法2.3音频模态特征提取法2.4注意力机制(Attention)2.5多头注意力机制(Multi-Attention)2.6Transfor......
  • 2024年高考作文考人工智能,人工智能写作文能否得高分
    前言众所周知,今年全国一卷考的是人工智能,那么,我们来测试一下,国内几家厉害的人工智能他们的作答情况,以及能取得多少高分呢。由于篇幅有限,我这里只测试一个高考真题,我们这里用百度的文心一言和科大讯飞的讯飞大模型,本测试结果仅供参考,无评价好坏之分。2024高考作文1.1全国甲......
  • 人工智能ChatGPT的多种应用:如何更好地提问
    简介ChatGPT的主要优点之一是它能够理解和响应自然语言输入。在日常生活中,沟通本来就是很重要的一门课程,沟通的过程中表达的越清晰,给到的信息越多,那么沟通就越顺畅。和ChatGPT沟通也是同样的道理,如果想要ChatGPT给到的信息越准确,越清晰,和它的沟通就至关重要。如何能和Cha......
  • 人工智能:前世探索与今生辉煌
    今年3月份发生了一件可入选年度新闻的大事——计算机程序“AlphaGo”在五番棋中战胜了世界围棋冠军、职业九段选手李世石。整个比赛跌宕起伏,引人注目。起初人们几乎一边倒地预测AlphaGo会大比分败给李世石,但最终李世石却1∶4不敌AlphaGo,这就如同在平静水面丢进巨石,掀起了人工......