本文做者:o****0javascript
前几天,南京邮电大学的一场毕业典礼引发了吃瓜群众的热议,先来看看这个画风:java
因为疫情缘由,不少高校的学生只能在家里经过线上视频的方式完成毕业论文答辩。答辩经过后,毕业典礼就要来了,但疫情缘由还不能返校怎么办?毕竟毕业典礼一辈子可能就这一次,仪式感仍是要有的!因而南京邮电大学就用自研的机器人,为部分没法到场的毕业生整了这么一出画风清奇的“云毕业典礼”。python
据南邮的老师介绍,毕业典礼上的这些机器人出自学校的机器人创新团队之手,是在之前参赛机器人的基础上改装的。此次改装主要是为机器人配置了与真人身高相仿的模型,现场由专门的同窗对机器人进行远程控制,屏幕则是用 ZOOM 与参加毕业典礼的同窗进行视频交互。这个由南邮学生组成的机器人团队曾在国内外各大机器人竞赛中得到不错的成绩。git
其实如今的 AI 技术已经很是成熟且亲民,就算是编程能力不太强的同窗也能够玩转不少 AI 工具,好比不少好玩的开源机器人项目。据悉,南邮这款机器人内部的控制系统也是在开源软件的基础上改进而来,虽然具体用的哪款开源软件并不知晓,但我想借此机会给你们分享一些有趣的开源机器人项目,感兴趣的朋友能够本身动手 DIY 一个 AI 机器人。 github
PyRobot 是 Facebook AI 团队与卡耐基梅隆大学研究团队合做研发的开源机器人框架,基于 Facebook 的机器学习框架 PyTorch ,可以运行由 PyTorch 训练的深度学习模型。算法
PyRobot 基于机器人操做系统 ROS 提供了一组无关硬件的 API,供开发人员控制各类型号的机器人。PyRobot 抽象了硬件底层控制器与应用程序之间交互的细节,所以对于 AI 爱好者来讲,能够在不具有设备驱动程序、控制或规划等专业知识的状况下,使用各类机器人的通用功能,好比控制机器人关节的位置、速度或是力矩,甚至包括笛卡尔路径规画或是视觉 SLAM 等。编程
PyRobot 原生支持两款机器人,分别是低成本的 LoCoBot (就是上面动图里的那款)和 Sawyer (工业制造机械臂),感兴趣的朋友能够买一台 LoCoBot 来玩玩看(也能够在 3D 模拟器上玩)。固然,若是想用在本身 DIY 的机器人上,开发团队也提供了教程,能够接着往下看:详情点击。ubuntu
安装使用框架
使用 LoCoBotcurl
同时安装 PyRobot 和 LoCoBot 依赖项
1. 安装 Ubuntu 16.04
2. 下载安装脚本
sudo apt update sudo apt-get install curl curl 'https://raw.githubusercontent.com/facebookresearch/pyrobot/master/robots/LoCoBot/install/locobot_install_all.sh' > locobot_install_all.sh
3. 运行脚本安装全部内容(ROS、realsense 驱动程序等)。
4. 若是你已经拥有一台 LoCoBot 。运行如下命令:(请在运行如下命令以前将 nuc 计算机链接到 realsense 相机)
#-t Decides the type of installation. Available Options: full or sim_only #-p Decides the python version for pyRobot. Available Options: 2 or 3 chmod +x locobot_install_all.sh ./locobot_install_all.sh -t full -p 2
5. 没有真的 LoCoBot 也不要紧,能够在 Gazebo 这款 3D 模拟器上运行一个虚拟的 LoCoBot,测试各类机器人的算法。跳过第 4 步,运行如下命令:
#-t Decides the type of installation. Available Options: full or sim_only #-p Decides the python version for pyRobot. Available Options: 2 or 3 chmod +x locobot_install_all.sh ./locobot_install_all.sh -t sim_only -p 2
注: 若是安装了与 PyRobot 兼容的 Python 3 ,把上面的 -p 2
改为 -p 3
。
使用 DIY 机器人
安装 PyRobot
cd ~ mkdir -p low_cost_ws/src cd ~/low_cost_ws/src git clone --recurse-submodules https://github.com/facebookresearch/pyrobot.git cd pyrobot/ chmod +x install_pyrobot.sh ./install_pyrobot.sh -p 2 #For python3, modify the argumet to -p 3
兼容问题:因为 realsense 一直在更新,若是不当心从 ubuntu 中的软件更新程序更新了 realsense相关的软件包,可能会出现兼容性问题。所以,做者建议不要更新任何与 realsense 相关的库。当 ubuntu 提示软件更新时,请仔细检查更新列表。
新建 DIY 机器人配置文件
1. 建立一个新的配置文件
想要与新机器人交互的第一步是建立新的配置文件。首先配置文件名应遵循如下命名规则:<ROBOT_NAME> _config.py。建立此文件最简单的方法是继承 src / pyrobot / cfg / config.py 中的预约义配置。在 config.py 中,做者定义了 Robot 和 ARM 类所需的一些配置。此处的每一个配置都应指定适当的值。在 pyrobot / cfg / sawyer_config.py 中能够找到有关如何编写配置文件的示例。 sawyer_config.py 继承了 config.py 中定义的配置,並更改了这些配置的默认值。 sawyer_config.py 还显示了如何在配置文件中添加特定于新机器人的更多配置。
2. 继承 PyRobot 父类
下一步是继承现有的 PyRobot 父类(手臂,抓取器,基础,相机等)。在 src / pyrobot 中建立一个名为 <ROBOT_NAME> 的文件夹。根据新机器人拥有的硬件,建立一个名为 arm.py,gipperper.py,base.py 或 camera.py 的 python 脚本。例如,若是新机器人具备全部这 4 个组件,则应在上面建立 4 个文件。若是新机器人只有手臂和抓手,则应只建立 arm.py 和 nipper.py 。在每一个文件中,建立一个新类(类名称应该与 <ROBOT_NAME> _config.py 中的配置 CLASS一致)並继承 PyRobot 父类。
建议在父类中重用尽量多的方法,若是新的机器人不支持方法,则能够覆盖该方法,並在调用该方法时引起错误。整体而言,该库很是灵活,你能够覆盖任何方法。能够在 src / pyrobot / sawyer 中找到编写 arm.py 的示例。例如 Sawyer 机器人,只须要覆蓋命令发布功能便可使其代码与 PyRobot 兼容。
3. 编写单元测试
写完代码后,须要为新机器人编写单元测试。单元测试的示例能够在 tests / 中找到。
4. 添加示例
能够在 examples / 中添加示例。建立一个名为 <ROBOT_NAME> 的新文件夹,而后添加示例文件。
PyRobot 的下载地址:点击下载
若是以为购买 LoCoBot 的渠道太麻烦,能够试试这个国产项目。PHOENIXEngine 是一个能够用来开发机器人、游戏的引擎。集成 HectorSlam 算法为机器人室内导航,使用 A* 算法进行全局路径规划,使用 DWA 算法进行局部避障。该项目为国产项目,做者提供了一整套低成本的机器人物理组件。目前,PHOENIXEngine 已经支持 Windows、ARM、Linux、LinuxARM、iOS 平台,以 Lua 为主要开发语言,底层构建用的 C/C++,支持跨平台编译。
安装使用
该项目有比较完整的视频教程:
Part1 结构安装:https://www.bilibili.com/video/av70786355
Part2 系统安装:https://www.bilibili.com/video/av70788879
Part3 展现:https://www.bilibili.com/video/av71408115
PHOENIXEngine 的下载地址:点击下载
娱乐之余,若是你们想进一步学习和了解机器人相关的各类 AI 算法原理,推荐看看这个机器人算法库。PythonRobotics 是用 Python 实现的机器人算法案例集合,该库包括了机器人设计中经常使用的定位算法、测绘算法、路径规划算法、SLAM、路径跟踪算法。做者的初衷是但愿帮助 AI 爱好者更容易理解每一个算法的基本思想,选择的算法示例都是一些应用很是普遍的实用算法。强烈推荐给想要进一步了解和学习 AI 机器人相关算法原理的朋友。
部分算法案例:
机器人定位算法:
扩展卡尔曼滤波器(EKF)定位
这是使用扩展卡尔曼滤波器(EKF)的传感器融合定位。蓝线是真实的轨迹,黑线是推算的轨迹,绿点是定位观测(例如 GPS),红线是 EKF 的估计轨迹,红色椭圆是 EKF 估计的协方差椭圆。
无损卡尔曼滤波定位
这是一个使用无损卡尔曼滤波器(UKF)的传感器融合定位,线条和点与 EKF 模拟的含义相同。
PythonRobotics 的下载地址:点击下载
感兴趣的朋友不妨业余时间 DIY 一个 AI 机器人吧。