ROS 学习笔记之二:准备

    因 ROS  是基于 linux 的,需要安装 ubuntu 系统,所以首先要准备一下 PC 环境。

    由于不熟悉 Linux 操作,即便是图形化界面的 ubuntu ,也是用起来很不适应。因此计划将 ubuntu 安装在 win10 下的虚拟机中,通过切换使用 windows 作为下载、查阅资料的工具,用共享文件夹传递文件,毕竟 windows 下的工具软件较多,关键是我只熟悉这些。

    为了避免虚拟机运行太慢,首先优化了 PC 的硬件环境,加装了一个 240G 的固态盘(赶上固态盘近期降价,200元搞定),用来安装虚拟机。将内存从 8G 扩大到 16G,我想这样应该可以了,不知道是否能满足 ROS对硬件的要求?

    硬件准备好了,开始着手安装 ROS 软件环境。

    因为 linux 太生疏,基本概念模糊,所以看 ROS 资料时总感觉有点“飘”,理解不透,找了一个入门级的资料作为上手指南:《机器人操作系统(ROS)浅析》,从百度文库中找的:
https://wenku.baidu.com/view/a0d3d1ebf12d2af90342e616?pn=1 
    花了几天时间将此书浏览了一遍,大致有个全貌后开始安装软件。

    我倾向于根据具体需求确定学习的内容。

    目前我的需求主要是希望能将基于嵌入式(单片机)所做的小车接入到 ROS 系统中,可以借助于 ROS 丰富的资源,完善我所不熟悉、也不擅长的小车上位机控制功能,如基于 SLAM 的导航、图像识别等。通过这个过程,消化 ROS  的分布式控制理念,看看在其它嵌入式应用场景中可否借鉴,比如说智能家居,可否将一个家庭的所有控制看成一个机器人系统,将布置智能设备作为 ROS 的 node,从而降低系统集成的难度,便于快速增加功能。

    浏览完了《机器人操作系统(ROS)浅析》,有点似懂非懂,决定跟随书中示例操作一遍,期望能通过感性认识加深理解。于是,按照书中所述,第一步安装了 ubuntu 14.04,及对应的 ROS indigo 版本。还算顺利,其间对照 ROS 官网辅助理解一些操作,顺利完成了 ROS 软件环境的安装,并且按书中的示例实践了,体验了一下 ROS 程序的工作模式,有点意思。 

    可这本书也就到此为止了。

    开始寻找后续的书籍,继续探索!

    网上搜了一遍,发现太多,无从选择,想起以前 Top 给我的一些资料还存在磁盘中呢,于是在里面查阅了一下,被这本吸引了:《ROS_ROBOTICS_PROJECTS》:

 


    因为从目录上看到以下两段内容很感兴趣:
 


以及:
 

 
    首先,嵌入式(单片机)系统接入 ROS 是我最想了解的,书中正好有相应的内容,而且涉及了我用过的两种硬件平台:Arduino 和 STM32。

    其次,我之前做过一种小车,用单片机构成小车控制器,用手机作为小车上的上位机:
 

 
    因为手机上资源较丰富,有摄像头、无线通讯通道,这些都是小车需要的。当初我是用 Processing 在 Android 手机上实现了图像采集和上传,但后续没有能力去做了。本书中恰好提及可以将 Android  手机接入 ROS,作为 Node,并且有摄像头采集、传输图像的示例,兴奋!立马将此书作为第二本参考书。

    我是想将环境全部安装好后,再一步步的学习。

    所以首先研究了嵌入式控制那一章,按书中指导安装了 rosserial 及 Arduino 相关的环境,还算顺利,按书中例程,实现了 Arduino 和 ROS 的通讯。

    在安装 Arduino IDE 过程中,发现 Arduino IDE 环境改进巨大。在我接触 Arduino 时,还只能支持 AVR 单片机,那时 STM32 已经问世,相对于 Mega328, STM32F103C8 性能强多了,所以没有深入,觉得 Arduino 这个平台实用性欠佳。

    但现在发现,Arduino 的 IDE 已经可以接入很多主流的单片机了,就连略显小众的 nRF52832 都有,主流的 STM32 更是支持了 Nucleo 全系列板。不知道在 Arduino 环境下是否能发挥出这些芯片原有的性能,甚是期待……

    STM32 接入 ROS 是基于 MbedOS,之前就尝试过,这次再次接触,易于理解多了,只是它的在线编译器必须接上支持的开发板才能工作,没有实现示例。
    准备买两块 nucleo 板研究。初步准备选择一个主流的 Nucleo STM32F103RBT6,因为我之前的小车控制器用的就是 STM32F103RBT6。另一块打算选择 STM32 的高端芯片 :Nucleo STM32F767ZI,这是 STM32 Nucleo板中最强的一款。选择它一是因为 OpenMV V3 及 turtleBot3 的控制器 OpenCR 用的都是 F7 系列,想用这个涵盖这两个应用 ,以便在后期逐步体验一下,OpenMV 是嵌入式视觉的开源项目,而 OpenCR 是经典的基于 ROS 的机器人控制板 (OpenCR 控制器卖的好贵,好像在1000左右,nucleo STM32F767ZI 只要180左右,看看能否在上面实现 OpenCR。)。

    如要在 ubuntu 中安装 Arduino IDE 环境,建议自己从  Arduino.cc 上下载最新版本(现在是 1.8.8)的,解压安装,不难。只有最新版才支持开发板管理,引入 AVR 以外的芯片。用 apt-get install 安装的是1.1版本,太老了。
    估计 Arduino 涵盖的内容越来越多,安装后居然占用了  550M 左右空间。

    在按照本书安装 Android 相关软件时,遇到了不少麻烦。
    先是按照书中提示,不需要安装 Android studio ,只需 SDK 即可,单独安装后发现 JAVA版本不够,ubuntu 14.04 自带的 JAVA 是 1.7 的,需要升级为 1.8,折腾了半天,边搜边装,总算搞定 JAVA 了。
    单独的命令行 SDK_tools 安装后,发现新版的不再支持SDKmanager的图形界面了,只能用命令行模式增减,太费力了,尤其对我这种 linux 菜鸟而言,只好按 Android官网提示安装了 Android studio。

    搞定了 Android ROS 的基础,开始安装 Android Core,四步中最后一步:catkin_make 死活无法完成,总是提示出错,无语!

    结合前面所遇到的问题,我认为应该是版本升级所致,问题应出在我所选择的 ubuntu 14.04 和 ROS indigo上,这两个版本都是两代前的了,虽说是LTS(长期支持版),但 Android Core 属于分享的,估计支持未必完善。

    一跺脚,全部删了重来!
    安装最新版的 ubuntu 18.04 及 ROS melodic!

    在前面的安装过程中,过分依赖书中内容,遇到不少问题,估计是因为书出的比较早,软件都在不断升级,所以写书时的操作方式估计现在不对了。所以这次我全部按 ROS 的官网内容操作。

    顺利完成了 ubuntu18.04 的安装!
    顺利完成了 ROS melodic 的安装!
    顺利安装了最新版的 Aduino 1.8.8,不过在新版 ubuntu 中,串口通讯倒是费了点周折:接上后系统认得串口为 ttyUSB0,可 Arduino IDE 打不开,百度上说是要将自己的用户加入到串口所在的 Group中,按此操作后,串口是认识了,也能通讯,可程序下载不成功!
    再搜,说是需要修改串口的权限,用 chmod 777 /dev/ttyUSB0 ,按此实施后,总算成功了,看来 linux “坑”很多啊 :-(

    下一步着手安装 Android 环境了,兴致勃勃打开ROS官网 Android 部分,一盆冷水从头浇下:Android core 目前只支持 ROS kinetic,悲催啊!还是怪我没有全面看清资料。

    只好再重装系统!好在是安装在虚拟机上,固态盘还够大,再装一台,保留 ubuntu18.04,因为装的是64位的,说不定什么软件有需要。

    重装只能安装 ubuntu16.04,因为 ROS kineric 只能安装在这个版本上。

    因为在前面安装 Android 时,好像有些需要支持 32 位的软件库,这次干脆就安装 32 位版本的 ubuntu 。

    短短一周不到,我已经是第三次安装 ubuntu 系统了,看来是老天要让我通过这种方式熟悉 linux 啊!

    这次安装 ubuntu 更顺利了,用百度云盘,下载比直接从 ubuntu 官网下载快了很多。
    顺利安装后着手安装 ROS Kinetic,也算顺利,如果说有点不顺,就是:
    在 ubuntu18.04 下安装 ROS 时,可以直接将 Windows下 Chrome 页面中的内容直接拷贝到 ubuntu 终端中,直接执行!
    在 ubuntu16.04 中,拷贝不过来,只能对照着网页内容敲键盘,有的命令很长,我又不是很熟悉,所以搞错了几次!不知道是这一版 ubuntu 的局限性,还是我什么地方设置不对?

    满怀希望开始安装 Android 环境,这次不用再走弯路,直接安装 Android Studio,可还是遇到了麻烦,按 ROS 官网提示,解压在 /opt 目录下,可碰到权限问题,对此概念理解不透,所以折腾了几遍,而且在安装 SDK 过程中,又问了一些我不明白的问题,胡乱选择后 SDK 给装到了 /root/Android/sdk 目录下,实在不便。尝试将其移动到 /opt/android_sdk 目录下,几经周折,总算如愿安装好了。

    开始安装 ROS 需要的 Android core,结果还是在最后一步 catkin_make 遇阻,看提示好像是编译那些例程时没有通过,改变 SDK 环境多次,仍未消除,看来依我目前的功力是无法化解了,网上也未找到答案,以前认识的高手很久未联系,不好意思贸然打扰,而且按我现在这个水平,估计人家回答了我也听不明白,还是暂时搁置吧,先集中精力搞定 Arduino 和 STM32!

    到此,可以开始准备学习基于 ROS 的编程了。

    不过在此之前,想要再落实一下:既然 Arduino IDE 可以支持 STM32 板,是不是可以用支持 Arduino 的 ROS 库在STM32板上编程,还需尝试一下,准备先买一块 nucleo STM32F03RB 试试。如果有高手做过此类尝试,还望指点 ^_^

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值