多工作空间并存时ROS的环境变量异常问题

   今天突然发现当多工作空间并存时,我的ROS的环境变量发生了比较诡异的异常,按照我之前的理解,在.bashrc文件中按顺序设定了ROS的环境变量后,ROS就会按照.bashrc中编写的环境变量来搜寻功能包,例如在.bashrc文件使用soure设定了以下的环境变量后

source /opt/ros/noetic/setup.bash
source /home/gly/Car-like-Robotic-swarm/devel/setup.bash
source /home/gly/motionplanning_ws/devel/setup.bash
source /home/gly/catkin_ws/devel/setup.bash

   使用echo $ROS_PACKAGE_PATH指令打印出的路径,正常而言,应该如下所示,即在.bashrc文件中的位置越靠后,其优先级应该越高,且打印出的环境变量应该与.bashrc文件中设定的环境变量一一对应。

/home/gly/catkin_ws/src:/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/opt/ros/noetic/share

   以上是我之前的理解,但今天的测试发现,事情并非如此,使用echo $ROS_PACKAGE_PATH指令打印出的路径实际上如下所示,其优先级是混乱的,并非设定的那样。

/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   然后,我进一步在.bashrc中删除了环境变量source /home/gly/ motionplanning_ws/devel /setup.bash,只保留了剩下的三个,保存后,在新的终端打印出的环境变量如下,依然包含我已经在.bashrc文件中删除的那个环境变量,且优先级依然是最高

/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   然后,我把source /home/gly/catkin_ws/devel/setup.bash这行也删了,也就是说,此时在.bashrc文件中设定的环境变量仅剩下如下的两个:

source /opt/ros/noetic/setup.bash
source /home/gly/Car-like-Robotic-swarm/devel/setup.bash

   保存后,在新的终端,再使用echo $ROS_PACKAGE_PATH指令打印ROS的环境变量时,打印结果如下,好消息是/home/gly/ motionplanning_ws/devel /setup.bash的路径终于没了,坏消息是为啥/home/gly/catkin_ws/devel/setup.bash的还在????

/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   为了测试,是在执行完哪行source后发生的问题,我在每个soure后面都加了一句打印环境变量的语句,如下所示:

# ROS Noetic - 基础 ROS 安装
source /opt/ros/noetic/setup.bash
echo $ROS_PACKAGE_PATH 
# Car-like Robotic Swarm 工作空间
source /home/gly/Car-like-Robotic-swarm/devel/setup.bash
echo $ROS_PACKAGE_PATH 
# Motion Planning 工作空间
source /home/gly/motionplanning_ws/devel/setup.bash
echo $ROS_PACKAGE_PATH 
# Catkin 工作空间
source /home/gly/catkin_ws/devel/setup.bash
echo $ROS_PACKAGE_PATH 

   新打开一个终端时,会显示上述打印信息,如下所示,可以发现,当执行完第二个soure后,就发生了异常,正常来说,执行完第二个source应该只有ROS安装和Car-like Robotic Swarm 工作空间的环境变量,然而却多了Catkin 工作空间的工作变量…

/opt/ros/noetic/share
/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share
/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share
/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   找了半天,也没找到具体啥原因,暂时的解决方法是,在source指令的后面用export ROS_PACKAGE_PATH在.bashrc中按照所期望的优先级手动设定ROS环境变量的方法,如下所示

export ROS_PACKAGE_PATH=/home/gly/catkin_ws/src:/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/opt/ros/noetic/share

   如果有大佬知道上述在.bashrc中使用soure设定环境变量与实际环境变量不匹配异常的原因或者更好的解决方法,欢迎在评论区指出


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/486224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nuclei Poc开发

1、Poc开发工具介绍 Nuclei:https://nuclei.projectdiscovery.io/ Cloud Platfrom云平台:https://cloud.projectdiscovery.io/ 2、目标站点简介 目标演示站点:http://glkb-jqe1.aqlab.cn/nacos/#/login 指纹:Nacos 已知常用漏洞…

【微服务】Eureka(服务注册,服务发现)

文章目录 1.基本介绍1.学前说明2.当前架构分析1.示意图2.问题分析 3.引出Eureka1.项目架构分析2.上图解读 2.创建单机版的Eureka1.创建 e-commerce-eureka-server-9001 子模块2.检查父子pom.xml1.子 pom.xml2.父 pom.xml 3.pom.xml 引入依赖4.application.yml 配置eureka服务5.…

【Web APIs】事件高级

目录 1.事件对象 1.1获取事件对象 1.2事件对象常用属性 2.事件流 1.1事件流的两个阶段:冒泡和捕获 1.2阻止事件流动 1.3阻止默认行为 1.4两种注册事件的区别 3.事件委托 1.事件对象 1.1获取事件对象 事件对象:也是一个对象,这个对象里…

rapidssl证书通配符证书800元

RapidSSL旗下的DV基础型通配符SSL证书可以同时保护多个域名站点,保护主域名以及主域名下的所有子域名。这款通配符SSL证书可以为网站提供数据加密服务,营造安全的上网环境,确保用户在网站上的数据安全传输。今天就随SSL盾小编了解RapidSSL旗下…

2024年HCIE考试题二

27、以下关于在网络中选择认证点位置的描述中,错误的是哪一项? A.在网络的接入层部署认证,有利于实现权限的细颗粒度管理和网络的高安全性 B.用户认证点从接入层上移到汇聚层之后,可能会导致用户的MAC认证失败 C.当用户认证点从…

DC电源模块的设计与调试技巧

BOSHIDA DC电源模块的设计与调试技巧 DC电源模块的设计与调试是电子工程师在实际项目中常常需要面对的任务。一个稳定可靠的DC电源模块对于电路的正常运行起到至关重要的作用。以下是一些设计与调试的技巧,帮助工程师们更好地完成任务。 第一,正确选择…

vue3.0 + ts + eslint报错:error Parsing error: ‘>‘ expected

eslint报错 这里加上对应的 eslint配置即可: parser: vue-eslint-parser, parserOptions: {parser: "typescript-eslint/parser",ecmaVersion: 2020,sourceType: module, }具体如下: module.exports {parser: vue-eslint-parser,parserOpti…

代码随想录阅读笔记-栈与队列【删除字符串中的所有相邻重复项】

题目 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入&am…

如何成功将自己开发的APP上架到应用商店

如何成功将自己开发的APP上架到应用商店 随着移动应用市场的蓬勃发展,开发一款优秀的APP已成为许多企业和个人的首要选择。然而,成功上架并有效推广APP至关重要。本文将逐步介绍完整的上架流程,包括准备所需材料、注册开发者账户、进行APP备…

OpenLayers基础教程——使用WebGLPoints加载海量点数据

1、前言 最近遇到一个问题:如何在OpenLayers中高效加载海量的场强点?由于项目中的一些要求,不能使用聚合的方法加载。一番搜索之后发现:OpenLayers中有一个WebGLPoints类,使用该类可以轻松应对几十万的数据量&#xf…

多目标追踪实现_3.9

目标 利用sort算法完成多目标追踪 在这里主要实现了一个多目标跟踪器,管理多个卡尔曼滤波器对象,主要包括以下内容: 初始化:最大检测数,目标未被检测的最大帧数 目标跟踪结果的更新,即跟踪成功和失败的目…

Android第一行代码——快速入门 Kotlin 编程(4.7 编写界面的最佳实践)

目录 4.7 编写界面的最佳实践 4.7.1 制作 9—Patch 图片 4.7.2 编写精美的聊天界面 4.7 编写界面的最佳实践 既然已经学习了那么多 UI 开发的知识,是时候实战一下了。这次我们要综合运用前面所学的大量内容来编写出一个较为复杂且相当美观的聊天…

【前端寻宝之路】JavaScript初学之旅

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-azUa9yH16cRXQUxE {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

代码随想录算法训练营第十五天| 二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

系列文章目录 目录 系列文章目录二叉树层序遍历(10题)102. 二叉树的层序遍历①DFS--递归方式②BFS--迭代方式--借助队列 107.二叉树的层次遍历 II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历遍历每个节点的子节点 515.在每个树行中找最大…

Ftrans安全数据摆渡系统 构建便捷的内外网数据交换通道

安全数据摆渡系统是一种设计用于解决内外网环境下,数据传输、管理、共享问题的安全系统,通过加密、访问控制等策略,提供安全可靠的数据传输和共享服务,尤其适用于对网络安全建设要求高的行业,比如研发型企业、党政机构…

构建vue3项目以及bem架构

构建vue3vite项目 &#xff08;1&#xff09;使用vite初始化一个项目 npm init vitelatest &#xff08;2&#xff09;构建cli项目 vue create <project> bem架构 src下新建文件bem.scss $namespace: "xc" !default; $block-sel: "-" !defaul…

【LVGL-开关部件】

LVGL-开关部件 ■ LVGL-开关部件■ 开关部件&#xff1a;指示器打开的颜色■ 开关部件&#xff1a;不可修改■ 开关部件&#xff1a;获取开关状态■ 开关部件&#xff1a;示例一&#xff1a;制冷,制暖,开关 ■ LVGL-开关部件 ■ 开关部件&#xff1a;指示器打开的颜色 ■ 开关部…

Leetcode算法题笔记(2)

目录 图论51. 岛屿数量解法一 52. 腐烂的橘子解法一 53. 课程表解法一 54. 实现 Trie (前缀树)解法一 回溯55. 全排列解法一 56. 子集解法一解法二 57. 电话号码的字母组合解法一 58. 组合总和解法一解法二 59. 括号生成解法一解法二 60. 单词搜索解法一 图论 51. 岛屿数量 给…

PostgreSQL FDW(外部表) 简介

1、FDW: 外部表 背景 提供外部数据源的透明访问机制。PostgreSQL fdw(Foreign Data Wrapper)是一种外部访问接口,可以在PG数据库中创建外部表,用户访问的时候与访问本地表的方法一样,支持增删改查。 而数据则是存储在外部,外部可以是一个远程的pg数据库或者其他数据库(…

java数据结构与算法刷题-----LeetCode435. 无重叠区间

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路&#xff1a;贪心思想。时间复杂度O( n ∗ l o g 2 n n*…