【实战+源码】基于RGB-D(深度视觉)的具有机械臂抓取功能的自主规划移动服务机器人的设计与实现(一)——准备工作

目录

一,实物or仿真

1,实物或仿真的利弊

2,从哪些角度去考虑是选择实物还是仿真

二,环境准备

1,首推ROS

2,其他环境

三,理论学习

四,实物搭建


一,实物or仿真

         我想这个问题是在开发之前最容易想清楚的,所以我先说!

1,实物或仿真的利弊

         对于做出实物,要比仿真耗费更多的时间,精力,物力,财力。

        接触过硬件的朋友都会有体会,首先你会考虑性能价格等方面的因素去选择一款合适的硬件,然后你需要花时间去学会使用调试它,最头疼的是你调试的过程中会遇到很多只有你才会遇到的问题,像硬件烧坏,电气连接不稳定对初学者来说是最常见的问题,还有可能你用着用着发现不合适了,对不起,需要把上述过程再过一遍,这都需要时间和精力。关于物力,财力问题,我就举个例子来说,最早诞生于斯坦福大学PR1机器人,现在迭代到PR2,价值100多万,这不是一般科研单位能用的起的,说一个入门级的科研平台Turtlebot,二代标配也是几万块,就算是自己搭建,激光雷达,深度相机,机械臂这些都要上千,移动底盘可以自己搭,电机,里程计,电源,驱动这些自己可都做不出来,我目前了解到一款较便宜的桌面级的机械臂turtlebot-arm(PhantomX-Arm)也要几千,当然也可以自己画图买控制驱动舵机完完全全自己做,如果不是个团队或者懂点机械也不建议弄,结构不好,精度不够,参数不明确也没法用。

        那也不是一无是处,做实物最大魅力正在于它的“麻烦”,很多人去玩这些是出于兴趣的,看到自己做的机械臂动了起来,自己做的底盘跑了起来,每解决一个问题,都可以通过这些实物展现出来,这种成就感是仿真给不了的。其次做仿真最终是要落地为实物的,当然这不一定是你做,这种锻炼是以后走向科研单位或是研发岗位的一种很好的积累。

       仿真我就说一句话,它有自己天然的好处,理想环境里模拟再多干扰它始终不是真实环境。

2,从哪些角度去考虑是选择实物还是仿真

       我挑重点说,综合考虑需求,能力,条件。

       比如说,你没经费,又在这方面动起手来不擅长,也没必要锻炼,实验室条件也差劲,别考虑做实物了。又比如说,你要做出实物参加竞赛,做出产品,有这样的需求你就没有选择。仿真可以节省一部分麻烦,这样你可以节省精力放在算法,策略上,有重点的学习自己需要深入的地方。

       我的需求是做本科毕业设计的,所以我的定位是学习使用为主,实物次之,改进算法为更高追求。无论是做实物还是侧重仿真,这两方面我都会分享自己学习过程中的心得。

二,环境准备

1,首推ROS

         ROS(robot operating system),顾名思义,机器人操作系统,首先,专业,开源,具有很好机器人开发交流生态,机器人明星大都是基于ROS。ros的初衷是提高软件的复用率的,具体的发展历史,特点,优缺点自行查阅。

        放些图吧,不然显得太枯燥。

        这个是ROS的特点:

(图片来自古月老师课件,顺便说一下,胡老师在国内ROS教育的影响力对于学习ros的人,几乎没有不知道古月老师的)
 

       

2,其他环境

        没有(有也不推荐,我也不会)。

         

三,理论学习

关于ROS的学习,ROS1依赖在ubuntu系统下,因此你需要一个linux系统,不建议使用虚拟机,虚拟机安装容易,使用起来问题较多,所以建议WIN+linux双系统。ros2据说可以在Windows下使用。

   安装系统之前,你要搞明白几个事情,Ubuntu版本与ROS版本之间的对应关系

最新(2021年)ROS1发行版本适用的Linux操作系统平台、语言工具要求、第三方库支持、版本推荐

对于初学者来说,建议较早的indigo或kinetic(我当时用的indigo,不过现在都2021年了,用新的吧),较早版本大家分享资料比较多,功能包安装方便

还有安装系统的时候,关于内存分配,最好自己找好教程,或者身边找个懂得,别把自己win系统搞崩了,别问我怎么知道的,经验之谈

我不是搞教学的,我是记录自己学习心得的,自己去购买古月老师的课程就好了,花钱买的才会珍惜学习。

逢场作戏,我也分享一个ros学习博客:

https://blog.csdn.net/weixin_40038847/article/details/82020565

课件:ROS机器人操作系统基础教程

https://download.csdn.net/download/qq_37372155/12087535

下面是古月老师的推荐:

四,实物搭建

        我一直强调需求和能力的问题,所以实物搭建也是一样的,前面说了,实物不是我的重点,得益于我指导老师的帮助,给我了一个turtlebot2学习平台,有kuboki底盘,有kinnet深度相机,底盘用来移动,相机用来建图和识别,要想抓取,肯定还缺个机械臂,我们身边没有搞机械的同学,这次只有自己这个学控制的自己动手了(我没钱)。

1、深度相机or激光雷达

       价格上激光雷达较深度相机贵,但适应性和图像质量比深度相机好点,深度相机做平面的slam有点大材小用了,在ROS里面的建图功能包是只是选取深度图像的一个切面,当然深度相机一般还可以提供常规的彩色图像,这里可以结合传统的图像处理,还有做抓取最好用到深度图像,从深度信息层面上去识别物体,包括位置和姿态,知道了位置和姿态,然后对机械臂进行逆运动学规划。(我只有kinect,没得选)

2、自己做条机械臂

      不建议先做这部分,可以先把slam玩够了,再说这个

      首先知道需要什么,要想知道需要什么,看看ROS提供什么,这里不是本篇文章的重点,所以我就直接说,ROS里面有个/joint_states话题,实时提供机械臂各关节弧度值,以及速度、加速度等信息,据此我们可以通过订阅这个话题,把弧度值转化为你所需要的控制信号,我这里用的是数字舵机,因此需要把弧度转化为PWM给到舵机。

      好,ros这边提供的东西有了,那你应该也就清楚机械臂这个执行单元需要什么了,首先上位机把PWM信号给到机械臂,需要通信协议,哎,这样说也不是很清楚,直接上图

   我做的已经看到了,我说下还可以怎样改进

1、Arduino控制板可以省略,上网本直接用IIC和驱动板通信,由于上网本没有现成的通信例程可以用,而Arduino有,因此加了一块Arduino UNO

2、机械臂结构的选择,大都6自由度,连杆长度,关节绕哪个轴运动参考UR,ABB,KUKA这些大明星就好了,好的结构对后面运动规划影响很大,经验之谈

3、舵机的选择,不同位置可以考虑不同扭矩的,但这样也带来一个问题,不同扭矩的舵机需要的电压也不一定一样。另外推荐使用UART舵机,控制上面可以省点功夫,还有舵机最好有角度反馈,做控制的人最喜欢有反馈了。

4、连杆,我更愿意称它为舵机连接件,有条件的用3D打印机打印吧,随心所欲,够轻,够结实就好。要求不高的不想打印去某宝几百块钱买个便宜的不支持ROS那种改装一下也OK的。

 

我本身也在学习阶段,说的比较主观和局限,正规的教学去看古月老师的课程吧。

这篇文章也是自己第一次写,废话较多,主要在于分享心得,接下来的分享将从程序层面上来说。

完整代码github托管地址:https://github.com/pengxinyi-up/mobile-grab-Robot

 

【系列文章】

【实战+源码】基于RGB-D(深度视觉)的具有机械臂抓取功能的自主规划移动服务机器人的设计与实现(一)——准备工作

实战+源码】基于RGB-D(深度视觉)的具有机械臂抓取功能的自主规划移动服务机器人的设计与实现(二)——人脸识别(face recongnition))

【实战+源码】RGB-D移动抓取服务机器人(三)——3D目标识别定位(相机标定、ORK、linemod、find_object_2d/3d)

【实战+源码】RGB-D移动抓取服务机器人(四)——完结篇(ROS机器人、系统设计、运动规划、目标定位)

 

 

基于视觉机械臂自动抓取是一种利用摄像头和计算机视觉算法来实现物体识别和抓取的技术。为了实现这一功能,可以使用Arduino开发源码。 首先,需要连接Arduino与摄像头模块,并确保它们之间的通信正常。可以使用Arduino的相应库函数来控制摄像头进行图像采集,例如OpenCV库。然后,利用机器学习或图像处理算法对采集到的图像进行处理,以实现物体识别。这些算法可以通过编程来实现,例如使用Python编程语言。 一种常见的物体识别算法是卷积神经网络(CNN)。在源码中,利用CNN的模型来训练机器识别物体,并将其转化为可执行代码加载到Arduino中。该源码包括训练数据集的收集和处理,模型的训练和保存,以及在机械臂运行过程中的物体识别和抓取操作。 在识别到物体后,源码需要根据物体的位置和姿态计算出机械臂的运动轨迹。这可以通过逆运动学算法实现,该算法根据目标位置和机械臂的动力学参数计算出使机械臂末端达到目标位置的关节角度。这些角度信息需要通过Arduino与机械臂的驱动电机进行通信,以实现精确控制。 最后,源码还需要实现机械臂抓取操作。这涉及到控制机械臂的手爪或夹具,使其张合或闭合,以抓取物体。可以通过Arduino的GPIO接口或其他对外输出接口来实现手爪的控制。控制命令需要根据物体的属性和识别结果进行调整,以确保抓取的稳定性和准确性。 基于视觉机械臂自动抓取的Arduino开发源码需要综合考虑物体识别、轨迹规划抓取操作等多个方面的问题。因此,在编写源码时,需要对机械臂的硬件结构、摄像头的性能和算法的设计进行综合分析和考虑,以实现高效、准确和稳定的抓取操作。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值