0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

大象机器人开源六轴协作机械臂myCobot 320 手机摄影技术!

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2024-04-28 16:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言
有没有遇到过这样的情况:当你手持手机或相机准备拍摄视频时,心中已经构想了完美的画面,但却因为实际的限制无法捕捉到理想中的角度?这种情况可能会让人感到挫折。例如,如果想要从地面一只蚂蚁的视角拍摄,镜头需要与蚂蚁处于同一水平线上,这在操作上不仅困难,而且往往难以实现。

尽管目前市场上有许多稳定设备如平衡环架(gimbal)来辅助拍摄,以求达到稳定和多角度的拍摄效果,但在此篇文章中,我将探索一种独特的解决方案:通过将手机安装在机械臂的末端来进行拍摄,以实现那些传统方法难以捕捉的特殊视角。此次尝试不仅旨在克服拍摄过程中的物理限制,而且也期望通过技术的创新来开拓我们对摄影角度的想象和实践。

设备
myCobot 320 M5stack
myCobot 320,一款具备六自由度的协作型机械臂,凭借其独特的设计和高精度伺服电机成为了领域内的亮点。这款机械臂拥有最大350mm的工作半径和最大1000g的末端负载能力,使其适用于广泛的应用场景。myCobot 320不仅支持灵活的视觉开发应用,还提供了深入的机械运动原理解析,为用户带来了12个标准的24V工业IO接口,满足不同的开发需求。

wKgZomYuChyASQ-sAAENOUtaSW8117.png

它的开放性极高,兼容大多数主流操作系统编程语言,包括PythonROS等,为开发者提供了极大的灵活性和自由度。无论是在教育、研发还是工业应用中,myCobot 320都能提供强大支持,使创新和应用开发更加便捷高效。

myCobot Pro phone holder
它可以安装在myCobot 320,myCobot pro 630机械臂的末端,能够稳定的固定住手机。

wKgaomYuCiyAGuHjAAFptGtvDFM818.png

wKgaomYuCkeAQslGAAFkKpaY5zI125.png

以上就是我们需要使用到的设备了。

初次尝试
安装手机支架
整体安装的效果图片

wKgaomYuClqAO7MlAEc8svSFHBY392.png

基础控制测试
做一个简单的尝试。

wKgaomYu-eqAXLPrADyDHpu3aCU093.png

拍摄视频
给机械臂进行关节控制的编程,让我们一起看看效果如何。

尽管视频中展示的机械臂运动轨迹看似简单,但实际上,调整这些轨迹点位仍需耗费大量时间,且效果未必理想。因此,我在考虑是否存在更优解决方案,例如,通过设定几种运动模式和预先规划机械臂的拍摄路径。这不仅能够有效利用机械臂辅助拍摄,同时也提供了一种更为高效的部署方式。

编程挑战
开发需求分析
确定使用的设备如下

wKgZomYuCneADRmqAACX3A2C-K0477.png

需求:需求优化:

目标是为静态物体拍摄场景设计一系列创新的视频拍摄方式,初步计划采用三种方法:

1. 利用机械臂末端固定的手机,实现物体360°全景视频拍摄。

2. 创建一种画面效果,从远处平缓推进至物体近前,模拟“拉近镜头”的效果。

3. 实现机械臂末端的快速旋转与移动,捕捉动感十足的画面。

为了精准控制拍摄过程,计划利用OpenCV机器视觉算法和AVFoundation iOS框架,通过Python脚本控制机械臂的精确运动。我们将通过手机摄像头识别物体的尺寸,进而计算出机械臂末端与物体之间的理想距离。根据这个距离,设计相应的机械臂运动算法,确保拍摄过程中能够获得最佳画面效果。

wKgaomYuCoaAeha0AABnWliXfUQ354.png

YOLO视觉算法
为了节省时间,我们将不会自行训练机器视觉算法来识别特定物体。相反,我们直接采用其他开发者已经训练优化的YOLOv5库,以实现对目标物体的准确检测。

import cv2 import torch from pathlib import Path from models.experimental import attempt_load from utils.general import non_max_suppression, scale_coords from utils.torch_utils import select_device, time_synchronized def detect_apples(img_path): device = select_device('') weights = 'yolov5s.pt' model = attempt_load(weights, map_location=device) img0 = cv2.imread(img_path) # BGR img = img0[:, :, ::-1] # RGB img = torch.from_numpy(img).to(device) img = img.float() # uint8 to fp16/32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 if img.ndimension() == 3: img = img.unsqueeze(0) # Inference t1 = time_synchronized() pred = model(img)[0] # Apply NMS pred = non_max_suppression(pred, 0.4, 0.5, classes=None, agnostic=False) t2 = time_synchronized() print(f'Inference time: {(t2 - t1):.3f}s') # Process detections for i, det in enumerate(pred): # detections per image gn = torch.tensor(img0.shape)[[1, 0, 1, 0]] # normalization gain whwh if len(det): det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img0.shape).round() for *xyxy, conf, cls in reversed(det): label = f'{model.names[int(cls)]} {conf:.2f}' plot_one_box(xyxy, img0, label=label, color=(255, 0, 0)) return img0 def plot_one_box(xyxy, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img tl = ( line_thickness or round(0.002 * max(img.shape[0:2])) + 1 ) # line/font thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3])) cv2.rectangle(img, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA) if label: tf = max(tl - 1, 1) # font thickness t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 cv2.rectangle( img, c1, c2, color, -1, cv2.LINE_AA ) # filled cv2.putText( img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA, ) return img if __name__ == '__main__': img_path = 'test_image.jpg' # 输入你的图像路径 result_img = detect_apples(img_path) cv2.imshow('Result', result_img) cv2.waitKey(0) cv2.destroyAllWindows()

wKgZomYuCqyAKtNbAB4TDunz9T8774.png


保留识别物体的尺寸的数据,之后要用在别的地方上。

机械臂运动控制算法
机械臂的控制方法

# 这个方法控制机械臂的关节进行运动 mc.send_angles([angle_list],speed) # 这个方法用坐标控制机械臂在空间上进行运动 mc.send_coords([coords_list],speed,mode) example: mc.send_angles([0,0,0,0,0,0],100) time.sleep(2) mc.send_coords([(-3.6), 30.32, (-45.79), (-46.84), 97.38, 0.35],100,1)


获得物体的尺寸数据之后,定义机械臂末端距离物体的合理位置

def calculate_angles_for_distance(distance): # 根据理想距离计算机械臂的关节角度 # 这里的计算需要根据实际情况和物理参数进行调整 return [0, -10, distance * 0.1, 0, 30, 0] def calculate_adjusted_angles(action_angles): # 基于特定动作后可能需要的坐标调整计算新的角度 # 这里仅为示例,具体逻辑根据需要调整 return [angle * 1.1 for angle in action_angles]


再选择模式对应的运动控制

#360全景拍摄 # 定义具体的拍摄模式 def shoot_mode_360(ideal_distance): print("执行360°全景拍摄模式") # 首先,移动到理想拍摄位置 move_to_ideal_position(ideal_distance) # 处理理想距离 ideal_ratio = ratio # 执行360°全景拍摄的特定动作 mc.send_angles([0, 0, 0, 0, 0, 0], speed=15) time.sleep(1) mc.send_coords([angle * ratio for angle in angles_list] ,15) time.sleep(1) mc.send_coords([angle * ratio for angle in angles_list] ,15) time.sleep(1) mc.send_coords([angle * ratio for angle in angles_list] ,15)

手机相机的调用
在开发过程中,尝试调用手机摄像头接口以实现自动化拍摄功能,我遇到了一系列挑战。作为我的第一次深入探索AVFoundation iOS框架,目标是激活并控制手机的摄像头,我发现自己还未能完全成功实现这一功能。当前的难点主要集中在如何准确调用摄像头进行视频拍摄,以及在拍摄过程中如何通过软件调整来补偿图像的可能拉伸,这需要对机械臂的运动进行精细控制。

这些问题标志着我后续研究的重点方向,需要我继续深入学习AVFoundation框架的使用,特别是其控制摄像头的具体方法,并探索如何将这些控制整合到机械臂的运动调整中,以确保最终拍摄出的视频质量符合预期。

总结
随着这次项目记录的结束,我意识到虽然项目尚有诸多不足,但这次尝试将两个独立设备在不同的框架下协同工作,对我来说仍是一次宝贵的经验。确实,整个项目目前尚未达到我心中的理想状态。然而,我认为这个项目探索的方向极具潜力,考虑到市面上已经存在能够拍摄出令人赞叹效果的专业摄影机械臂,这强化了我对项目潜在价值的信念。

机械臂的应用已经广泛渗透到我们的日常生活中,无论是在工业生产、日常服务,还是在艺术创作领域,都发挥着越来越重要的作用。随着人工智能技术的不断进步和普及,AI与机器人的结合无疑将成为未来技术发展的重要趋势。我对机器人技术的未来发展抱有极大的期待,相信未来它们将在更多领域发挥出惊人的能力和创造力。

如果你对我的项目感兴趣,或者有任何想法和建议,非常欢迎与我交流。你的反馈将对我继续改进和完善这个项目提供宝贵的帮助。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    213

    文章

    30643

    浏览量

    219846
  • 开源
    +关注

    关注

    3

    文章

    4049

    浏览量

    45606
  • python
    +关注

    关注

    57

    文章

    4860

    浏览量

    89650
  • 机械臂
    +关注

    关注

    13

    文章

    584

    浏览量

    25985
  • 大象机器人
    +关注

    关注

    0

    文章

    86

    浏览量

    332
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    复合机器人对比传统AGV和机械的优势何在?

    复合机器人对比传统AGV和机械的优势,核心在于它突破了单一设备的功能局限,实现了“移动+操作”的深度协同,尤其在上下料和物料转运场景中优势显著。经世智能复合机器人:重新定义上下料与物
    的头像 发表于 11-21 15:32 1193次阅读
    复合<b class='flag-5'>机器人</b>对比传统AGV和<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的优势何在?

    协作机器人打磨市场何时迎来爆发

    只用不到1N轻微的力将机械在两点之间轻松拖动,协作机器人便能轻松在复杂曲面工件上像水蛇一般柔顺舞动,将工件打磨得锃亮——在百花缭乱、争妍斗艳的工博会、WRC等各大
    的头像 发表于 10-23 11:04 601次阅读

    华盛控科技引领工业协作机器人技术变革

    协作机器人常以轻量化、低负载、小臂展的形象出现在大众视野,这种现象正逐渐被日新月异的技术迭代和“工业级”协作机器人这一新物种所颠覆。
    的头像 发表于 10-11 14:18 735次阅读

    对比AGV和协作,为什么要选择复合机器人?有哪些场景和优势

    GV往往只能完成货物搬运和运载,协作只能完成固定工位的抓取动作,而复合机器人作为2种设备的结合体,具有多种优势
    的头像 发表于 08-14 16:10 1986次阅读
    对比AGV和<b class='flag-5'>协作</b><b class='flag-5'>臂</b>,为什么要选择复合<b class='flag-5'>机器人</b>?有哪些场景和优势

    RDK × 腿机器人:这只 “机械汪” 竟会说人话、走花路!

    开源:Github:https://github.com/Hello-XSJ/RDK\_vlm\_demo.git-本项目聚焦腿机器人在多模态环境感知、自然语言交互和自主行为控制方面的技术
    的头像 发表于 07-01 20:27 1018次阅读
    RDK × 腿<b class='flag-5'>臂</b><b class='flag-5'>机器人</b>:这只 “<b class='flag-5'>机械</b>汪” 竟会说人话、走花路!

    大象机器人携手进迭时空推出 RISC-V 全栈开源机械产品

    大象机器人成立于2016年,专注协作机器人研发与应用,产品线涵盖轻量级协作机器人、人形
    的头像 发表于 06-06 16:55 1169次阅读
    <b class='flag-5'>大象</b><b class='flag-5'>机器人</b>携手进迭时空推出 RISC-V 全栈<b class='flag-5'>开源</b><b class='flag-5'>六</b><b class='flag-5'>轴</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>产品

    大象机器人携手进迭时空推出 RISC-V 全栈开源机械产品

    大象机器人成立于2016年,专注协作机器人研发与应用,产品线涵盖轻量级协作机器人、人形
    发表于 04-25 17:59

    大象机器人×进迭时空联合发布全球首款RISC-V全栈开源机械

    革新产品——全球首款基于RISC-V全栈开源协作机械
    的头像 发表于 04-25 14:19 1490次阅读
    <b class='flag-5'>大象</b><b class='flag-5'>机器人</b>×进迭时空联合发布全球首款RISC-V全栈<b class='flag-5'>开源</b>小<b class='flag-5'>六</b><b class='flag-5'>轴</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    大象机器人携手地瓜机器人打造全国产轻量级教育协作机械新标杆

    机器人技术、人工智能技术飞速发展的今天,全球机器人产业正在加速重构,据智库数据显示,2025年中国教育机器人市场规模将突破800亿元,其中
    的头像 发表于 04-16 15:21 1413次阅读
    <b class='flag-5'>大象</b><b class='flag-5'>机器人</b>携手地瓜<b class='flag-5'>机器人</b>打造全国产轻量级教育<b class='flag-5'>协作</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>新标杆

    大象机器人推出myCobot 280 RDK X5,携手地瓜机器人共建智能教育机

    摘要大象机器人全新推出轻量级高性能教育机械myCobot280RDKX5,该产品集成地瓜机器人
    的头像 发表于 04-15 22:05 1118次阅读
    <b class='flag-5'>大象</b><b class='flag-5'>机器人</b>推出<b class='flag-5'>myCobot</b> 280 RDK X5,携手地瓜<b class='flag-5'>机器人</b>共建智能教育机

    开源项目!教你如何制作一个开源教育机械

    的解决方案。 初学者友好:Pedro是学习机器人,电子和编程的绝佳工具。 STEM教育:可以使用Pedro了解有关3D打印技术、嵌入式系统和通信协议的知识。 微控制器编程:支持基于Arduino的开源固件
    发表于 03-10 11:22

    大象机器人以科技治愈人心

    当冰冷的代码被赋予人性的温度,科技便有了治愈人心的力量。大象机器人公司始终致力于通过机器人技术改善人们的生活,"享受机器人世界"是
    的头像 发表于 02-20 11:17 1188次阅读

    专为机器人教育而设计的创客友好型机械

    本文重点介绍了一款专为机器人教育而设计的具有动态跟踪功能的创客友好型机械 硬件组件 M5Stack ESP32 Basic Core IoT Development Kit Raspberry
    的头像 发表于 02-12 11:12 1140次阅读
    专为<b class='flag-5'>机器人</b>教育而设计的创客友好型<b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    如何使用PLC控制myCobot 320机械

    根据持续的用户反馈,目前市场对 PLC 与 myCobot 系统集成的需求很大,因此本文提供的案例介绍了如何使用 PLC(可编程逻辑控制器)来控制 myCobot 320 机械
    的头像 发表于 01-23 14:03 2236次阅读
    如何使用PLC控制<b class='flag-5'>myCobot</b> <b class='flag-5'>320</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    使用myCobot 280机械结合ROS2系统搭建机械分拣站

    这篇文章是来自Automatic Addison的开源项目,已获作者授权转载自github。本项目的主要内容是使用myCobot 280机械结合ROS2系统搭建
    的头像 发表于 01-15 09:22 1941次阅读
    使用<b class='flag-5'>myCobot</b> 280<b class='flag-5'>机械</b><b class='flag-5'>臂</b>结合ROS2系统搭建<b class='flag-5'>机械</b>分拣站