之前我们公众号报道了一个项目,看这个天才老爸如何用Jetson NANO做一个带娃机器人, 文章中的爸爸叫:
当时他做这个项目的时候, 他的宝宝是21个月。
眼看娃娃就2岁半了,愈发地活泼可爱及调皮。
他发现自己的宝宝特别爱模仿老鹰展翅飞翔,于是灵机一动,开发了一套老鹰飞翔模拟系统,让自己的娃可以像老鹰一样体验飞行。该系统使用NVIDIA Jetson AGX Xavier,姿势估计AI模型,用OpenGL编写的游戏引擎和手势识别系统构建。
整个项目可以访问:
https://github.com/msubzero2000/Griffin-public
我们可以先感受一下他的成果:
显然这个系统需要的算力不小,所以这位宝爸这次选用了NVIDIA AGX Xavier开发套件:
并使用了一个摄像头:Sony IMX327
(注意哟,他是通过一个转接板接的摄像头,但在他的教程里并没有提到这个转接板)
这个系统还需要突破几个关键技术:
3D 游戏引擎:藉助一个用 OpenGL 写成的飞行仿真器生成带有山脉、天空和老鹰 的 3D 魔幻世界。
人体姿态估计:使用OpenPose 姿态估计模型和 SSD 目标检测模型来持续检测玩家的身体姿态,作为系统的输入,以控制老鹰。
动作映像和手势识别:将身体姿态转化为有意义的动作和手势,如抬起左 / 右翅膀、左右翻滚身体、起飞等。
通信系统:使用socket 将姿态输入送进 3D 游戏引擎。
在 C++ 中,他们简单地使用sys/socket 库,而在 Python 中,可以使用socket 框架。从现在开始,他把手势识别和 姿态估计模块称作 Python app,该客户端发送五种信息:roll_target、lwing_target、rwing_target、body_height 和 game_state。把 3D 游戏引擎称为 C++ app,充当监听并不断接收上述信息的服务器。
校准与测试
准备就绪后,这位宝爸设置了老鹰系统以执行校准和测试。这套系统在执行所有实时 3D 渲染和 姿态估计时一直都保持在 60FPS 的帧率,看来英伟达的 Jetson AGX Xavier 性能强大不是说说而已。
以下是宝爸的项目总结: 构建这样一套系统让我学到了很多,同时获得的乐趣也很多。总体来说我学到了:
-Torch2trt 是一个很强大的工具,可以自动将 PyTorch 模型转化为 TensorRT 版,让 AI 模型在 Jetson AGX Xavier 上运行地更快。很多最先进的 AI 模型都是用 PyTorch 构建起来的,但手动将它们移植到 TensorFlow 上可不是好的体验。
-英伟达 Jetson AGX Xavier 的性能非常强大!很多人说它可以实时处理 30 个 1080p 视频流的计算器视觉模型处理任务,看来的确是这样。
-亚马逊 SageMaker JumpStart 提供了大量流行的 AI 模型,并让它们非常易于部署。
-构建 3D 游戏引擎的经历让我重拾之前作为游戏和电影 SFX 开发人员的经历,再次用起了生疏的 OpenGL、C++ 和三角学方面的技能。
-说到动作识别游戏,人们自然会想到 Xbox——我本可以用 Unity 引擎和 Kinect 传感器在 Xbox 上构建一个 Griffin,但是这样不就没有太大意义了吗?有时从头构建一套系统纔是乐趣所在。
-扮演老鹰是一个很累的工作,尤其是长时间抬起手臂这件事。不过真正的老鹰是通过上升气流获得帮助并滑翔在天空中的。
整个完整的项目说明可以访问:
https://agustinus-nalwan.medium.com/making-my-toddlers-dream-of-flying-come-true-with-ai-tech-85e40d7144a2
看看Xavier开发套件还能做什么: