专栏首页GPUS开发者用Jetson TK1做一个可以抓取的机器人!

用Jetson TK1做一个可以抓取的机器人!

BunnyBot是一种基于ROS的机器人平台,可以使用其内置的抓取手臂和视觉系统来执行有用的任务!

目标

- 这个机器人可以自主导航,可以躲避障碍物,可以通过一个手臂夹取物品。

- 除了最初的导航阶段,不需要远程遥控或者手工输入。

- 多功能,可执行一些简单的任务

许可证

除非特定声明,代码和设计文件均基于BSD授权协议。(例如apriltags nodelet是采用的GPL协议)。

总体设计

机器人的核心功能是将一个标的物从一个地方移动到另外一个地方。这个标的物可以是一个需要传输的物体,也可以是一个工具(比如一个清洁垫或者一个粉刷工具)。机器人必须包含这种基础硬件可以实现这个功能。

机构设计

我使用的是单自由度的手臂和简单的平面抓手。相比采用更复杂的手臂/夹持器,这个有几个优点:

- 可以相当便宜使用3D打印机制作

- 不需要复杂逆运动学

- 减少了从关节间隙,更高的承载能力,更低的重量弯曲

深度相机被安装在背面,以尽量减少其检测盲区。其结果,机器人的主体被设计成楔形,从而当手臂低于相机的时候,有一个更通畅的视野。机器人的右侧有一个三角形镶嵌图案,这是一定程度上抵消由于手臂在该侧增加的重量。

视频内容

硬件

我已经经过了几个硬件的迭代,目前确认的配置如下:

- neato xv11 LIDAR 用于本地化

- intel realsense R200 深度传感器。这提供了物体检测的深度流以及一个1080的RGB流来检测基准

- Nvidia Jetson TK1 这是计算的主体。这个板子支持CUDA,能够比较轻易地处理计算视觉。

- Kobuki base 机器人平台,这是和Turlebot同样的base。这个base预装ROS,可以通过一个USB接口可以提供陀螺仪、里程计及其他传感器。

- Arduino uno 是驱动手臂/抓取器。虽然技术上TK1有GPIO,但Linux不是一个实时操作系统,并没有真正适合与PWM驱动电机。

- Actuonix/Fergelli P16 150mm 22:1 线性致动器以驱动手臂

- Polulu VNH5019 马达驱动器来驱动线性致动器

- MXL AC-404 麦克风。我用这个主要是因为ROS网站推荐。

软件

我使用ROS作为软件框架。这个项目大部分的困难都通过各种ROS包来解决。下面是我用的ROS :

gmapping - 使用SLAM来建立一个环境地图。

robot localization, AMCL - 通过LIDAR数据、车轮里程计和陀螺仪读数等本地化地图。

ROS navigation - 规划路径到地图上的路标

RTAB-map obstacle detection - 侦测障碍物,并绕开它。

pi_trees - 利用决策树建立高层次决策。

pocket sphinx - 语音识别

还有其他的。可以登录github 查看更多。

有些任务是没有现成的包,所有有些情况我需要自己写ROS包:

gpu_robot_vision - 使用TK1的 GPU去执行一个简单的CV任务,包含了图像识别、黑白/彩色转换、 缩放和降噪滤波器等

apriltags_nodelet - 一个nodelet 用于输出一个来自矫正和降噪的RGB流的基准标识列表 april_tf -将这些标识作为输入,同时输出在地图框架中转换的同样的标识。通过将其写入到文件坚持观察,并且输出一个目标为ROS导航姿势来规划到标记的路径

april_planner - 发出精确的运动,基于所检测的标记物的相对移动来对机器人发起一个精确的运动。

depth_object_detection - 这个主要用于检测我的手,打开或者关闭夹持器。

安装

- 得到一个备用机,并安装ubuntu14.04

- 刷你的TK 板子,确保WIFI工作

- 用UVC安装客制化内核

- 安装ROS和传感器的驱动

- 安装这些ROS包(通过 apt-get获得)

rosserial_python xv_11_laser_driver laser_filters kobuki yocs_velocity_smoother map_serverrtabmap_ros amcl pocketsphinx gmapping navigation pi_trees

- 建立你的ROS环境,生成一个工作区域。

- git clone https://github.com/Jack000/bunnybot 到你的工作区域,同时 catkin_build

- 复制 bunnybot的内容/加载到你的home directory

- 复制 bunnybot/launch/bunnybot.py到 the package directory of pi_trees_lib

本文涉及到软硬件规格和代码,请点击阅读原文,了解详细信息!

本文分享自微信公众号 - 吉浦迅科技(gpusolution),作者:Jack Qiao

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用Jetson NANO做个机器狗?

    注意是“准备”阶段....Wilk表示:This Project is heavily work in progress and may change ever...

    GPUS Lady
  • DAY35:阅读流程控制语句

    GPUS Lady
  • 有人对比测试Google Coral Edge TPU和NVIDIA Jetson Nano,结果居然是....

    我在这里会附上他的测试结果,实际我认为国内某些公众号会把这篇文章翻译成中文(现在TPU和Nano都是炙手可热的热点啊),所以我就先撕为敬!

    GPUS Lady
  • 微信 iOS SQLite 源码优化实践

    本文将分享在 SQLite 源码上进行的多线程并发、I/O性能优化等,并介绍优化相关的 SQLite 原理。

    微信终端开发团队
  • 机器人感知-视觉部分(Robotic Perception-Vision Section)

    今年参加了ROS机器人暑期学校的交流分享,非常感谢组委会的邀请和易科的支持,虽然讲稿准备了一段时间,但是依然感觉没有讲好,在博文中再具体写一下。

    zhangrelay
  • 调研400家企业的IT决策者:增加安全预算、采取混合IT环境成首选

    451 Research调研了400家大型公司的IT决策者,了解他们所处组织面临的网络安全现状、施行的安全计划,了解企业如何适应新兴技术进行数字化转型。

    FB客服
  • 数据告诉你,魔都到底算谁的地盘?

    《上海女子图鉴》的开播,让我们再一次把目光对准了“沪漂”。远离家乡,“沪漂”们信誓旦旦地要在魔都闯出一片天。可是,当我们说起“上海人”的时候,究竟在说谁?“上海...

    DT数据侠
  • EKT多链技术谈 | EKT如何实现区块链世界的“用户共享”

    在区块链系统中,用户体系是一个非常非常重要的部分。为什么这么说呢?因为它直接决定了一个区块链项目上用户的资产安全。接下来我会从技术角度详解——EKT的用户体系为...

    风中凌乱的靓仔
  • 基于意图的网络(IBN):如何降低网络的复杂性?

    在过去的十年里网络经历了各种各样的变革,变得复杂且难以管理,很难继续使用传统的机制。因此现在迫切需要对来自多个供应商的设备进行设计和集成,并采用虚拟化和云服务等...

    SDNLAB
  • 修改 mysql/oracle/bash/vimrc/cmd 提示符格式与颜色

    (1)修改mysql提示符: MySQL 客户端的默认提示符是 "mysql>",基本上没什么实际作用。其实可以修改这个提示符,让它显示一些有用的信息,例如当前...

    用户1177713

扫码关注云+社区

领取腾讯云代金券