ROS Learning-002 beginner_Tutorials 如何添加ROS环境变量 和 如何更新ROS源代码

本文详细介绍了如何在Ubuntu 14.04 LTS上配置ROS Indigo的环境变量,并提供了确保每次打开终端都能正确加载环境变量的方法。此外,还介绍了如何使用rosdep update命令来更新ROS的源代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ROS Indigo beginner_Tutorials 之 添加环境变量 和 更新ROS源代码的命令

我使用的虚拟机软件:VMware Workstation 11
使用的Ubuntu系统:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo

如何添加 ROS 环境变量

在搭建环境变量前,我们现在先检查一下,看看 ROS 环境变量有没有在系统环境变量中:

$ export | grep ROS

这里写图片描述

如你得到下面的出现信息,说明,ROS 已经被添加到系统的环境变量里面的。不需要再添加了,就可以可以直接跳过添加环境变量这步,直接进行下一步。

declare -x ROSLISP_PACKAGE_DIRECTORIES=""
declare -x ROS_DISTRO="indigo"
declare -x ROS_ETC_DIR="/opt/ros/indigo/etc/ros"
declare -x ROS_MASTER_URI="http://localhost:11311"
declare -x ROS_PACKAGE_PATH="/opt/ros/indigo/share:/opt/ros/indigo/stacks"
declare -x ROS_ROOT="/opt/ros/indigo/share/ros"

如果什么都没有,我们必须对 ROS 进行配置环境变量,才可以在终端中使用 ROS 的相关命令和工具。

新建一个中终端,我们可以使用下面的指令来给当前终端窗口添加环境变量: (# : 为指令模板 。 $ : 为真正的例子 ) 如果你安装的 ROSindigo 版的 就可以使用第2句:

# source /opt/ros/<distro>/setup.bash
$ source /opt/ros/indigo/setup.bash

这样,我们使用 export | grep ROS 来查看一下环境变量是否添加成功,可以看到已经添加成功了。

这里写图片描述

但是我们使用 source 这个 Ubuntu 指令来添加环境变量有一个缺点: 它只作用于当前终端,如果我们在重新按住键盘组合键: Ctrl+Alt+T ,重新打开一个新的终端,我们使用 export | grep ROS 命令来查看当前终端上的环境变量我们依然得到下面的结果:

这里写图片描述

所以,也就是说,我们每新打开一个终端,都到去执行:source /opt/ros/indigo/setup.bash 这个命令来给当前终端添加环境变量。这样的做法岂不是违背的 DRY原则 ( Don’t repest yours! )。 所以,我们有更好的方法: 随便打开一个终端:

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

这里写图片描述

这句话的意思是:将source /opt/ros/indigo/setup.bash这句话 ,添加到 ~/.bashrc 文件中。.bashrc 文件中终端的启动文件,我们将这句话添加到启动文件中的效果就是,我们每次新打开一个终端,都会自动执行这句话。

上面这句话,还不作用于当前终端,所以,我们使用 export | grep ROS 来查看当前的环境变量,应该是什么都没有的:

这里写图片描述

我们当前终端关闭,重现在开始,重新打开的终端,都会自动添加 ROS 的环境变量:

这里写图片描述

介绍一个 ROS 命令 — 更新ROS源代码

$ rosdep  update 

运行输出:

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index.yaml
Add distro "groovy"
Add distro "hydro"
Add distro "indigo"
Add distro "jade"
Add distro "kinetic"
updated cache in /home/aobosir/.ros/rosdep/sources.cache

这里写图片描述

这个命令相当于 Linux 使用 sudo apt-get update 来更新系统软件。它的作用就是更新 ROS 系统中的软件包。(因为 ROS 系统不像 Ubuntu 系统那样更新的速度快( Ubuntu 系统 1周更新一次),而 ROS 系统更新的速度相比之下慢多了,我认为主要的原因是,它刚刚进入人们的视野中不久。我相信就凭 ROS 系统的争夺优点,它会不断的发展,以后它的更新速度也会想 Ubuntu 系统那样快。我这里指的更新是系统里面的软件进行更新,而不是系统的更新:win7->win8 ,不是这样的。)

转载于:https://www.cnblogs.com/aobosir/p/5928600.html

<think>嗯,用户问的是关于`beginner_tutorials/AddTwoInts`的介绍,我需要先确定这个是什么。听起来像是ROS(机器人操作系统)中的一个基础教程,可能涉及到服务的创建使用。因为ROS里常见的例子比如发布者、订阅者、服务动作,而AddTwoInts可能是一个简单的服务示例,客户端发送两个整数,服务端返回它们的。 首先,我应该回忆一下ROS服务的基本结构。服务包含一个请求响应,通常用.srv文件定义。AddTwoInts.srv可能定义了两个int64的请求参数ab,然后响应是sum。接下来,服务端会等待客户端的请求,处理后将结果返回。客户端则发送请求并接收响应。 接下来,我需要组织回答的结构。先介绍这个示例的用途,属于哪个框架(ROS),然后解释服务端客户端的工作原理,可能还要提到如何定义.srv文件以及如何运行节点。同时要注意用户可能是ROS的初学者,所以需要用简单易懂的语言,避免太专业的术语,但也不能遗漏关键步骤。 还要检查是否需要提到ROS版本,比如这个示例是否在ROS1ROS2中有所不同。不过用户没有指定版本,可能默认是ROS1,因为AddTwoInts是经典例子。此外,要确保提到的命令正确,比如catkin_make,rosrun,rosservice call这些常用命令是否正确。 可能需要注意用户的问题中是否存在拼写错误,比如`beginner_tutorials`是否正确,是否需要说明这是用户自己创建的包还是ROS的标准包。比如,通常beginner_tutorials可能是一个自定义的包名,用户在学习教程时创建的,所以需要指导如何创建srv文件,修改package.xmlCMakeLists.txt,然后编译运行。 另外,要确保回答中的LaTeX格式正确,比如变量用$符号包裹,独立公式用$$。例如,服务请求的ab可以用$a$$b$,响应是$a + b$的。虽然可能不需要复杂的数学公式,但如果有数值运算的话,可以适当使用。 还要考虑用户可能遇到的问题,比如服务没有启动,客户端无法连接,或者编译失败,是否需要给出排查建议?不过用户的问题主要是介绍,可能不需要深入问题解决,但可以稍微提一下常见问题,比如确保roscore运行,服务端节点已启动等。 总结回答的结构应该是:概述、服务端、客户端、定义srv文件、编译运行、示例命令,可能最后加上注意事项。确保每个部分简明扼要,步骤清晰,用户能按照步骤操作。同时,用中文表达,保持口语化,但不过于随意,确保专业性。</think>让我们以ROS为例逐步解析`AddTwoInts`服务的基本原理: $$ \begin{aligned} \text{服务名称} & : \text{AddTwoInts} \\ \text{请求参数} & : a \ (\text{int}), \ b \ (\text{int}) \\ \text{响应结果} & : \text{sum} = a + b \end{aligned} $$ 1. **服务定义** 创建`.srv`文件定义接口格式: ``` int64 a int64 b --- int64 sum ``` 2. **服务端实现** 核心逻辑伪代码: ```python def add_two_ints(req): sum = req.a + req.b # 计算$a + b$ return AddTwoIntsResponse(sum) ``` 3. **客户端调用** 典型调用过程: ```python client = rospy.ServiceProxy('add_two_ints', AddTwoInts) response = client.call(3, 5) # 返回$3 + 5 = 8$ ``` 4. **通信流程** 节点间通过RPC协议交互: ``` 客户端节点 ROS Master 服务端节点 | --- 注册服务 ---> | | | <-- 服务地址 --- | <--- 注册服务 --- | | --- 请求数据 ---------------------> | | <-- 响应结果 ------------------------ ``` 常见调试命令: ```bash rosservice list # 显示所有服务 rosservice info /add # 查看服务详情 rossrv show AddTwoInts # 显示服务数据结构 ``` 注意事项: ⚠️ 需先启动`roscore`核心节点 ⚠️ 服务端必须早于客户端启动 ⚠️ 使用`catkin_make`编译包含服务的功能包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值