一文搞懂!人形机器人与人工智能研究平台的核心要素有哪些?

近日,随着OpenAI发布的新一代AI模型GPT-4o,人工智能领域再次迎来突破。GPT-4o以其强大的音频、视觉和文本推理能力,展示了人工智能技术的最新成果和未来的无限可能。
Open AI作为人工智能领域的领头羊,近年来为整个行业的突飞猛进做出了巨大贡献。而人工智能技术的日新月异,无疑为人形机器人的实际应用提供了前所未有的助推力。
图片
人形机器人,在工业制造、商用服务、家庭陪伴等多个领域都具有巨大应用潜力。得益于人工智能技术的深度融入,人形机器人在语音识别、图像识别、自然语言处理等方面均取得了长足的进步。这不仅使得它们在与人类的交互中显得更为自然、顺畅,更极大地丰富了用户体验。同时,随着人工智能技术的不断完善和创新,人形机器人在执行任务时的自主性和智能化程度也在持续攀升,其商业应用前景和具体落地场景较之前更为明朗、广泛。
过去的两年中,人工智能技术经历了飞速的更新与迭代,其发展速度之快,令人震惊。同时,人工智能与人形机器人的结合研究也逐渐成为行业最为关注的焦点之一。
▍超强硬件加持,打造多场景应用全能利器
在此背景下,大象机器人推出人形机器人水星Mercury X1。该产品凭借其出色产品可靠性、高性价比,以及强大批量交付能力等众多优势,迅速成为众多高校和科研院所在进行人形机器人与人工智能结合研究时的首选平台。
水星Mercury X1的工业设计源自瑞典顶级团队,不仅外观精美,更集成了七大核心算法,支持教育、科研、服务、商用、轻工业等五大应用场景。其高度灵活性和多功能性使得它能够轻松应对教育、科研、服务、商用、轻工业等五大应用场景
图片
在硬件支撑方面,水星Mercury X1由水星Mercury B1和高性能移动底座组合而成,拥有19个自由度,并配备英伟达Jetson Xavier和Jetson Nano双主控,以及上半身四个独立副控和下半身一个独立副控,确保精准控制每一个动作。
其移动底座装备了高性能激光雷达、超声波传感器和2D视觉系统,可提供全方位的感知能力。直驱电机的驱动模式使其最大运行速度达到1.2m/s,最大爬坡角度可达15度,而整机续航力更是高达8小时,可充分满足个人及商业应用需求。
在精密运动控制方面,水星Mercury X1搭载了大象机器人自研的力源系列谐波模组,该模组采用全新模块化设计,并标配电磁制动刹车、中空走线,具有高精度、高惯量、低自重等特点。其最大输出扭矩可达80Nm,配合最高可选配的19位分辨率的多圈绝对值编码器,可实现0.6弧分的重复定位精度。同时,机械臂外壳采用铝合金与碳纤维材质,进一步减轻了整机重量,提升了动力性能。
图片
在智能导航方面,水星Mercury X1采用了先进RTABMAP 3D与2D配合的SLAM导航技术,具有高效而精准的移动能力。其单目视觉系统支持多样化的智能识别功能,例如颜色和形状识别,这使得机械臂能够迅速而准确地应对各类任务,具备出色灵活性和高效率。而双目视觉系统则能实现室内3D视觉重建,为智能导航和环境理解提供有力支撑。通过激光雷达感知平面环境,并运用3D摄像头实时构建地图,水星Mercury X1可实现定位,实现智能导航、避障等操作。
在计算算力方面,水星Mercury X1选用了英伟达Jetson Xavier边缘计算核心作为主控模组。该模组高达21TOPS的AI性能为处理视觉测距、传感器数据融合、定位和地图构建、障碍物检测以及路径规划等复杂算法提供了强大的算力支持。这一技术的引入不仅确保了机器人的高效运行,还为具身智能领域的进一步开发和应用开辟了广阔的空间。
▍核心技术助力,赋能实际场景落地化应用
在超强硬件加持下,水星Mercury X1在双臂协同操作、大模型赋能的语言指令识别和理解、GPU高阶渲染引擎与VR遥操作以及快速生成合成数据等多个方面展现出卓越性能。
技术亮点
1.智能机器人双臂协同操作
水星Mercury X1采用了先进的双臂同步协同算法,这一算法使得机器人的双臂能够像人类的双手一样灵活协作。通过精确的传感器数据和高速的计算处理,机器人的双臂可以实现高度同步的动作,提升操作效率。为了避免双臂在操作过程中的相互干扰,水星Mercury X1还配备了自干涉检测系统。该系统能够实时监测双臂的位置和姿态,确保它们在执行任务时不会发生碰撞或干扰。同时,双臂之间的配合算法也使得机器人在执行复杂任务时更加得心应手。
图片
图片
2.大模型赋能的语言指令识别和理解
水星Mercury X1通过集成语音识别技术和GPT模型,实现了对用户语音指令的准确识别和理解。用户只需说出简单的指令,机器人就能够快速解析并生成相应的Blockly代码,从而执行复杂的操作。为了进一步降低编程门槛水星Mercury X1还支持通过自然语言描述程序功能来一键生成Blockly积木块。这一功能使得用户无需具备专业的编程知识,也能轻松构建复杂的程序逻辑。
图片
3. GPU高阶渲染引擎与VR遥操作
为了确保VR遥操作的实时性和流畅性,水星Mercury X1采用了GPU高阶渲染引擎,并利用NVIDIA Xavier平台的Accelerated GStreamer插件实现了GPU加速的视频编解码。这一技术创新大大提高了视频流的传输效率和渲染速度。通过结合高阶渲染引擎和VR技术,水星Mercury X1还可为用户提供沉浸式遥操作体验。用户可以在虚拟环境中直观地看到机器人的操作过程,并进行实时的控制和调整。
图片
3.快速生成合成数据
为了满足机器学习和模型训练对大量数据的需求,水星Mercury X1支持快速生成合成数据。这一功能不仅降低了真实数据采集的难度和成本,还为研究和开发人员提供了更丰富、更灵活的数据来源。通过先进的算法和模拟技术,水星Mercury X1能够快速生成具有高度真实感的合成数据。这些数据可以用于训练和优化各种机器学习模型,从而提高机器人的感知、决策和执行能力。
这些技术亮点不仅赋予了水星Mercury X1强大的功能支持,更为其在各种实际应用场景中的卓越表现打下了坚实基础。在核心技术优势加持下,水星Mercury X1在实际应用中展现出显著竞争优势。
核心技术解析
图片
通过以上的实际应用场景视频可以清晰地看到,整个区域被巧妙地划分为“售前”和“售后”两大板块,两者之间设有一个专为机器人通行的通道。在“售前”区域内,设有零食吧台和咖啡制作吧台,而“售后”区域则布置了两张桌子。在执行搬运零食和制作咖啡的任务时,水星Mercury X1展现出了卓越的环境识别能力。它首先准确地分辨出零食吧台和咖啡制作吧台,然后迅速移动至零食吧台。通过精准的视觉识别,机器人选择出所需的物品,双臂协同工作,灵活地夹取物品并放入物料筐。
接着,它轻巧地绕至“售后”区域的入口处,将物品稳稳地搬运到桌面上。完成任务后,水星Mercury X1又自主地返回到咖啡制作吧台,在双臂的协同操作下,选择合适的角度夹取杯子并熟练地制作咖啡。咖啡制作完成,机器人平稳地移动到“售后”区域,将咖啡准确地送达至指定的桌号。整个过程中,水星Mercury X1的操作流畅、精准,充分展示了其高效的工作能力和智能化的特点。
1、对象检测与追踪
应用场景:该部分主要使用了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 trainedmodels
!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
2、机械臂控制
应用场景:该部分主要控制机械臂,从定位物体、抓取到物体的搬运。包括机械臂的坐标转换、夹爪的控制和关节角度的调整。
核心技术:通过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)
3、语音识别
应用场景:该部分是语音识别流程,从录音、保存音频文件到使用语音识别库(如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')
4、自动导航
该部分主要实现了一个基于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("commandcompleted")#成功到达目标定位
5、二维码识别抓取
这份代码主要展示了如何使用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)#闭合夹爪,抓取物品
▍A级赛事指定,成为官方赛具实力获认可
值得注意的是,得益于以上种种显著优势,大象机器人的水星Mercury X1不仅获得了业界的广泛认可,更被国家A级机器人赛事“睿抗机器人开发者大赛——AI ROBOT创新挑战赛”选为官方推荐品牌。这一荣誉充分体现了大象机器人水星Mercury X1的产品成熟度和其在智能机器人技术领域的领先地位和。
图片
借助水星Mercury X1,参赛选手们将完成一系列竞赛任务,包括机器人运动控制、Isaac Sim仿真、Replicator合成数据生成、地图构建、模型训练以及实际场景应用等。
竞赛任务
任务1:机器人运动控制
选手需要通过发布运动指令或运行控制代码实现对机器人的简单运动控制。
任务2:Isaac Sim仿真
Isaac Sim 是由 NVIDIA 开发的一个机器人模拟平台,主要用于机器人仿真和人工智能的训练。选手需要使用现场提供的模型文件进行机器人仿真。
任务3:Replicator合成数据生成
选手需要使用平台提供的待抓取数字资产文件在Isaac Sim中应用Replicator生成合成数据。
图片
任务4:地图构建
选手需要在比赛现场环境中控制机器人运动采集数据、构建地图
任务5:模型训练
选手需要在TAO中利用Replicator生成的数据集进行模型训练
任务6:场景实现
选手需要与机器人通过语音交互、多轮对话,进行点餐,点餐完成后机器人前往茶水区执行对应任务,任务完成后,机器人把餐食送到办公区指定区域。
这些任务不仅考验了选手们的技术水平,也充分展示了水星Mercury X1在机器人技术领域的全面性和先进性。
▍关于大象机器人
由英、美、澳等海外学成归来的爱国人士共同创立大象机器人,自成立便奠定了其国际化视野与自主研发创新基础,获得深创投、真格等一线基金投资。通过与墨尔本大学、俄罗斯国立核能研究大学、华南理工大学等高校建立联合实验室突破关键技术难题,大象机器人致力于将先进机器人技术引入国内,帮助整体供应链国产替代。
在雄厚资本支持下,大象机器人经过多年的研发与实践已成功研发出一系列协作机器人解决方案,覆盖从教育领域到专业级别的全方位应用。这些解决方案在市场上广受好评,赢得了众多顶尖机构的青睐与赞誉,并为各行各业带来了显著的便利与效益。
自创立至今,大象机器人八年来始终致力于推动机器人行业的持续发展,并为此贡献了自己的力量。随着大象机器人对前沿科技领域的不断探索以及对先进机器人产品的持续开发,相信在未来大象机器人将继续引领机器人技术的创新潮流,推动生产方式与教育模式的未来变革,为人类社会的进步作出更加卓越的贡献。