当前位置: 首页 > news >正文

单物体最优抓取轨迹生成

基于 3D 位姿规划直线平滑抓取轨迹包含趋近 - 抓取 - 复位三段最优运动路径适配机械臂点位运动核心规划逻辑基准位机械臂初始安全待机点趋近段直线匀速靠近物体上方预备抓取点抓取段垂直下落至物体抓取中心位姿抬升段抓取后回升至安全高度复位段返回初始待机位置完整可运行代码python运行from ultralytics import YOLO import cv2 import numpy as np import math # 模型与相机参数 model YOLO(yolo26n.pt) FOCAL_LENGTH 600 REAL_WIDTH 0.5 # 机械臂基准点位(相机坐标系单位m) HOME_X, HOME_Y, HOME_Z 0.0, -0.2, 0.8 # 初始待机位 PRE_Z_OFFSET 0.15 # 抓取预备高度落差 LIFT_HEIGHT 0.2 # 抓取抬升高度 # 摄像头初始化 cap cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720) cv2.namedWindow(最优抓取轨迹规划, cv2.WINDOW_NORMAL) cv2.resizeWindow(最优抓取轨迹规划, 1280, 720) # 轨迹点位存储 trajectory_points [] def gen_optimal_grasp_traj(obj_x, obj_y, obj_z, grasp_angle): 生成最优抓取轨迹点位列表 traj [] # 1. 初始待机点 traj.append([HOME_X, HOME_Y, HOME_Z, grasp_angle]) # 2. 物体上方预备抓取点 pre_x, pre_y, pre_z obj_x, obj_y, obj_z PRE_Z_OFFSET traj.append([pre_x, pre_y, pre_z, grasp_angle]) # 3. 物体中心抓取点 traj.append([obj_x, obj_y, obj_z, grasp_angle]) # 4. 抓取后抬升安全点 lift_z obj_z LIFT_HEIGHT traj.append([obj_x, obj_y, lift_z, grasp_angle]) # 5. 返回初始位 traj.append([HOME_X, HOME_Y, HOME_Z, grasp_angle]) return traj while True: ret, frame cap.read() if not ret: break results model(frame, imgsz640, verboseFalse) img results[0].plot() trajectory_points.clear() for box in results[0].boxes: x1, y1, x2, y2 box.xyxy[0].cpu().numpy() cls_name model.names[int(box.cls[0])] box_w x2 - x1 box_h y2 - y1 # 计算3D坐标 obj_z (REAL_WIDTH * FOCAL_LENGTH) / box_w cx, cy (x1x2)/2, (y1y2)/2 obj_x (cx - frame.shape[1]//2) * obj_z / FOCAL_LENGTH obj_y (cy - frame.shape[0]//2) * obj_z / FOCAL_LENGTH # 计算抓取姿态角 grasp_angle 0.0 if box_w box_h else 90.0 # 生成最优抓取轨迹 grasp_traj gen_optimal_grasp_traj(obj_x, obj_y, obj_z, grasp_angle) trajectory_points grasp_traj # 绘制抓取中心点 cv2.circle(img, (int(cx), int(cy)), 8, (0,0,255), -1) # 显示坐标姿态 info fXYZ:{obj_x:.2f} {obj_y:.2f} {obj_z:.2f}m Angle:{grasp_angle}deg cv2.putText(img, info, (int(x1), int(y1)-15), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2) # 打印轨迹点位可下发机械臂 if trajectory_points: print(最优抓取轨迹点位(X,Y,Z,角度)) for idx, pos in enumerate(trajectory_points): print(f点位{idx1}: {pos}) cv2.imshow(最优抓取轨迹规划, img) if cv2.waitKey(1) 0xFF ord(q): break cap.release() cv2.destroyAllWindows()运行指令bash运行python3 yolo3d.py轨迹特性最优设计避障安全先到物体上空再下落规避周边障碍物运动平顺直线插值路径速度波动小、抖动低动作闭环抓取完成自动复位可连续作业姿态适配根据物体长宽自动匹配夹持角度轨迹输出说明终端打印 5 组轨迹点位格式[X,Y,Z,抓取角度]可直接对接运动控制器下发执行进阶扩展方向增加轨迹插补生成密集中间点位实现顺滑运动加入碰撞检测修正危险轨迹路径对接 ROS/MoveIt直接仿真并执行轨迹多物体优先级排序依次生成抓取路径
http://www.zskr.cn/news/1347550.html

相关文章:

  • 微信聊天数据本地化:开源工具WeChatMsg的技术架构与数据主权实践
  • VSCode PDF预览器技术实现深度解析:基于PDF.js的编辑器集成架构
  • OpenRGB:终结RGB灯光管理混乱的终极免费方案
  • 广州婚纱照推荐|深耕品质美学,解锁多元婚拍新体验 - 品牌评测官
  • 2026实测:租用RTX 4090 CUDA适配与PyTorch精准安装教程
  • 企业级大屏自适应解决方案:v-scale-screen如何解决跨设备兼容性挑战
  • 软考中级-软件设计师:UML建模完整笔记(OpenClaw生成)
  • ColabFold深度解析:如何在云端解锁蛋白质结构预测的民主化革命
  • 全国网站开发服务商哪家好?2026年有实力的网站开发公司盘点 - 麦麦唛
  • Perplexity奖学金搜索实操手册:3步精准定位冷门高额资助,92%学生从未用过这2个过滤技巧
  • Sora 2批量视频生成工作流落地指南:从Prompt工程→批次编排→质量校验→自动归档的7步标准化流程
  • AI率99%降到3.8%是真的吗?2026实测降AI工具效果数据曝光
  • Armv8/v9架构SCTLRMASK_EL2寄存器解析与应用
  • Go语言实战:构建高可用API + HASH上链存证服务,这不是妥协而是最优解
  • AI Daily Paper Reader(ADPR):零服务器搭建个人/团队通用大模型API驱动的论文阅读与推荐平台
  • Gemini 长上下文成本估算表:输入、输出、缓存怎么拆
  • 使用Taotoken后团队在模型API调用延迟与账单清晰度上的实际感受
  • 通过模型广场的直观对比与快速切换找到最适合当前任务的模型
  • 外包人员考勤无纸化:从技术痛点到轻量化落地实践
  • 上海名牌首饰回收推荐:2026 五大平台专业度与安全性测评 - 李宏哲1
  • 利用大语言模型静态预测GPU内核性能特征
  • 七年时间,我们和苏妈握手了!
  • 8051汇编宏展开问题解析与调试技巧
  • 初创团队如何借助Taotoken统一管理多个项目的API密钥与用量
  • [菜鸟教程] 机器学习教程八课-Python 机器学习库
  • 2026脉冲可调电源选型:厂家推荐+避坑技巧,新手轻松选对 - 品牌优选官
  • AArch64架构SMCR_EL3寄存器详解与SME向量计算优化
  • 2026硬质合金厂家推荐榜单:国内实力测评与优质选型指南 - 资讯速览
  • 全志 V821 韦东山 Avaota-F1-B (3) I2C CST816T触摸屏适配
  • 百考通用“语义重构”帮你真正降低重复率