IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ROS:rosbash系列命令行工具的使用(详解) -> 正文阅读

[人工智能]ROS:rosbash系列命令行工具的使用(详解)

与rosbash相关的环境变量

ROS_PACKAGE_PATH

先提及一个环境变量ROS_PACKAGE_PATH,这个变量是一个可选的,但非常常见的环境变量,它允许您从源代码添加更多的ROS包到您的环境中。ROS_PACKAGE_PATH可以由一个或多个由标准OS路径分隔符(':'在类Linux系统上)分隔的路径组成。这些有序的路径告诉ROS系统在哪里搜索更多的ROS包。如果有多个相同名称的包,ROS会首先选择出现在ROS PACKAGE PATH上的包。如下示例:

从图中我们可以看到:我们自定义的功能包存放路径为/opt/ros/noetic/share,官方定义的功能包的存放路径为/opt/ros/noetic/share。当然,为了加载更多的功能包,我们还需要使用export向ROS_PACKAGE_PATH中添加更多的包路径,但是这些包路径之间一定要用:冒号分隔开来。

ROS_ROOT

该环境变量下存储的是roscore这个ROS核心功能包所在根目录:

ROS_NAMESPACE

ROS_NAMESPACE允许您将Node下推到名称空间中,这会导致node节点的所有属性(私有参数、话题名称…等)均会被置于ROS_NAMESPACE环境变量指定的命名空间之下。

ROS_MASTER_URI

ROS_MASTER_URI告知我们在哪里才可以找到master主节点,这对于我们可以成功启动roscore至关重要:

当我们启动roscore时,可以注意一下输出的日志信息:

其中,明确输出了master主节点的URI。

ROS_IP

ROS_IP在多主机系统中被使用到,因为ROS是个分布式系统,也就是说ROS中各个可执行节点可以分别运行在不同的主机系统中,但是这些个主机中必须有一个老大(master节点),ROS_IP用于指定发送信息时自身的身份。

注意:当ROS_IP和ROS_HOSTNAME同时被设置时,由于ROS_IP和ROS_HOSTNAME相互排斥,因此ROS_HOSTNAME会失效。在多主机系统中,ROS_IP和ROS_HOSTNAME中有一个被设置就可以在通信系统中表明自己的身份。

ROS_HOSTNAME

ROS_IP在多主机系统中被使用到,因为ROS是个分布式系统,也就是说ROS中各个可执行节点可以分别运行在不同的主机系统中,但是这些个主机中必须有一个老大(master节点),ROS_IP用于指定发送信息时自身的身份。

注意:当ROS_IP和ROS_HOSTNAME同时被设置时,由于ROS_IP和ROS_HOSTNAME相互排斥,因此ROS_HOSTNAME会失效。在多主机系统中,ROS_IP和ROS_HOSTNAME中有一个被设置就可以在通信系统中表明自己的身份。

Roscd工作空间跳转指令

Roscd是一个用来跳转至功能包所在路径的ROS命令行指令:roscd package_name

Roscd也可以跳转至指定功能包下的文件夹中:roscd package_name/folder_name

其实,我们使用cd指令也可以办到,但是就是得先知道官方功能包所在位置:

Rosed文件编辑指令

Rosed指令常常结合rosls指令一同使用:

当运行rosed指令之后,进入到vim编辑器界面(前提是你得安装了vim编辑器)。这个功能也可以使用cd跳转指令和vim指令来实现,就是有点麻烦:

Vim编辑器操作指令简述:

Vim指令

释义

:q

退出(的缩写:quit)

:q!

不保存即退出(的缩写:quit!)

:wq

写和退出

:wq!

即使文件只有读权限也可以写并退出(如果文件没有写权限:强制写)

:x

写入并退出(类似于:wq,但仅在有更改时写入)

:exit

写入并退出(与相同:x)

:qa

全部退出(的缩写:quitall)

:cq

退出而不保存并使Vim返回非零错误(即退出时出现错误)

注意:输入完指令之后,需再按enter键确认才可生效!

Rosls文件目录列举指令

Rosls的使用格式:rosls filepath filename

Rosls指令不仅可以查看功能包主目录下的文件,也可以查看功能包子文件夹下的文件:

Roscp文件复制指令

Roscp的使用格式:roscp package_name filename

但是值得注意的是:filename可以来自package_name主文件目录下,也可以来自package_name/subfolder子文件夹下的文件目录中。当文件来自roscpp的主文件目录中:

当文件来自roscpp的子文件夹的目录中:

Rosrun可执行节点运行指令

Rosrun的指令格式:rosrun package_name executable_name [-optionalArg]

Rosrun的可选参数如下所示:

可选参数格式

释义

__name:=exec_name

更改可执行节点的名称

__ns:=namespace

将节点置于namespace命名空间之下

__master:=new_master_URI

ROS_MASTER_URI=new_master_URI

__log:=LogPath

指定日志存放的路径

__ip:=IP_info

更改多机系统中的本机的IP

__hostname:=hostname

更改多机系统中的本机的HOSTNAME

__ParamName:=param_value

向参数服务器上报名为__ParamName的私有参数

Topic_old:=topic_new

更改发布/订阅的topic的话题名称

Param:=value

通过命令行向main函数传递参数

注意:

1. 可执行节点的名称是在CMakelist.txt中的add_executable(…)中设置的,rqt_graph的node关系图中node名称是在.cpp源文件中ros::init(…)设置的;

2. 一定要区分“参数服务器参数的上报”和“main函数传参”的区别,前者属于参数服务器的通信方式,后者属于向函数传递参数;

3. 要注意节点各个属性的命名空间设置方式,详见:

ROS中节点、话题、参数重命名以及全局、相对、私有命名空间(示例+代码)_超级霸霸强的博客-CSDN博客https://blog.csdn.net/weixin_45590473/article/details/122718807

4. 当我们在launch文件中输入以下内容:

<launch>
    <node pkg="rosbag_package" name="node" type="node" output="log" args="__log=/home/rosnetic/桌面/turtle_test"/>
</launch>

当我们运行launch文件之后,我们会发现有关log日志文件的环境变量已被修改:?

rosnetic@coolboy:~$ echo $ROS_LOG_DIR
/home/rosnetic/桌面/turtle_test

有关日志文件的相关设置详见:

ROS日志系统部分设置_Nicholasoooo的博客-CSDN博客_ros日志设置这里写自定义目录标题ROS日志设置$ROS_ROOT/config/rosconsole.config中的配置及说明ROS_LOG_DIR环境变量ROSCONSOLE_FORMAT环境变量ROS日志设置$ROS_ROOT/config/rosconsole.config中的配置及说明log4j.logger.ros.pkg=INFO,stdout,pkg_pro# pkg是ros中的package名;stdout指的是标准输出;pkg_pro是别名,后面的配置可以使用此名称来定义他的属性,此行代码代https://blog.csdn.net/Nicholasoooo/article/details/117920615

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:31:02  更:2022-03-10 22:32:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:47:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码