画风引发热议,用开源机器人项目实现“云毕业典礼”
前几天,南京邮电大学的一场毕业典礼引起了吃瓜群众的热议,先来看看这个画风:
由于疫情原因,很多高校的学生只能在家里通过线上视频的方式完成毕业论文答辩。答辩通过后,毕业典礼就要来了,但疫情原因还不能返校怎么办?毕竟毕业典礼一生可能就这一次,仪式感还是要有的!于是南京邮电大学就用自研的机器人,为部分无法到场的毕业生整了这么一出画风清奇的“云毕业典礼”。
据南邮的老师介绍,毕业典礼上的这些机器人出自学校的机器人创新团队之手,是在以前参赛机器人的基础上改装的。这次改装主要是为机器人配置了与真人身高相仿的模型,现场由专门的同学对机器人进行远程控制,屏幕则是用 ZOOM 与参加毕业典礼的同学进行视频交互。这个由南邮学生组成的机器人团队曾在国内外各大机器人竞赛中获得不错的成绩。
其实现在的 AI 技术已经非常成熟且亲民,就算是编程能力不太强的同学也可以玩转很多 AI 工具,比如很多好玩的开源机器人项目。据悉,南邮这款机器人内部的控制系统也是在开源软件的基础上改进而来,虽然具体用的哪款开源软件并不知晓,但我想借此机会给大家分享一些有趣的开源机器人项目,感兴趣的朋友可以自己动手 DIY 一个 AI 机器人。
PyRobot
PyRobot 是 Facebook AI 团队与卡耐基梅隆大学研究团队合作研发的开源机器人框架,基于 Facebook 的机器学习框架 PyTorch ,能够运行由 PyTorch 训练的深度学习模型。
PyRobot 基于机器人操作系统 ROS 提供了一组无关硬件的 API,供开发人员控制各种型号的机器人。PyRobot 抽象了硬件底层控制器与应用程序之间交互的细节,因此对于 AI 爱好者来说,可以在不具备设备驱动程序、控制或规划等专业知识的情况下,使用各种机器人的通用功能,比如控制机器人关节的位置、速度或是力矩,甚至包括笛卡尔路径规画或是视觉 SLAM 等。
PyRobot 原生支持两款机器人,分别是低成本的 LoCoBot (就是上面动图里的那款)和 Sawyer (工业制造机械臂),感兴趣的朋友可以买一台 LoCoBot 来玩玩看(也可以在 3D 模拟器上玩)。当然,如果想用在自己 DIY 的机器人上,开发团队也提供了教程,可以接着往下看:详情点击。
安装使用
-
使用 LoCoBot
同时安装 PyRobot 和 LoCoBot 依赖项
1. 安装 Ubuntu 16.04
2. 下载安装脚本
sudo apt updatesudo apt-get install curlcurl '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 3chmod +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 3chmod +x locobot_install_all.sh ./locobot_install_all.sh -t sim_only -p 2
注: 如果安装了与 PyRobot 兼容的 Python 3 ,把上面的 -p 2 改成 -p 3 。
-
使用 DIY 机器人
安装 PyRobot
-
安装 Ubuntu 16.04
-
安装 ROS kenitc
-
安装 PyRobot
cd ~mkdir -p low_cost_ws/srccd ~/low_cost_ws/srcgit clone --recurse-submodules https://github.com/facebookresearch/pyrobot.gitcd 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 的下载地址:点击下载
PHOENIXEngine
如果觉得购买 LoCoBot 的渠道太麻烦,可以试试这个国产项目。PHOENIXEngine 是一个可以用来开发机器人、游戏的引擎。集成 HectorSlam 算法为机器人室内导航,使用 A* 算法进行全局路径规划,使用 DWA 算法进行局部避障。该项目为国产项目,作者提供了一整套低成本的机器人物理组件。目前,PHOENIXEngine 已经支持 Windows、ARM、Linux、LinuxARM、iOS 平台,以 Lua 为主要开发语言,底层构建用的 C/C++,支持跨平台编译。
PythonRobotics
娱乐之余,如果大家想进一步学习和了解机器人相关的各种 AI 算法原理,推荐看看这个机器人算法库。PythonRobotics 是用 Python 实现的机器人算法案例集合,该库包括了机器人设计中常用的定位算法、测绘算法、路径规划算法、SLAM、路径跟踪算法。作者的初衷是希望帮助 AI 爱好者更容易理解每个算法的基本思想,选择的算法示例都是一些应用非常广泛的实用算法。强烈推荐给想要进一步了解和学习 AI 机器人相关算法原理的朋友。
部分算法案例:
机器人定位算法:
扩展卡尔曼滤波器(EKF)定位
这是使用扩展卡尔曼滤波器(EKF)的传感器融合定位。蓝线是真实的轨迹,黑线是推算的轨迹,绿点是定位观测(例如 GPS),红线是 EKF 的估计轨迹,红色椭圆是 EKF 估计的协方差椭圆。
无损卡尔曼滤波定位
这是一个使用无损卡尔曼滤波器(UKF)的传感器融合定位,线条和点与 EKF 模拟的含义相同。
PythonRobotics 的下载地址:点击下载
感兴趣的朋友不妨业余时间 DIY 一个 AI 机器人吧。