ROS学习(一)ROS Noetic安装及环境配置_senlijiu的博客-程序员秘密_ros-noetic安装

技术标签: 经验分享  ROS学习  ubuntu  


前言

  上一篇文章主要对ROS的WIKI里的Introduction部分进行了研读,了解了关于ROS的基本信息。ROS的WIKI的版块设置其实是有些混乱的,经过粗略的阅读,对于初学者大概有两大入门路线,分别是TutorialsStartGuide

StartGuide:Learn about various concepts, client libraries, and technical overview of ROS.

  可以看出StartGuide更多是关于概念的解释,上一篇文章研读的Introduction就属于这一部分。这一部分包含Introduction | Concepts | Higher-Level Concepts | Client Libraries | Technical Overview等内容。

Tutorials:Step-by-step instructions for learning ROS hands-on.

  Tutorials则是更多的从实践中一步步学习ROS。
  之后的学习,我会选择两条路径并进的方式,理论与实践都进行学习。这篇文章将进行ROS的安装,是Tutorials中的第一章节第一小节第一点Installing and Configuring ROS Environment(路漫漫其修远兮)。


0、ROS Installation Options

  在正式安装前,首先要确定安装ROS的什么版本。
  ROS的版本很多,目前ROS的版本有13个之多。而且现在已经出了ROS2。不同的版本需求不同的系统。由于我使用的虚拟机中Ubuntu版本是20.04,故选择安装ROS Noetic。官网上的安装教程

1、Installation

1.1 Configure your Ubuntu repositories

Configure your Ubuntu repositories to allow “restricted,” “universe,” and “multiverse.” You can follow the Ubuntu guide for instructions on doing this.

  这步的意思是设置系统内的软件下载选项。打开系统内的Software & Updates,把上面提到的都勾起来。
Software & Updates

1.2 Setup your sources.list

Setup your computer to accept software from packages.ros.org.

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

  这一步是为了将ros相关包的下载地址加入到ubuntu的源配置中。考虑到使用者来自于不同地区,教程中也给出了不同地区的镜像源,我选择的是清华源。

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

1.3 Set up your keys

sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

  有两条命令,如果没有安装curl就先执行第一条命令安装。然后执行第二条命令。
在这里插入图片描述
  执行完毕会出现一个ok

1.4 Installation

  首先,确保包索引是最新的。执行命令sudo apt update,将包索引更新到最新。
  然后选择安装的版本,有Desktop-Full,Desktop,ROS-Base三种可选。我选择安装Desktop-Full。

sudo apt install ros-noetic-desktop-full

请添加图片描述

1.5 Environment setup

  在使用ros前,需要将相关环境进行配置,可使用如下命令。

source /opt/ros/noetic/setup.bash

  但是这个命令每次都要重新输入,略麻烦,为了便利,可输入以下命令:

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

  这个命令会使得每次启动窗口自动导入环境配置。

另外,如果安装有多个ROS,为防止出错,~/.bashrc应确保只含有正在使用的ROS版本的配置文件。

If you have more than one ROS distribution installed, ~/.bashrc must only source the setup.bash for the version you are currently using.

1.6 Dependencies for building packages

  完成之前的步骤,就可以运行ROS的核心功能包了,不过要想要构建自己编写的功能包,还需要进行下列步骤。

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

1.6.1 Initialize rosdep

  在使用ROS的各类工具前,需要去初始化rosdeprosdep能够让我们轻松的安装源代码所需要的依赖文件。
  这一步对于构建自己的ROS是十分重要的,但我也在这一步上卡了非常久。原因有二,一是墙的存在,二是寻找解决方案耗费了大量时间。
  首先执行sudo apt install python3-rosdep,然后执行sudo rosdep init,这两步都没有问题,问题出在第三步rosdep update。报错如下:
rosdep update
  由于解决过程较长,尝试很多不同的方案,会另外写一篇文章阐述我的解决过程,在此就不过多阐述,核心思想是能让rosdep update能访问到github上的文件。
  最后的解决方案参考:一定能解决ROS系统 rosdep update超时问题de简单方法,这个是起效的。
(2022.4.16更新,写完了我的解决方案,拖了好久。ROS学习——rosdep update 超时解决方法
请添加图片描述

  (其他方案:(1)本文之后,世上再无rosdep更新失败问题!如果有…小鱼就…,这个方案是@鱼香ROS根据rosdep的源码重新写了一个专供国内用户的rosdepc,原理是采用了国内的服务器,免去了去github上下载资源的问题,由于学习进度还未到使用rosdep的程度,在此仅做记录。)

1.7 Summary

  官网上的安装教程就到这一步了,应该是已经完成了所有需要组件的安装,但官网并没有给出测试方法 。这也是官网教程的不足。


2、Managing Your Environment

  ROS的运行是依赖于环境的,在1.5 Environment setup中说了两种导入环境配置的方法。确定环境配置是重要的,如果环境配置混乱,开发与运行都会受到很大的影响。
  可通过以下命令查看目前ROS相关的环境变量。

printenv | grep ROS

Environment
  如果安装有多个版本的ROS,最好是把~/.bashrc里的自动引入环境的命令删除,每次手动导入环境变量。但由于目前我只安装了一个版本,为了便利期间,就暂时保持自动导入环境 。

Note: Throughout the tutorials you will see references to rosbuild and catkin. These are the two available methods for organizing and building your ROS code. rosbuild is not recommended or maintained anymore but kept for legacy. catkin is the recommended way to organise your code, it uses more standard CMake conventions and provides more flexibility especially for people wanting to integrate external code bases or who want to release their software. For a full break down visit catkin or rosbuild.

  另外,官网中提到,目前有rosbuildcatkin两种方法用于组织与构建ROS代码。推荐使用catkin


3、Create a ROS Workspace

  官网中给出了rosbuildcatkin两种方法的使用教程,我选择推荐的catkin方法。

These instructions are for ROS Groovy and later. For ROS Fuerte and earlier, select rosbuild.

  教程中提到,catkin方法仅对Groovy之后的版本有效,对于早期的版本,需要参考rosbuild方法。
通过以下命令创建并构建一个catkin工作空间。

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make

  这里我遇到一个坑。报错如下:
请添加图片描述
  这是由于我之前在虚拟机中安装了anaconda,默认的python解释器是anaconda的base环境,而base环境里缺少部分用于ros构建的包。
  换用命令catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3,该命令指定了所用的python环境。
请添加图片描述
  在官网上也有提到:

Python 3 users in ROS Melodic and earlier: note, if you are building ROS from source to achieve Python 3 compatibility, and have setup your system appropriately (ie: have the Python 3 versions of all the required ROS Python packages installed, such as catkin) the first catkin_make command in a clean catkin workspace must be:

$ catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

This will configure catkin_make with Python 3. You may then proceed to use just catkin_make for subsequent builds.

  所以为了保险起见,最好采用指定路径的这条命令。但个人感觉,在anaconda环境中,只要把相关的包配置好,也是一样正常使用的。但关于这点并未尝试。
  执行完命令后,在目录下生成builddevel两个文件夹。
在这里插入图片描述
  可通过命令source devel/setup.bash,将新生成文件夹中的环境配置文件导入,覆盖之前导入的环境变量。
  之后执行命令echo $ROS_PACKAGE_PATH,判断是否成功将环境变量覆盖。当打印出当前所在位置时,表示环境设置完毕。
在这里插入图片描述
  也可以通过命令printenv | grep ROS来查看
在这里插入图片描述
  环境设置成功了。


  以上,跟着教程完成了ROS的安装和环境配置,但具体环境代表什么,工作空间怎么用,暂时还不是很清楚。在之后的学习中会逐渐掌握。
  

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/senlijiu/article/details/124048383

智能推荐

Drozer模块命令大全(一)_aetkrad的博客-程序员秘密_drozer命令

目录目录前言APP模块前言最近在研究drozer的使用,发现网上的资料也挺少的,就自己过了一遍所有模块,可以当使用手册来看。APP模块 模块名 作用 app.activity.forintent 通过intent查找它的activity app.activity.info 获取activities信息 app.activity.start 开启 Activity

再见了收费的Navicat,操作所有数据库有DBeaver就够了_普通网友的博客-程序员秘密_dbeaver 过滤数据

为了快速管理数据库,我们一般都会选择一款顺手的数据库管理工具。Navicat、DataGrip虽然很好用,但都是收费的。今天给大家推荐一款免费、功能强大的数据库管理工具DBeaver,希望对大家有所帮助!DBeaver简介DBeaver是一款开源的数据库管理工具,在Github上已经有22K+Star。支持多达100种数据库,不管是关系型数据库还是非关系型数据库,基本上你能想到的数据库它都能支持,下面我们来看看它支持的数据库够不够全!下载安装接下来我们来下载安装DBeaver,.

(c语言)力扣初级算法之删除链表的倒数第N个节点_一个普通的大学生的博客-程序员秘密

删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路:先判断链表为空和n等于链表长度的特殊情况,然后使用双指针找到删除节点位置代码:/** * Definition for singly-linked list.

运维工程师绩效考核表_IT运维绩效考核表_七个隆冬的博客-程序员秘密

岗位序号得分被考核人签字被考核日期直接上级考核阶段年月日—年月日姓名部门IS部量化项目考核指标权重评分标准1保守工作为员工处理问题时提供优质服务10服务投诉次数<=1次,不扣分;每增加1次,减5分;及时处理突发事件10按时完成,不扣分;不能及时完成,每有1次,减5分;2网络系统服务器设备管理网络系统设备数据备份完整性10每次检查,有不完整现像,减5分;关键网络设备及服务器的完好性,按时点检5...

2021年N1叉车司机新版试题及N1叉车司机考试试卷_女王219的博客-程序员秘密

题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:N1叉车司机新版试题考前必练!安全生产模拟考试一点通每个月更新N1叉车司机考试试卷题目及答案!多做几遍,其实通过N1叉车司机复审模拟考试很简单。1、【多选题】离合器一般应满足以下哪些要求?()(AB)A、接合平顺柔和B、分离迅速彻底C、操纵沉重费力D、从动部分的转动惯量应尽量大2、【多选题】除工作装置以外,场车常见结构一般由以下哪些部分组成?()(ABCD)A、动力装置B、车辆底盘...

余承东感谢库克暖场,华为这次有点狂【附P30上手视频】_网易智能的博客-程序员秘密

来自| 网易科技&网易手机作者| 静静只隔一天,华为新旗舰P30系列发布会紧跟着苹果2019年春季发布会。此前手机厂商发布新品时都会避开苹果的发布会,因为会被淹...

随便推点

启明创投甘剑平:破解独角兽公司的基因密码_weixin_30593261的博客-程序员秘密

http://tech.163.com/16/0511/07/BMP60NRG00094P40.html(原标题:启明创投甘剑平:破解独角兽公司的“基因密码”)无论行业如何迭代,伟大的独角兽公司都具备着相似的“基因密码”。甘剑平,启明资本合伙人。善于利用数据分析提前预判行业趋势。他先后投资了包括大众点评、蘑菇街、携程网、美图、途家、返利网、途虎养车网、麦奇教育等诸多“独角兽”公司。在他...

PL/SQL语言简单案例_彭祥.的博客-程序员秘密

在学习PL/SQL语言时接触到几种常见的例题,主要还是游标和函数的基本应用,以下是相关的程序代码(ps:编者能力有限,如有错误之处,请指正):准备材料:create  table student(sno char(6),sname varchar2(8),ssex char(4),sbirth date,class number(1))drop table cjbcreate table cour...

将带头结点的单链表A分解为两个带头结点的单链表A,B_vener_的博客-程序员秘密

A存储原表的奇数序数元素,B存储原表的偶数序号元素,且相对位置不变LinkList DisCreate(LinkList &A){ i=0; B=(LinkList)malloc(sizeof(LNode)); B->next=NULL; p=A->next; A->next=NULL; LNode *ra=A,*rb=B; while(p!=NULL) { i++; if(i%2==0) { rb->next=p; rb=p;

在 Visual Studio 2010 中启动 MPI 群集调试程序_leillon的博客-程序员秘密

在此操作实例中,您将了解如何在本地计算机和 Microsoft Windows HPC Server 2008 群集上设置和启动 MPI 群集调试程序会话。此操作实例包括使用消息传递界面 (MPI) 和打开多进程 (OpenMP) 应用程序编程界面 (API) 创建应用程序所需的步骤和示例代码。本指南内容: 使用 MPI 群集调试程序的要求在 Visual Studio 2

《Redis深度历险》《深入理解RPC》答读者问_codehole_的博客-程序员秘密

今天我们不谈代码,不谈架构,我要谈谈人生,谈谈理想。读者们,请允许我冒充一回人生导师,也请读者们仔细聆听我的敦敦教诲^_^想知道老钱是如何源源不断做出好文章的输出的?不断...

ORACLE查看表空间的名称及大小_etReines的博客-程序员秘密_表空间名称

--1、查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespac

推荐文章

热门文章

相关标签