立即注册 找回密码

微雪课堂

搜索
微雪课堂 机器人操作系统(ROS) 查看内容

ROS基础系列教程2:ROS环境的搭建

2020-9-12 23:12| 发布者: waveshare_yf| 查看: 435| 评论: 0|原作者: waveshare|来自: waveshare

摘要: 在我们的上一节当中,主要的给大家阐述了机器人的相关概念,以及ROS是个什么东 西。从本节课开始,我们将开始ROS系统的基础学习。本节课内容——安装ROS系统。 ROS系统依赖于Ubuntu系统 ROS系统是在Ubuntu系统下的 ...
  • 在我们的上一节当中,主要的给大家阐述了机器人的相关概念,以及ROS是个什么东 西。从本节课开始,我们将开始ROS系统的基础学习。本节课内容——安装ROS系统。

ROS系统依赖于Ubuntu系统

  • ROS系统是在Ubuntu系统下的一个软件平台,我们此次的教程设计是针对于ROS-I的开发,所选用的环境是Ubuntu18.04+Melodic的方式。无论是树莓派,还是JetsonNano,或者是虚拟机、系统U盘等等,安装的步骤都是一样的。此次安装,是在VMwaveWorktation15.X的虚拟机下面,安装Ubuntu 18.04 LTS版。

下载并安装VMwave Worktation

  • 虚拟机是利用软件来模拟出完整计算机系统的工具。具有完整硬件系统功能 的、运行在一个完全隔离环境中。虚拟机的使用范围很广,如未知软件评测、运 行可疑型工具等,即使这些程序中带有病毒,它能做到的只有破坏您的虚拟系 统,大可不用担心它伤害您的物理机电脑。因为虚拟机是一个完全独立与您主机 的操作系统。现在主流的Windows操作系统是win7和win10,当您遇到与您操 作系统不相兼容的程序时,虚拟机就可以帮您解决了这些麻烦。还有想体验 Windows和Linux双系统的用户,选择VM虚拟机更非常方便就能实现。
  • 关于虚拟机的安装步骤,我们不再给出教程。如果不会的同学,可参考下面 的传送门。 https://jingyan.baidu.com/article/6079ad0ec6275928ff86dbb7.html

使用开发板学习的相关推荐

  • 当然,如果你的电脑性能较低的情况下,我并不建议你去安装虚拟机,否则安装好的虚拟机系统也是十分卡顿,无法进行相关学习。我推荐大家可以购买我们微雪电子的树莓派开 发者套件,或者是英伟达Jetson Nano开发者套件,传送门如下。
  • 如果是购买开发板学习的同学,切记一定要有一块HDMI屏幕,远程开发固然方便,但 是没有屏幕来的刺激.
  • 今年的ROS暑期学院不知道有没有小伙伴参加呢?有的话相信大家也了解到ROS的云 开发了吧,没错,在云服务器部署ROS,控制机械臂啊、小车啊、无人机啊等等。但是云服 务器的价格是相对较高的(即使你有高校认证)。对于这样的场景下呢,大家可以选购我们 微雪电子的4G扩展板,传送门如下。




树莓派4G扩展板





英伟达Jetson Nano 4G扩展板

  • 当然,最后给我们的设备装备一个UPS电源功能就更加完美了,传送门如下。




树莓派UPS扩展板





英伟达Jetson Nano UPS扩展板

  • 注意,大家选购UPS电源的使用,一定选择可以边充边放的这一种,不然你在充电和取 消充电的一瞬间,板子可能小命不保。
  • 最后,给大家展示一下我们英伟达Jetson Nano在“三板合一”下的容颜。




英伟达Jetson Nano三合体

  • 啊哈?!你问我加了4G模块有啥用?既然你诚心诚意的发问了,那我就大发慈悲的告 诉你。
  • 如果你是树莓派的资深玩家,那么相信你对Putty和WinScp两个“神器”一定不会陌 生。没错,就是远程开发!
  • 我们可以在搭载了4G模块的开发板部署一个公网的环境,通过公网远程登录的方式来 开发我们的程序,从此你也多了一台Ubuntu操作系统的公网服务器,当然想玩服务器的小伙伴们,大家可以去买一块硬盘加在我们的开发板上面,我们微雪电子后期也将会发布关于 Jetson Nano的硬盘扩展板来供大家选购。当然,你也可以选择购买多块板子,搭建一个 K8S集群来提升我们的算力。
  • 最后的最后,给大家推荐一款程序猿的维护服务器的“神器”——JuiceSSH。和Putty一样,也是一个通过IP和22号端口远程登录的软件,是一款让你下班到家都能继续维护公 司网站的APP(PS:吐槽一下下┐(‘~`;)┌)。大家可以去应用市场进行下载使用。




JuiceSSH远程登录树莓派

在VMwave Worktation下安装Ubuntu 18.04操作系统





  • 我们需要下载的是Desktop桌面版,LTS是通用版本的意思,如果没有LTS版本的,其 他版本也可以。
  • 下载之后打开我们的虚拟机软件,文件,新建一个虚拟机。




  • 这个时候会打开一个新建虚拟机向导,我们可以按照提示逐步安装。在这里,我们以自定义的方式逐步进行安装。点击下一步。




  • 在这里出现的是关于兼容性的一个选择,有的小伙伴可能使用我们配置好环境的虚拟机,那么这个时候就要注意兼容性的问题了,我选择的是我目前这个版本的最高兼容性Workstation 15.X。继续点击下一步。




  • 这里出现的就要选择一个镜像文件啦,在安装程序光盘映像文件(ISO)这一选项下,选择我们下载好的镜像文件即可。继续点击下一步。




  • 这一步是设置我们Ubuntu系统的设备名、用户名、密码,我的设备名和用户名是W(w)aveS(s)hare,密码为123456。(用户名字母无法大写,这是一个悲伤的故事。(๑ó﹏ò๑))继续点击下一步。




  • 这里设置一下我们虚拟的名称和虚拟机的位置,大家一定要找一个空闲空间大的位置进 行安装。继续点击下一步。




  • 这里设置我们虚拟的处理器数量和每个处理器的内核数,这个配置和你的计算机硬件有关,尽量往大了选,结合自己电脑的性能选择。继续点击下一步。




  • 接下来就是内存了,还是老样子,在推荐内存下,尽量往大了选。继续点击下一步。




  • 到这里时配置我们虚拟机的网卡情况,我们选择NAT网络地址转换功能,保证虚拟机和主机处在同一网段下。接下来你可以一直选择默认,点击下一步。




  • 到了选择磁盘这个位置我们停下,这里是虚拟一个磁盘或者直接使用物理硬盘的一个选择,我的虚拟机会分享给大家,所以我选择创建新的虚拟磁盘。继续点击下一步。




  • 这个位置是设置我们虚拟机的一个磁盘容量,软件推荐的20GB有点不够用,所以我直接选择40GB。这里值得注意的是,你在这里选择40GB的空间,那么你就要保证你的虚拟机所在的位置一定要有这么大的空间,不然将创建失败。继续点击两次下一步。




  • 到了这里,我们虚拟机的配置就可以说是完成啦。接下来点击完成,虚拟机会自动启动。








  • 针对于电脑性能的不同,这个时间可能有长有短,大家可以倒杯水休息一下。

Ubuntu 18.04系统配置





  • 在虚拟机启动之后的界面应该是这样的,我们选择之前建立的账户,输入密码即可登录。
  • 我们需要先修改Ubuntu系统的时区,在设置,Details,Data & time。我们需要在出现地图上面选到一个中国的点,我选择的是上海。




  • 接下来是对Ubuntu系统进行还源操作,我们在使用Ubuntu的时候,所访问的大部分数据和下载的软件资源都是在国外的,这就导致了下载速度异常的缓慢。我们国家同样也对Ubuntu系统有着支持和维护,特别是高校,在这一领域做出的贡献有位突出。为例提升下载和更新的速度,我在这里把我的Ubuntu镜像源换成国内清华大学的源。
  • 源这个概念可能对初学者比较陌生。大家都用过手机的应用市场吧,我们可以从应用市场下载APP在我们的手机上面便捷的使用,在Ubuntu系统下,我们也是有一个“应用市场”——apt。在我们需要下载程序的时候,sudo apt-get install 软件名即可进行安装。源,软件源,也就是这个软件仓库的数据,我们可以通过sudoapt-getupgrade更新我们的一个“应用市场”中已经安装好的所有软件;源列表呢,就是你这个“应用市场”里面都有哪些软件,是软件名称的一个列表。(PS:以上表述可能并不完全正确,但是对于初学者入门是足够的。有兴趣的朋友可自行查阅相关资料。)
  • 我们点击Ubuntu左下角的9个点,这个是类似于Windows键的一个功能,找到 softwave & update选项,打开。








  • 在Download from选择other,找到china列表,选择一个即可,点击Choose Server。我所选择的是tsinghua(清华)。




  • 然后点击close,点击reload,静静等待,它需要先下载好资源才能切换到国内。




  • 更好之后,按下Ctrl+Alt+T组合键,打开一个黑窗口(终端),输入
    sudo apt‐get update && sudo apt‐get upgrade ‐y
    
    进行源列表和源的一个更新。




  • 更新好之后是这样的。接下来我们进入配置Ubuntu系统的最后一步,汉化和安装中文输入法。由于已经更改好了国内的镜像数据,速度会快很多。
  • 我们先打开设置,找到Region&Language选项,然后点击下面的Manage Installed Language进行中文语言包的安装。




  • 在下面的这个界面,我们选择Installl/Remove Language,找到 Chinese(simple)。




  • 静静等待。下载好之后,将选项汉语(中国)拖动至顶层,然后点击Apply System-Wide(应用到系统全局),最后点击关闭,重启虚拟机。




  • 重启之后会有个名称是否更改,我们选择保留旧名称。到这里为止,我们的汉化就已经成功了。最后是安装我们的一个中文输入法fcitx,打开终端,输入下面指令。
    sudo apt‐get install fcitx fcitx‐googlepinyin fcitx‐module‐cloudpinyin fc itx‐sunpinyin ‐y
    
  • 安装好之后的,接下来我们还是打开语言设置选项,更改输入法位fcitx(默认是 IBus)。




  • 更改好之后,重启系统,通过使用Ctrl+空格的组合键方式即可实现中英文切换。




  • 我们的Ubuntu系统基础配置到此结束。此方法也适用于英伟达Jetson Nano、树莓派 (Ubuntu系统)等进行配置。

    安装ROS Melodic

  • 在安装ROS之前,我们需要进入ROS的官网,大家可以直接复制官网的下载指令进行安装。
  • 传送门如下。 Ubuntu + ROS Melodic官方安装介绍: http://wiki.ros.org/cn/melodic/Installation/Ubuntu

    第一步,配置ROS软件仓库

  • 打开终端,输入下面指令。
    sudo sh ‐c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release ‐s c) main" > /etc/apt/sources.list.d/ros‐latest.list'
    
  • 同时我们也需要增加一个密钥。指令如下。
    sudo apt‐key adv ‐‐keyserver 'hkp://keyserver.ubuntu.com:80' ‐‐recv‐key C 1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    
  • 我们的Linux在安装软件的时候,需要通过源列表去寻找对应的一个软件,Ubuntu默认的软件列表是没有ROS的,我们需要把packags.ros.org这样的一个网站给配置到我们的软件仓库列表内才能下载ROS,不然显示的是没有这个软件(因为你的软件列表,也就是源 列表没有)。
  • 配置公网密钥,这一步是确保我们的系统认为这个路径是安全的,下载文件是没有问题的。不然下载的东西会立刻被清除掉。




  • 或者使用国内提供的ros源:
    sudo sh ‐c '. /etc/lsb‐release && echo "deb http://mirrors.ustc.edu.cn/ro s/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros‐latest.lis t'
    
    wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key ‐O ‐ | sudo apt‐key add ‐
    

    第二步,安装ROS Melodic

  • 我们在加入了新的源之后,需要对源列表进行一次更新,在终端输入sudo apt-get update即可进行更新。然后我们通过apt指令进行下载安装ROS,指令如下。
    sudo apt‐get install ros‐melodic‐desktop‐full
    
  • 我选择是是安装桌面完整版,如果你使用了树莓派Zero,又或者是友善之臂等这一类性能不强的板子,你可以只安装基础版。每个版本的性能介绍可参考下图。




  • 接下来就是等待,可以喝个茶休息一会。虽然我们换的国内的源,但是考虑到是虚拟机和网络状态的影响,这个时间长短不是很固定,但是一两分钟肯定还是要有的。

第三步,配置ROS环境到系统

  • 在你使用 ROS 之前,需要初始化 rosdep。rosdep 让你能够轻松地安装被想要编译的 源代码,或被某些 ROS 核心组件需要的系统依赖。 在终端依次输入下面指令。
    sudo rosdep init 
    rosdep update
    




  • 如果你的rosdep出现问题显示无法链接到网站,那么你需要在你的/etc/hosts文件内,增加一个IP接口就可以解决这个问题。或者你可以直接写一个sources.list.d的源列表文 件,都是可以的。




  • 关于rosdep的问题,可参考下面链接。
    https://blog.csdn.net/u014662384/article/details/106916673?utm_medium=dis tribute.pc_relevant.none‐task‐blog‐BlogCommendFromMachineLearnPai2‐1.channe l_param&depth_1‐utm_source=distribute.pc_relevant.none‐task‐blog‐BlogCommen dFromMachineLearnPai2‐1.channel_param
    
  • 在这个位置一定保持网络良好,不然一定会失败。如果在尝试换网无效之后,也可以直接跳过这一步(能安装上的尽量安装上)。
  • 我们经常会碰到其他ROS版本的代码往我们的环境下面用,但是版本不同很可能会出现不兼容,甚至是一些玄学BUG,而rosdep就是来解决这个问题的。最重要的里面有一些ROS和其他工具链接的插件,如果无法安装,则可能导致部分软件安装失败(亲测,如果这个一步没有成功,Anaconda的环境会和ROS Python起冲突)。
  • 关于ROS的启动,我们需要在启动终端窗口的时候,生效一下我们的ROS功能内径, 但是每次打开一个窗口手动生效依次很麻烦,所有我们将需要生效的内容放在~/.bashrc文 件内,这样在每次启动终端的时候就可以自动生效了。记得执行source ~/.bashrc更新一下 当前的环境变量哈。
  • 在~/.bashrc最后一行增加内容如下。
    source /opt/ros/melodic/setup.bash
    
    我们可以在终端输入echo $ROS_PACKAGE_PATH查看我们当前ROS的一个安装状态




验证我们的ROS环境

  • 在ROS环境安装好了以后,相信你一定迫不及待的要体验一下ROS系统了吧!不过不要着急,机器人系统的设计是需要大量的时间和精力的,在这里我们先使用一个ROS的欢迎程序来向大家展示我们的ROS系统。
  • ROS系统的启动需要一个ROS Master,即节点管理器,我们可以在终端输入roscore指令来启动ROS Master。




  • 然后我们来启动一个小海龟的例程。新打开一个终端,输入
    rosrun turtlesim turtlesim_node即可出现一个小海龟的画面。
  • 我们再打开一个终端,输入rosrun turtlesim turtle_teleop_key来启动键盘控制,通 过↑、↓、←、→来控制小乌龟的移动。
  • 我们可以看到,在小海龟“撞墙”的时候,我们的turtlesim_node节点(咳咳,概念型的请继续关注接下来的内容)会有提示数据的输出。




我们在开启一个终端,查看一下节点关系和话题列表(后面会详细讲解)。





  • 可以看到,是teleop_turtle发送了一个cmd_vel的数据给了turtlesim。怎么样,逻辑 是不是很清晰,这就是ROS。
  • 我们不需要知道这个控制功能,又或者是显示功能是怎么实现的,我们所需要的是按照 cmd_vel的格式把数据发送出去,又或者是按照cmd_vel的格式接收数据,就可以来快速实 现功能。像什么雷达导航啊、视觉识别避障啊、机械臂空间路径规划啊等待,你可以写不出 来,但是你一定要会去用它,这就是ROS!

20

顶一下

刚表态过的朋友 (20 人)

关键词ROS 机器人

最新评论

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2020-11-28 22:24 , Processed in 0.013883 second(s), 13 queries .