惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
WordPress大学
WordPress大学
爱范儿
爱范儿
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Latest news
Latest news
Last Week in AI
Last Week in AI
V2EX - 技术
V2EX - 技术
I
InfoQ
N
News | PayPal Newsroom
SecWiki News
SecWiki News
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
T
Troy Hunt's Blog
H
Hacker News: Front Page
S
SegmentFault 最新的问题
TaoSecurity Blog
TaoSecurity Blog
V
Visual Studio Blog
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
S
Security @ Cisco Blogs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
小众软件
小众软件
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tor Project blog
L
LINUX DO - 热门话题
月光博客
月光博客
S
Schneier on Security
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Proofpoint News Feed
Forbes - Security
Forbes - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
A
Arctic Wolf
Webroot Blog
Webroot Blog
博客园 - 叶小钗
F
Fortinet All Blogs
S
Securelist
AI
AI
B
Blog RSS Feed
Security Latest
Security Latest

StrongWong

什么是超低功耗基准测试——ULPMark Benchmark 浅谈 RISC-V 软件开发生态之 IDE 简单了解一下小米 vela wujian100 的 PWM 周期问题 用 Kindle 做树莓派的显示屏 关于 RISC-V 架构下 RTOS 的一些知识 使用 vivado 综合 wujian100 生成 bitstream 文件 Windows 下学习阿里平头哥 RISC-V 芯片开发平台 wujian100 FPGA 数字图像处理联合仿真平台的搭建及使用举例 拆解一个很有意思的开关 拆解某宝上热销的一款蓝牙耳机 Archives Windows10 环境下搭建 RISC-V 调试环境 Contact 使用汇编实现 pc 和 sp 的保存及恢复操作 数字 IC 设计流程 SDRAM 两次踏进同一条河 初窥 SDRAM 从计数器开始,看数字 IC 设计 使用 Docker + GitLab 构建自用的代码管理服务 提升数字 IC 设计效率从 Vim 开始 总线- SoC 内部的主干道 Tools 使用树莓派 3b 和 RTL_SDR 搭建小功率无线电监测点 关于 ARM Cortex-M3 的启动文件分析及分散加载 make 命令及 makefile 文件编写 ROS 基础知识 Jetson TX2 重新编译内核添加usb等驱动 Nvidia Jetson TX2 刷机并安装JetPack3.1 我的毕业设计--基于ROS的移动机器人 使用 Hexo+Github Pages 搭建个人博客 About
在 Jetson TX2 上安装 ROS 机器人操作系统
BH6BAO · 2018-08-27 · via StrongWong

ROS 机器人操作系统

关于 ROS ( Robot Operating System 机器人操作系统),这里做一下简单的介绍。ROS 就是一个机器人软件平台,类似于个人电脑的操作系统( Windows、Linux、Mac OS 等),智能手机的操作系统( Android、iOS 等)。机器人和电脑、手机一样可以通过各种硬件组合的硬件模块组成,自然就出现了用来管理这些硬件的操作系统。操作系统提供了基于硬件抽象的软件开发环境,存在提供各种服务的应用程序。 ROS 就是这样一个提供了类似操作系统的硬件抽象。在 ROS 维基中将 ROS 定义为 “ ROS 是一个开放源代码的机器人元操作系统。它提供了我们对操作系统期望的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递以及功能包管理。它还提供了用于在多台计算机之间获取、构建、编写和运行代码的工具和库。 ” 因此,ROS 并不是一种新的操作系统,确切的说,ROS 是一种元级操作系统。是基于现有操作系统的,利用应用程序和分布式计算资源之间的虚拟化层来运用分布式计算资源来执行调度、加载、监视、错误处理等任务的系统。同时提供一个或多个操作系统下的数据通信。

对于 ROS 的安装,之前官方网站上是没有中文教程的,对于我这种塑料英语,直接看官网英文教程还是蛮有难度的。不过好在现在 ROS 官网已经有中文版的安装教程了。直接参考官网上的教程安装就好了! 官网安装教程:http://wiki.ros.org/cn/kinetic/Installation

ROS 版本

虽然官方已经有了中文版本的安装教程,但是我这里还是简单记录一下。 首先,ROS 目前大家使用的主流版本还是 ROS 1.0 的版本,ROS 1.0 版本目前只支持 Linux 系统。而对 ROS 兼容性最好的就是 Ubuntu 操作系统了,恰好我们的 Jetson TX2 就是 Ubuntu 系统。

这里还要说明的是,我们在 TX2 上安装 ROS 系统,并不是要直接在 TX2 上来做开发的(虽然也可以), TX2 主要是作为部署端的。因此,还需要有一台 Ubuntu 电脑也需要安装上 ROS 来进行开发工作,安装步骤相同。

其次, Ubuntu 和 ROS 都有很多版本,各版本之间是存在兼容性问题的。ROS 和 Ubuntu 之间的版本对应关系如下表:

ROS 版本发布日期对应的 Ubuntu 版本停止支持日期
ROS Melodic2018.5.23Ubuntu 18.04(Bionic)/Ubuntu 17.10(Artful)2023.5
ROS Lunar2017.5.23Ubuntu 17.04(Zesty)/Ubuntu 16.10(Yakkety)/Ubuntu16.04(Xenial)2019.5
ROS Kinetic(推荐)2016.5.23Ubuntu 16.04(Xenial)/Ubuntu 15.10(Wily)2021.4
ROS Jade2015.5.23Ubuntu 15.04(Wily)/Ubuntu LTS 14.04(Trusty)2017.5
ROS Kinetic2014.7.22Ubuntu LTS 14.04(Trusty)2019.4

目前主流版本还是 ROS Kinetic 且支持时间较长,今年新出的 Melodic 版资料相对较少。所以推荐安装 ROS Kinetic 版本。

安装

软件中心配置

打开软件和更新对话框,配置你的 Ubuntu 软件仓库( repositories )以允许“restricted”,“universe”和“multiverse”这三种安装模式。如下图: 配置完成关闭窗口。

添加source.list

设置你的电脑可以从 packages.ros.org 接收软件。 打开一个 Terminal ( Ctrl+Alt+T ),输入以下命令:

$ sudo sh -c 'echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc)main”> /etc/apt/sources.list.d/ros-latest.list'

这个镜像国内会比较慢,建议更换为国内镜像源,就是把上面的命令更换一下。官方镜像

添加密钥

$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

如果你遇到连接到 keyserver 的问题,你可以在以上命令尝试替换 hkp://pgp.mit.edu:80 或 hkp://keyserver.ubuntu.com:80 密钥可以根据服务器的操作发生变更,如有变化,请参考官方wiki页面。

安装 ROS

首先,确保你的系统软件是最新版本

接下来,就可以安装 ROS 了,但是 ROS Kinetic 也有好几个版本,这里我们安装全功能版本(包括ROS、rqt、RViz、机器人相关的库、仿真和导航等等。部署端一般基础版就可以了)。

$ sudo apt-get install ros-kinetic-desktop-full

这里可能会要等待几分钟,因网速而定。如果一切顺利的话,那就安装完了。 安装完成后,可以使用下面的命令查看可使用的软件包(可以搜索到大约1600多个功能包):

$ apt-cache search ros-kinetic

如果想个别安装功能包,请使用如下命令:

$ sudo apt-get install ros-kinetic-[功能包名称]

现在是安装完了,但是我们还需要初始化 ROS 以及配置环境变量

初始化 rosdep

在开始使用 ROS 之前还需要初始化 rosdep 。rosdep 可以方便地在需要编译某些源码的时候为其安装一些系统依赖,同时也是某些 ROS 核心功能组件所必需用到的工具。

$ sudo rosdep init
$ rosdep update

配置环境

如果每次打开一个新的终端时 ROS 环境变量都能够自动配置好(即添加到 bash 会话中),那将会方便很多:

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

可以使用 gedit 或者 vi 等编辑器打开 bashrc 文件查看是否配置成功。在 bashrc 文件最底部我们可以看到已经有了很多设置。不要修改以前的设置,如果你需要修改的话在最底部添加就好了。

# Set ROS Kinetic
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash

# Set ROS Network
export ROS_HOSTNAME=xxx.xxx.xxx.xxx
export ROS_MASTER_URI=http://${ROS_HOSTNAME}:11311

安装构建依赖

到目前为止,已经安装了运行核心 ROS 包所需的内容。为了创建和管理自己的 ROS 工作区,有各种各样的工具和需求分别分布。例如:rosinstall 是一个经常使用的命令行工具,它能够轻松地从一个命令下载许多 ROS 包的源树。

要安装这个工具和其他构建 ROS 包的依赖项,请运行:

$ sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

好!到这里,ROS 就基本安装完成了。下面就来测试一下,看看是否可以正常运行。

测试 ROS

首先,启动 ROS 环境 输入 roscore 命令,测试测试结果如下:

$ roscore
... logging to /home/ubuntu/.ros/log/3e61b674-03cf-11e8-ac54-9cb70ddc3658/roslaunch-ubuntu-31481.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://ubuntu:11311/
ros_comm version 1.12.12
SUMMARY
========
PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.12
NODES
auto-starting new master
process[master]: started with pid [31495]
ROS_MASTER_URI=http://ubuntu:11311/
setting /run_id to 3e61b674-03cf-11e8-ac54-9cb70ddc3658
process[rosout-1]: started with pid [31508]
started core service [/rosout]

如果看到 started core service [/rosout] ,那就说明安装成功了!退出按『Ctrl+c』。

如果你安装过程中出现了问题,可以尝试换个网络,或者多试几次吧,有时候服务器就是连不上!*_*