人工智能(AI)已成為推動科技革命和產(chǎn)業(yè)變革的關(guān)鍵力量。隨著大模型等AIGC技術(shù)的迅猛發(fā)展,AI正深刻改變我們的生活并重新定義生產(chǎn)方式。越來越多人期望將AI技術(shù)從純粹的思維和計算擴展到與物理世界的互動中,即發(fā)展具身智能。
為了推廣并深化具身智能的創(chuàng)新和應(yīng)用,“???a target="_blank">機器人開發(fā)者大賽——AI ROBOT創(chuàng)新挑戰(zhàn)賽”應(yīng)用而生,大賽旨在激發(fā)全國高校學生的研究熱情,探索AI與機器人技術(shù)的融合,展示尖端技術(shù)成果。
這一平臺不僅可以促進技術(shù)交流和學習,更可以通過競賽提高中國大學生的科技實踐能力,推動教育與產(chǎn)業(yè)的深度融合,為機器人產(chǎn)業(yè)注入新活力。
本屆睿抗機器人開發(fā)者大賽,特選用大象機器人公司的輪式人形機器人作為官方賽具。
這款機器人以其創(chuàng)新的設(shè)計和卓越的性能,在全球范圍內(nèi)獲得了廣泛關(guān)注和認可。其輪式移動底盤結(jié)合雙臂協(xié)作機械臂,賦予了其卓越的靈活性和運動能力,使其能夠完成各種復(fù)雜的動作和任務(wù)。
通過本次大賽,參賽者有機會深入了解和應(yīng)用機器人動作控制、視覺處理、大語言模型以及人機交互等前沿技術(shù),這不僅能夠提升他們的技術(shù)能力,也將推動機器人技術(shù)的創(chuàng)新發(fā)展。
技術(shù)亮點
AI ROBOT
智能機器人雙臂協(xié)同操作
大模型賦能機器人實現(xiàn)人類語言指令識別和理解
基于GPU的高階渲染引擎,支持高保真傳感器數(shù)據(jù)輸出的物理仿真,實現(xiàn)機器人快速開發(fā)
快速生成合成數(shù)據(jù)降低數(shù)據(jù)采集難度
競賽任務(wù)
AI ROBOT
任務(wù)1:機器人運動控制
選手需要通過發(fā)布運動指令或運行控制代碼實現(xiàn)對機器人的簡單運動控制。
Isaac Sim 是由 NVIDIA 開發(fā)的一個機器人模擬平臺,主要用于機器人仿真和人工智能的訓練。選手需要使用現(xiàn)場提供的模型文件進行機器人仿真。
任務(wù)3:Replicator合成數(shù)據(jù)生成
選手需要使用平臺提供的待抓取數(shù)字資產(chǎn)文件在Isaac Sim中應(yīng)用Replicator生成合成數(shù)據(jù)。
任務(wù)4:地圖構(gòu)建
選手需要在比賽現(xiàn)場環(huán)境中控制機器人運動采集數(shù)據(jù)、構(gòu)建地圖
任務(wù)5:模型訓練
選手需要在TAO中利用Replicator生成的數(shù)據(jù)集進行模型訓練
任務(wù)6:場景實現(xiàn)
選手需要與機器人通過語音交互、多輪對話,進行點餐,點餐完成后機器人前往茶水區(qū)執(zhí)行對應(yīng)任務(wù),任務(wù)完成后,機器人把餐食送到辦公區(qū)指定區(qū)域。
核心技術(shù)解析
AI ROBOT
對象檢測與追蹤
應(yīng)用場景:該部分主要使用了NVIDIA的TAO Toolkit進行對象檢測模型的訓練、評估、剪枝和重訓練。示范了如何使用預(yù)訓練的ResNet-18模型對KITTI數(shù)據(jù)集進行訓練和評估。
核心技術(shù):包括深度學習模型訓練、模型剪枝以提高效率、以及使用ONNX格式導(dǎo)出模型以便在不同平臺上部署。
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
機械臂控制
應(yīng)用場景:該部分主要控制機械臂,從定位物體、抓取到物體的搬運。包括機械臂的坐標轉(zhuǎn)換、夾爪的控制和關(guān)節(jié)角度的調(diào)整。
核心技術(shù):通過Python代碼控制機械臂的動作,使用轉(zhuǎn)換函數(shù)處理機器視覺系統(tǒng)與機械臂之間的坐標轉(zhuǎn)換,以及實時反饋控制機械臂的精確位置。???????
# 初始化一個MyCobot對象 mc = MyCobot(PI_PORT, PI_BAUD) # 相機坐標(x,y,z)轉(zhuǎn)換為機械臂目標點 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) # 控制關(guān)節(jié)2運動,將物品拿起 angle_datas = mc.get_angles() mc.send_angle(Angle.J2.value,angle_datas[1]-23,20) time.sleep(2)
應(yīng)用場景:該部分是語音識別流程,從錄音、保存音頻文件到使用語音識別庫(如SpeechRecognition)進行語音到文本的轉(zhuǎn)換。
核心技術(shù):使用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("點單結(jié)束") 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')
自動導(dǎo)航
該部分主要實現(xiàn)了一個基于ROS(機器人操作系統(tǒng))的自動導(dǎo)航系統(tǒng),用于指導(dǎo)機器人在預(yù)設(shè)環(huán)境地圖中自主移動到指定位置。以下是該代碼實現(xiàn)的技術(shù)和場景概括:
初始化和配置:代碼中首先初始化了一個名為map_navigation的ROS節(jié)點,這是進行任何ROS通信前的必要步驟。
設(shè)置了三個發(fā)布器,分別用于發(fā)送速度指令(/cmd_vel)、設(shè)置初始位置(/initialpose)和取消導(dǎo)航目標(/move_base/cancel)。
導(dǎo)航到目標點:通過定義moveToGoal函數(shù),代碼實現(xiàn)了機器人到達特定目標位置的功能。這涉及到與move_base動作服務(wù)器的交互,該服務(wù)器負責處理路徑規(guī)劃和導(dǎo)航。
動作客戶端通過發(fā)送一個包含目標位置和姿態(tài)的MoveBaseGoal到move_base服務(wù)器,從而指示機器人移動到指定位置。
目標位置的設(shè)定和導(dǎo)航執(zhí)行:目標位置和姿態(tài)通過參數(shù)(xGoal, yGoal, orientation_z, orientation_w)傳遞給moveToGoal函數(shù)。
機器人在收到目標位置后,動作客戶端等待結(jié)果,判斷是否成功到達目標。
結(jié)果處理:根據(jù)動作客戶端返回的狀態(tài),判斷機器人是否成功到達目標位置,并進行相應(yīng)的日志記錄和反饋。???????
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 節(jié)點 self.pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10) # 發(fā)布速度指令的發(fā)布器 self.pub_setpose = rospy.Publisher('/initialpose', PoseWithCovarianceStamped, queue_size=10) # 發(fā)布設(shè)置初始姿態(tài)的發(fā)布器 self.pub_cancel = rospy.Publisher('/move_base/cancel', GoalID, queue_size=10) # 發(fā)布取消目標的發(fā)布器 # move_base def moveToGoal(self, xGoal, yGoal, orientation_z, orientation_w): # 移動到目標點 ac = actionlib.SimpleActionClient("move_base", MoveBaseAction) # 創(chuàng)建動作客戶端 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) # 發(fā)送目標位置 ac.wait_for_result(rospy.Duration(600)) # 設(shè)置超時時間 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() # 初始化導(dǎo)航 x_goal, y_goal, orientation_z, orientation_w = (0.0598191, -1.81509, 0.999547, 0.024365) # 設(shè)置需要導(dǎo)航到達的點位 flag_feed_goalReached = map_navigation.moveToGoal(x_goal, y_goal, orientation_z, orientation_w) # 開始導(dǎo)航,并返回是否到達目標點位 if flag_feed_goalReached: print("command completed") # 成功到達目標定位
二維碼識別抓取
這份代碼主要展示了如何使用Python控制大象機器人的Mercury系列機械臂進行二維碼識別和基于位置的物體操作。以下是該代碼實現(xiàn)的技術(shù)和場景概括:
硬件設(shè)置與初始化:代碼首先初始化Mercury機械臂,設(shè)置其與計算機的通訊端口。
同時設(shè)置和配置UVC相機,加載相機的校準參數(shù)(內(nèi)參和畸變系數(shù)),這些參數(shù)用于后續(xù)圖像處理和位置計算。
圖像捕捉與二維碼識別:使用UVC相機捕捉實時圖像幀。
應(yīng)用stag.detectMarkers方法識別圖像中的二維碼并獲取其角點信息,這是二維碼位置識別的關(guān)鍵步驟。
二維碼位置計算與機械臂定位:根據(jù)捕獲的二維碼角點及相機校準參數(shù),計算二維碼相對于相機的空間坐標。
通過手眼標定技術(shù)(Eyes_in_hand_right方法),將二維碼的相對坐標轉(zhuǎn)換為機械臂基座坐標系中的位置。
控制機械臂移動到計算出的二維碼位置。
交互執(zhí)行:機械臂移動到二維碼所在位置后,通過控制夾爪的開閉來實現(xiàn)物體的抓取操作。
from pymycobot import Mercury from uvc_camera import UVCCamera import stag import numpy as np # 導(dǎo)入需要的庫 mr = Mercury("/dev/ttyACM2") # 設(shè)置右臂端口號 mr.send_angles([92.78, -3.19, 0.0, -135.63, -112.56, 70.86, -49.26], 30) # 將機械臂移至二維碼區(qū)域 camera_params = np.load("src/camera_params.npz") # 讀取相機配置文件 mtx, dist = camera_params["mtx"], camera_params["dist"] # 獲取相機內(nèi)參和畸變系數(shù) camera = UVCCamera(4, mtx, dist) # 設(shè)置相機id camera.update_frame() # 更新圖像幀 frame = camera.color_frame() # 獲取彩色圖像幀數(shù)據(jù) (corners, ids, rejected_corners) = stag.detectMarkers(frame, 11) # 根據(jù)圖像,獲取二維碼角點 marker_pos_pack = calc_markers_base_position(corners, ids, 32, mtx, dist) # 根據(jù)角點和相機內(nèi)參、畸變系數(shù),獲取二維碼相對于相機的坐標 cur_coords = np.array(mr.get_base_coords()) # 獲取機械臂末端坐標 cur_bcl = cur_coords.copy() cur_bcl[-3:] *= (np.pi / 180) # 將機械臂末端旋轉(zhuǎn)角度轉(zhuǎn)為弧度 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
注:進入網(wǎng)站,成功注冊之后在“賽事報名”中找到“AI ROBOT創(chuàng)新挑戰(zhàn)賽”項目進行報名。
參賽對象
本科組:全日制高校在讀學生(本科、研究生)
高職組:全日制高校在讀學生(高職)
參賽要求
1) 本賽項為團體賽,以院校為單位組隊參賽,本科組、高組須為高校在籍學生和在職老師,不得跨校組隊。
2) 每個賽隊由2-3名參賽學生(設(shè)隊長1名)和1-2名指導(dǎo)老師。
3)比賽過程中,參賽者需要在規(guī)定的時間內(nèi)完成所選賽項的任務(wù)。這些任務(wù)可能包括機器人的設(shè)計、編程、調(diào)試以及實際運行等。
參賽時間(省賽選拔賽)
報名截止時間:2024年5月30日(最晚截止時間)
區(qū)域賽選拔時間:2024年7月10日— 7月20日
晉級公示:2024年7月25日(公示時間不少于 5 個工作日)
注:各區(qū)域賽比賽時間和地點等安排以區(qū)域賽通知為準。
隨著科技的不斷進步,我們相信通過此類競賽的平臺,能夠有效促進科技與教育的深度融合,激發(fā)更多青年才俊在人工智能和機器人領(lǐng)域的探索熱情。
我們期待看到來自各地的優(yōu)秀參賽者在本屆大賽中展示出色的技術(shù)創(chuàng)新和解決方案,共同推動全球機器人技術(shù)向更高水平發(fā)展。讓我們攜手前行,共創(chuàng)智能科技的美好未來。
審核編輯 黃宇
-
機器人
+關(guān)注
關(guān)注
211文章
28551瀏覽量
207631 -
AI
+關(guān)注
關(guān)注
87文章
31223瀏覽量
269579 -
人工智能
+關(guān)注
關(guān)注
1792文章
47469瀏覽量
239136 -
python
+關(guān)注
關(guān)注
56文章
4801瀏覽量
84849 -
機械臂
+關(guān)注
關(guān)注
12文章
515瀏覽量
24643
發(fā)布評論請先 登錄
相關(guān)推薦
評論