如何开发一款机器人

按照应用行业划分,机器人可分为工业机器人和服务机器人。工业机器人主要应用在工业领域,例如汽车制造和3C等行业应用较多。当前工业机器人主要是六轴机械臂,通过编程算法控制机械臂灵活精准运转。服务机器人主要应用在服务行业,例如炒菜机器人、手术机器人等。

如果按照是否移动划分,则机器人分为固定机器人和移动机器人。固定机器人一般不能自主移动,固定在一个位置,主要功能要完成控制机械臂的运动。而移动机器人还需要控制底盘、车轮或四足、飞行翼。因为要移动外界环境就会变化,所以移动机器人会运行在一个变化的环境中,这时识别周围环境就很重要,就需要通过SLAM+GPS技术进行同步定位和建图以及导航。

如果要开发机器人,就要选择好自己机器人所处于的应用行业,每个应用行业决定了机器人的动作控制不一样,例如炒菜机器人和医疗手术机器人就相差很大,有不同的动作控制算法。而如果机器人要移动,例如送货机器人,那么要考虑环境的识别。如何开发一款机器人_第1张图片
机器人从实现上说明如下:
如何开发一款机器人_第2张图片

1、硬件

  • 机器人底层硬件包括:底座、外壳、控制器、减速器、伺服控制器、伺服电机等。
  • 控制器主要控制各种动作,例如机械臂的旋转和夹取等操作,无人机旋翼的转速控制。一般机器人厂家都会开发自己的一套控制器。控制板可以自己设计,也可采用树莓派进行二次开发。
  • 减速器目的是降低转速,增加转矩,可以理解为一套齿轮转换的传动系统。减速器是机器人硬件的核心,直接影响到动作精确度。减速器占机器人硬件成本的30%多,当前核心技术主要被日德等企业掌握,国内如绿的谐波等厂商也生产谐波减速器。

伺服控制器用来控制电机的运转,电机进而控制转向、速度和加速度。

如果是移动机器人,还需要传感器感知到外界环境,主要有:

  • IMU(惯性测量单元),陀螺仪及加速度计是IMU的主要元件,其精度直接影响到惯性系统的精度。
  • 轮式计数器用来计算机器人的移动距离。
  • 相机用来拍摄到外部图像,可以分为单目、双目和深度相机等,因为价格便宜被大量采用。
  • 激光雷达精度高、测距远,但是价格较贵。

2、操作系统和基础软件

硬件之上就是操作系统,一般会采用ubuntu,这是一种linux操作系统。在上面要安装ROS机器人操作系统。ROS严格来说不是操作系统,是实现机器人编程和开发复杂机器人应用程序的开源软件框架,可以理解为一套中间件。ROS把控制机器人的指令进行封装开放给上层API,方便上层程序的操作。编程语言通常是C++,也有python。

3、软件和算法

软件编程主要就是实现感知外界、动作控制等算法,通过算法精确控制机械臂,或者底盘(轮式、足式)的运动。

3.1、SLAM

如果是移动机器人,就需要SLAM定位和建图技术。SLAM是一套复杂的系统,可以说是一套理论体系。SLAM通过各种传感器的融合来获取外界信息,然后通过一套复杂的算法进行定位。机器人知道了周围的环境和自己当前位置,可以做到避障和导航。SLAM在室内没有GPS的场景下可大大发挥作用,并且定位精准,能弥补GPS的短处。

3.2、机器视觉

仅仅使用SLAM还是不够。在自动驾驶中还要识别外界物体是什么,例如是红绿灯还是马路牙子,是行走的动物还是一块石头,就需要进行图像的分割和目标识别,这就涉及到机器视觉。当前比较成熟的是使用深度学习神经网络进行图像识别,完成目标的语义分割以及识别。如果要实现SLAM和深度学习,则使用单片机是远远不够,硬件上一般使用低功耗的ARM平台,并且要配合使用GPU。

3.3、路径规划和导航

一旦机器人感知到了周围环境和知道了环境地图,那么路径规划和导航相对比较容易。室内导航主要依靠SLAM,例如扫地机器人。室外可以借助GPS+电子地图进行导航和路径规划。

3.4、避障

机器人在行走过程中会遇到各种障碍,各种障碍物要靠传感器+算法进行识别。例如通过摄像机和激光雷达,毫米波雷达,知道了外界的环境。通过机器视觉和深度学习,对图像进行分割,语义识别,知道是什么东西,按照物体分类,如果发现是障碍物,就需要避障。

整体看,机器人就是在本体硬件(底盘、外壳、控制器、减速器、伺服控制器和伺服电机)+传感器的基础上安装操作系统、ROS,使用各种软件算法(运动控制、SLAM、机器视觉、路径规划和导航、避障等)完成对外界环境的感知和机器人的动作控制、移动控制。传感器相当于机器人的耳目,用来感知外界。得到外界信息后使用SLAM定位和构图,这样机器人就知道了外界3D环境地图和自己当前位置,同时配合GPS和电子地图,就可进行导航+路径规划和避障,机器人在软件的控制指挥下就可行走起来,安全到达目的地,这也是自动驾驶技术的基本原理。同时可以通过操纵机械臂让机器人完成各种动作。

你可能感兴趣的:(机器人,人工智能)