人形机器人场景应用全解析,2024睿抗 AI ROBOT创新挑战赛火热报名中!

news2025/1/21 15:29:31

 人工智能(AI)已成为推动科技革命和产业变革的关键力量。随着大模型等AIGC技术的迅猛发展,AI正深刻改变我们的生活并重新定义生产方式。越来越多人期望将AI技术从纯粹的思维和计算扩展到与物理世界的互动中,即发展具身智能。

    为了推广并深化具身智能的创新和应用,“睿抗机器人开发者大赛——AI ROBOT创新挑战赛”应用而生,大赛旨在激发全国高校学生的研究热情,探索AI与机器人技术的融合,展示尖端技术成果。

    这一平台不仅可以促进技术交流和学习,更可以通过竞赛提高中国大学生的科技实践能力,推动教育与产业的深度融合,为机器人产业注入新活力。

    本届睿抗机器人开发者大赛,特选用大象机器人公司的轮式人形机器人作为官方赛具。

    这款机器人以其创新的设计和卓越的性能,在全球范围内获得了广泛关注和认可。其轮式移动底盘结合双臂协作机械臂,赋予了其卓越的灵活性和运动能力,使其能够完成各种复杂的动作和任务。

图片

    通过本次大赛,参赛者有机会深入了解和应用机器人动作控制、视觉处理、大语言模型以及人机交互等前沿技术,这不仅能够提升他们的技术能力,也将推动机器人技术的创新发展。

技术亮点

AI ROBOT

  • 智能机器人双臂协同操作

  • 大模型赋能机器人实现人类语言指令识别和理解

  • 基于GPU的高阶渲染引擎,支持高保真传感器数据输出的物理仿真,实现机器人快速开发

  • 快速生成合成数据降低数据采集难度

竞赛任务

AI ROBOT

  • 任务1:机器人运动控制

    选手需要通过发布运动指令或运行控制代码实现对机器人的简单运动控制。

  • 任务2:Isaac Sim仿真

    Isaac Sim 是由 NVIDIA 开发的一个机器人模拟平台,主要用于机器人仿真和人工智能的训练。选手需要使用现场提供的模型文件进行机器人仿真。

  • 任务3:Replicator合成数据生成

    选手需要使用平台提供的待抓取数字资产文件在Isaac Sim中应用Replicator生成合成数据。

  • 任务4:地图构建

    选手需要在比赛现场环境中控制机器人运动采集数据、构建地图

  • 任务5:模型训练

    选手需要在TAO中利用Replicator生成的数据集进行模型训练

  • 任务6:场景实现

    选手需要与机器人通过语音交互、多轮对话,进行点餐,点餐完成后机器人前往茶水区执行对应任务,任务完成后,机器人把餐食送到办公区指定区域。

图片

核心技术解析

AI ROBOT

  • 对象检测与追踪

    应用场景:该部分主要使用了NVIDIA的TAO Toolkit进行对象检测模型的训练、评估、剪枝和重训练。示范了如何使用预训练的ResNet-18模型对KITTI数据集进行训练和评估。

  核心技术:包括深度学习模型训练、模型剪枝以提高效率、以及使用ONNX格式导出模型以便在不同平台上部署。

    Run TAO training

!tao model ssd train --gpus 1 --gpu_index $GPU_INDEX \
    -e $SPECS_DIR/ssd_train_resnet18_kitti.txt \
    -r $USER_EXPERIMENT_DIR/experiment_dir_unpruned \
    -m $USER_EXPERIMENT_DIR/pretrained_resnet18/pretrained_object_detection_vresnet18/resnet_18.hdf5  

   Evaluate trained models

!tao model ssd evaluate --gpu_index $GPU_INDEX \
    -e $SPECS_DIR/ssd_train_resnet18_kitti.txt \
    -m $USER_EXPERIMENT_DIR/experiment_dir_unpruned/weights/ssd_resnet18_epoch_$EPOCH.hdf5

    Prune trained models​​​​​​​

!tao model ssd prune --gpu_index $GPU_INDEX \
    -m $USER_EXPERIMENT_DIR/experiment_dir_unpruned/weights/ssd_resnet18_epoch_$EPOCH.hdf5 \
    -o $USER_EXPERIMENT_DIR/experiment_dir_pruned/ssd_resnet18_pruned.hdf5 \
    -eq intersection \
    -pth 0.1   

    Retrain pruned models​​​​​​​

!tao model ssd train --gpus 1 --gpu_index $GPU_INDEX \
    -e $SPECS_DIR/ssd_retrain_resnet18_kitti.txt \
    -r $USER_EXPERIMENT_DIR/experiment_dir_retrain \
    -m $USER_EXPERIMENT_DIR/experiment_dir_pruned/ssd_resnet18_pruned.hdf5  

    Evaluate retrained model​​​​​​​

!tao model ssd evaluate --gpu_index $GPU_INDEX \
    -e $SPECS_DIR/ssd_retrain_resnet18_kitti.txt \
    -m $USER_EXPERIMENT_DIR/experiment_dir_retrain/weights/ssd_resnet18_epoch_$EPOCH.hdf5

    Visualize inferences​​​​​​​

!tao model ssd inference --gpu_index $GPU_INDEX -i $DATA_DOWNLOAD_DIR/test_samples \
    -e $SPECS_DIR/ssd_retrain_resnet18_kitti.txt \
    -m $USER_EXPERIMENT_DIR/experiment_dir_retrain/weights/ssd_resnet18_epoch_$EPOCH.hdf5 \
    -r $USER_EXPERIMENT_DIR/

    Model Export​​​​​​​

!tao model ssd export --gpu_index $GPU_INDEX \
    -m $USER_EXPERIMENT_DIR/experiment_dir_retrain/weights/ssd_resnet18_epoch_$EPOCH.hdf5 \
    -o $USER_EXPERIMENT_DIR/export/ssd_resnet18_epoch_$EPOCH.onnx \
    -e $SPECS_DIR/ssd_retrain_resnet18_kitti.txt \
    --batch_size 16 \
    --gen_ds_config
  • 机械臂控制

    应用场景:该部分主要控制机械臂,从定位物体、抓取到物体的搬运。包括机械臂的坐标转换、夹爪的控制和关节角度的调整。

    核心技术:通过Python代码控制机械臂的动作,使用转换函数处理机器视觉系统与机械臂之间的坐标转换,以及实时反馈控制机械臂的精确位置。​​​​​​​

# 初始化一个MyCobot对象
mc = MyCobot(PI_PORT, PI_BAUD)

# 相机坐标(x,y,z)转换为机械臂目标点
cup_target = transform_point(cup_x,cup_y,cup_z)
# 打开夹爪
mc.set_gripper_state(0, 70)
time.sleep(2)
# 机械臂头部到达目标点
 mc.send_coords(cup_target, 30, 1)
time.sleep(1)
# 控制机械臂上抬避免打到物体
angle_datas = mc.get_angles()
print('angle_datas:',angle_datas)
mc.send_angle(Angle.J2.value,angle_datas[1]-5,20)
time.sleep(2)
# 机械臂头部再次到达目标点
mc.send_coords(cup_target, 30, 1)
time.sleep(3)
# 抓取
mc.set_gripper_state(1, 70)
time.sleep(3)
# 控制关节2运动,将物品拿起
angle_datas = mc.get_angles()
mc.send_angle(Angle.J2.value,angle_datas[1]-23,20)
time.sleep(2)
  • 语音识别

    应用场景:该部分是语音识别流程,从录音、保存音频文件到使用语音识别库(如SpeechRecognition)进行语音到文本的转换。

    核心技术:使用PyAudio进行音频的捕捉和处理,利用SpeechRecognition库进行本地语音识别。​​​​​​​

#语音录制
def record():
    p = pyaudio.PyAudio()

    stream = p.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)

    print("请点单...")
    frames = []
    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        frames.append(data)
    print("点单结束")
    stream.stop_stream()
    stream.close()
    p.terminate()
    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()
    
#语音识别
def detect_voice():
    r = sr.Recognizer()
    test = sr.AudioFile(WAVE_OUTPUT_FILENAME)
    with test as source:
        audio = r.record(source)
    return r.recognize_sphinx(audio, language='zh-cn')
  • 自动导航

    该部分主要实现了一个基于ROS(机器人操作系统)的自动导航系统,用于指导机器人在预设环境地图中自主移动到指定位置。以下是该代码实现的技术和场景概括:

    初始化和配置:代码中首先初始化了一个名为map_navigation的ROS节点,这是进行任何ROS通信前的必要步骤。

    设置了三个发布器,分别用于发送速度指令(/cmd_vel)、设置初始位置(/initialpose)和取消导航目标(/move_base/cancel)。

    导航到目标点:通过定义moveToGoal函数,代码实现了机器人到达特定目标位置的功能。这涉及到与move_base动作服务器的交互,该服务器负责处理路径规划和导航。

    动作客户端通过发送一个包含目标位置和姿态的MoveBaseGoal到move_base服务器,从而指示机器人移动到指定位置。

    目标位置的设定和导航执行:目标位置和姿态通过参数(xGoal, yGoal, orientation_z, orientation_w)传递给moveToGoal函数。

    机器人在收到目标位置后,动作客户端等待结果,判断是否成功到达目标。

    结果处理:根据动作客户端返回的状态,判断机器人是否成功到达目标位置,并进行相应的日志记录和反馈。​​​​​​​

import rospy
import actionlib
import sys
from geometry_msgs.msg import PoseWithCovarianceStamped
from move_base_msgs.msg import MoveBaseAction, MoveBaseGoal
from actionlib_msgs.msg import *
from actionlib_msgs.msg import GoalID
from geometry_msgs.msg import Point
from geometry_msgs.msg import Twist


class MapNavigation:
    def __init__(self):
        self.goalReached = None
        rospy.init_node('map_navigation', anonymous=False)  # 初始化 ROS 节点
        self.pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)  # 发布速度指令的发布器
        self.pub_setpose = rospy.Publisher('/initialpose', PoseWithCovarianceStamped, queue_size=10)  # 发布设置初始姿态的发布器
        self.pub_cancel = rospy.Publisher('/move_base/cancel', GoalID, queue_size=10)  # 发布取消目标的发布器

    # move_base
    def moveToGoal(self, xGoal, yGoal, orientation_z, orientation_w):       # 移动到目标点
        ac = actionlib.SimpleActionClient("move_base", MoveBaseAction)      # 创建动作客户端
        while (not ac.wait_for_server(rospy.Duration.from_sec(5.0))):
            sys.exit(0)

        goal = MoveBaseGoal()
        goal.target_pose.header.frame_id = "map"
        goal.target_pose.header.stamp = rospy.Time.now()
        goal.target_pose.pose.position = Point(xGoal, yGoal, 0)
        goal.target_pose.pose.orientation.x = 0.0
        goal.target_pose.pose.orientation.y = 0.0
        goal.target_pose.pose.orientation.z = orientation_z
        goal.target_pose.pose.orientation.w = orientation_w

        rospy.loginfo("Sending goal location ...")
        ac.send_goal(goal)                          # 发送目标位置

        ac.wait_for_result(rospy.Duration(600))             # 设置超时时间

        if (ac.get_state() == GoalStatus.SUCCEEDED):            # 判断是否成功到达目标
            rospy.loginfo("You have reached the destination")
            return True
        else:
            rospy.loginfo("The robot failed to reach the destination")
            return False


map_navigation = MapNavigation()  # 初始化导航
x_goal, y_goal, orientation_z, orientation_w = (0.0598191, -1.81509, 0.999547, 0.024365)  # 设置需要导航到达的点位
flag_feed_goalReached = map_navigation.moveToGoal(x_goal, y_goal, orientation_z, orientation_w)  # 开始导航,并返回是否到达目标点位
if flag_feed_goalReached:
    print("command completed")  # 成功到达目标定位
  • 二维码识别抓取

    这份代码主要展示了如何使用Python控制大象机器人的Mercury系列机械臂进行二维码识别和基于位置的物体操作。以下是该代码实现的技术和场景概括:

    硬件设置与初始化:代码首先初始化Mercury机械臂,设置其与计算机的通讯端口。

    同时设置和配置UVC相机,加载相机的校准参数(内参和畸变系数),这些参数用于后续图像处理和位置计算。

    图像捕捉与二维码识别:使用UVC相机捕捉实时图像帧。

    应用stag.detectMarkers方法识别图像中的二维码并获取其角点信息,这是二维码位置识别的关键步骤。

    二维码位置计算与机械臂定位:根据捕获的二维码角点及相机校准参数,计算二维码相对于相机的空间坐标。

    通过手眼标定技术(Eyes_in_hand_right方法),将二维码的相对坐标转换为机械臂基座坐标系中的位置。

    控制机械臂移动到计算出的二维码位置。

    交互执行:机械臂移动到二维码所在位置后,通过控制夹爪的开闭来实现物体的抓取操作。

from pymycobot import Mercury
from uvc_camera import UVCCamera
import stag
import numpy as np  # 导入需要的库

mr = Mercury("/dev/ttyACM2")  # 设置右臂端口号

mr.send_angles([92.78, -3.19, 0.0, -135.63, -112.56, 70.86, -49.26], 30)  # 将机械臂移至二维码区域
camera_params = np.load("src/camera_params.npz")  # 读取相机配置文件
mtx, dist = camera_params["mtx"], camera_params["dist"]  # 获取相机内参和畸变系数
camera = UVCCamera(4, mtx, dist)  # 设置相机id
camera.update_frame()  # 更新图像帧
frame = camera.color_frame()  # 获取彩色图像帧数据
(corners, ids, rejected_corners) = stag.detectMarkers(frame, 11)  # 根据图像,获取二维码角点
marker_pos_pack = calc_markers_base_position(corners, ids, 32, mtx,
                                             dist)  # 根据角点和相机内参、畸变系数,获取二维码相对于相机的坐标
cur_coords = np.array(mr.get_base_coords())  # 获取机械臂末端坐标
cur_bcl = cur_coords.copy()
cur_bcl[-3:] *= (np.pi / 180)  # 将机械臂末端旋转角度转为弧度
right_fact_bcl = Eyes_in_hand_right(cur_bcl, marker_pos_pack)  # 通过手眼标定获取二维码相对于基体的坐标

right_target_coords = cur_coords.copy()
right_target_coords[0] = right_fact_bcl[0]
right_target_coords[1] = right_fact_bcl[1]
right_target_coords[2] = right_fact_bcl[2]
mr.send_base_coords(right_target_coords, 30)  # 控制机械臂移动至二维码处

mr.set_gripper_value(0, 100)  # 闭合夹爪,抓取物品

报名参赛

AI ROBOT

  • 报名地址

    https://www.raicom.com.cn

    注:进入网站,成功注册之后在“赛事报名”中找到“AI ROBOT创新挑战赛”项目进行报名。

  • 参赛对象

    本科组:全日制高校在读学生(本科、研究生)

    高职组:全日制高校在读学生(高职)

  • 参赛要求

    1) 本赛项为团体赛,以院校为单位组队参赛,本科组、高组须为高校在籍学生和在职老师,不得跨校组队。

    2) 每个赛队由2-3名参赛学生(设队长1名)和1-2名指导老师。

    3)比赛过程中,参赛者需要在规定的时间内完成所选赛项的任务。这些任务可能包括机器人的设计、编程、调试以及实际运行等。

  • 参赛时间(省赛选拔赛)

    报名截止时间:2024年5月30日(最晚截止时间)

    区域赛选拔时间:2024年7月10日— 7月20日

    晋级公示:2024年7月25日(公示时间不少于 5 个工作日)

    注:各区域赛比赛时间和地点等安排以区域赛通知为准。

  • 咨询方式

图片

    随着科技的不断进步,我们相信通过此类竞赛的平台,能够有效促进科技与教育的深度融合,激发更多青年才俊在人工智能和机器人领域的探索热情。

    我们期待看到来自各地的优秀参赛者在本届大赛中展示出色的技术创新和解决方案,共同推动全球机器人技术向更高水平发展。让我们携手前行,共创智能科技的美好未来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1673812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络库-libcurl介绍

1.简介 libcurl 是一个功能强大的库,支持多种协议,用于数据传输。它广泛应用于实现网络操作,如HTTP、HTTPS、FTP、FTPS、SCP、SFTP等。libcurl 提供了丰富的 API,可以在多种编程语言中使用。 libcurl 主要特点 支持多种协议&am…

812寸硅片为什么没有平边(flat)?

知识星球(星球名:芯片制造与封测社区,星球号:63559049)里的学员问:上期种说2,4,6寸硅片都有平边,那为什么8&12寸硅片只有一个notch?为什么不能像小尺寸晶…

抖店商家选品误区,看你中了几条?

我是王路飞。 作为抖店的核心,选品的重要性自然不言而喻。 你跟达人沟通的重点是产品,与厂家沟通的重点也是产品,产品不行,一切都白搭。 然而很多新手商家刚开始做抖店的时候,总是选不到比较好的品。 今天给你们总…

「51媒体」邀请媒体参会报道和媒体发稿有啥不同

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体参会报道和媒体发稿是新闻报道的两种不同形式,它们的主要区别在于内容来源、报道方式和目的。 内容来源: 媒体参会报道:通常指的是记者或媒体代…

STM32:EXTI—外部中断的初始化

文章目录 1、中断1.2 中断系统1.3 中断执行流程 2、STM32中断2.2EXTI(外部中断)2.3 EXTI 的基本结构2.4 AFIO复用IO口 3、NVIC基本结构3.2 NVIC优先级分组 4、配置EXTI4.2 AFIO 库函数4.3 EXTI 库函数4.4 NVIC 库函数4.5 配置EXTI的步骤4.6 初始化EXTI 1…

工作中使用IDEA查看Stream变化

工作中使用IDEA查看stream变化 代码debug调试 代码 package com.demo;import java.util.stream.LongStream;public class LamdaDemo {public static void main(String[] args) {long[] dataResult LongStream.of(1,5,7,9).filter(data -> data > 10).map(data -> da…

答辩PPT设计太耗时?aippt工具,AI一站式服务

这些网站我愿称之为制作答辩PPT的神! 很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路,一窍不通。但这并不是你们的错,对于平时没接触过相关方面,第一次搞答辩PPT的人来说,这是很正常的一件事。一个好的答辩PPT…

无线领夹麦克风怎么挑选?无线麦克风怎么用?主流机型推荐必看

​在短视频与直播盛行的当下,一款优质的麦克风无疑是提升作品音质的得力助手,让你的创作更具质感。作为一名短视频博主,我在拍摄和直播的过程中也积累了不少使用麦克风的经验,深知哪些无线麦克风既好用又价格亲民。接下来&#xf…

【MinGW】MinGW-w64的安装及配置教程

目录 🌞1. MinGW简介 🌞2. MinGW安装详情 🌊2.1 资源包获取 🌊2.2 安装详情 🌞1. MinGW简介 MinGW (Minimalist GNU for Windows) 是一个在 Windows 平台上开发软件的开发工具集合。它提供一组用于编译 Windows 应…

Python自动化SQL注入和数据库取证工具库之sqlmap使用详解

概要 在网络安全领域,SQL注入仍然是最常见的攻击之一。sqlmap是一个开源的自动化SQL注入和数据库取证工具,它提供了广泛的功能来检测和利用SQL注入漏洞。本文将详细介绍sqlmap的安装、特性、基本与高级功能,并结合实际应用场景,展示其在网络安全测试中的应用。 安装 sqlm…

便签字号怎么改 便签字体大小调节方法

在日常工作和生活中,便签是我形影不离的助手。每当灵感闪现或是有待办事项时,我都会随手记录在便签上,它就像我生活中的记事本,帮助我安排生活和工作。 然而,每个人都有不同的视觉需求和阅读习惯,对于便签…

设计说明-行为型-状态模式-State

状态接口 public interface State {//状态接口void insertQuarter();//投币void ejectQuarter();//退币void turnCrank();//按下“出纸巾”按钮void dispense();//出纸巾 } 有纸巾类 public class HasQuarterState implements State {private TissueMachine tissueMachine;O…

【MySQL】sql表设计的注意事项

程序员的实用神器 文章目录 程序员的实用神器强烈推荐引言注意事项强烈推荐专栏集锦写在最后 强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能 推荐一个个人工作&#x…

文档加密软件大比拼:哪款更适合你

在数字时代的浪潮中,信息安全成为了每个人和企业都无法忽视的重要议题。文档加密软件作为保护数据安全的重要手段,其种类繁多,功能各异。本文将带您走进文档加密软件的世界,对比多款热门产品,助您找到最适合自己的加密…

代码随想录训练营Day 28|力扣216.组合总和III、17.电话号码的字母组合

1.组合总和3 题目链接/文章讲解: 代码随想录 视频讲解:和组合问题有啥区别?回溯算法如何剪枝?| LeetCode:216.组合总和III_哔哩哔哩_bilibili 代码:(这里剪枝的思路和昨天发的一样) class Solution { priv…

vue 运行项目node-scss报错

vue项目node版本与自己电脑node版本不一样运行node导致报错 node-sass模块对node版本有兼容性,版本不适配,就容易报错 解决方案: 在项目目录下打开cmd: 输入命令: npm rebuild node-sass 然后再更新一下:…

linux性能监控之free

free:linux系统自带命令,显示内存状态,命令查询来源于/proc/meminfo 文件 [rootk8s-master ~]# free --helpUsage:free [options]Options:-b, --bytes show output in bytes-k, --kilo show output in kilobytes-m, --mega…

macOS上使用qt creator编译调试ffmpeg.c

1 前言 上文macOS上将ffmpeg.c编译成Framework介绍了使用xocde将ffmpeg.c编译成Framework的方法,这里列举另外一种办法,就是用qt creator来完成这件事情。 编译环境如下: qt creator 9.0.2;ffmpeg release/6.1; 2 编译ffmpeg.c 大…

应用层(上篇)

应用层 应用层协议原理 网络应用程序体系解构 应用程序体系结构: 由应用程序研发者设计规定了如何在各种端系统上组织该应用程序。在选择应用程序体系结构时,应用程序研发者很可能利用现代网络应用程序中所使用的两种主流体系结构之一:客户-服务器体系结构或对等…

C语言例题41、八进制转换为十进制

#include<stdio.h>void main() {int x;printf("请输入一个8进制整数&#xff1a;");scanf("%o", &x);printf("转换成十进制后的整数为%d\n", x); }运行结果&#xff1a; 本章C语言经典例题合集&#xff1a;http://t.csdnimg.cn/FK0Qg…