SLAM运行环境和细节

1.关于bash

Bash是一个能解释你输入进终端命令(即shell命令)的Shell程序,并且基于你的输入来运行命令

shell是一种脚本语言(bash是一个shell程序,是ubuntu中默认的shell)

2.关于.bashrc

.bashrc是home目录下的一个shell文件,用于储存用户的个性化设置

在bash每次启动(如ubuntu的终端)时都会加载.bashrc文件中的内容,并根据内容定制当前bash的配置和环境

例如在.bashrc中加入echo在 “hello bash”,打开新的终端后便会显示一行“hello bash”

3.关于source(使用: source Filename)

source命令是在当前bash环境下读取并执行FileName中的命令

4.关于source devel/setup.bash

在工作空间的devel文件夹中存在几个setup.*sh形式的环境变量设置脚本。

使用source命令运行这些脚本文件,则可以设置工作空间的环境变量

为了确保环境变量已经生效,可以使用如下命令进行检查:echo $ROS_PACKAGE_PATH

没有用source运行该脚本时,打印的路径为:/opt/ros/noetic/share

运行后,打印的路径为:/home/w/桌面/catkin_ws/src:/opt/ros/noetic/share

在终端中使用source命令设置的环境变量只能在当前终端中生效

如果希望环境变量在所有终端中有效,则需要在终端的配置文件./bashrc中加入该语句

这样每次打开新的终端就不用重新输入,但缺点是这会让bashrc中的内容变多

5.关于ROS版本

ros有多个版本,每个版本的维护时间通常为5年,对应的ubuntu也不一样

如16.04对应Kinetic版本ROS;18.04对应Melodic版本ROS;20.04对应Noetic版本ROS;

6.关于catkin:一种编译系统

CMake是对make工具的生成器,是更高层的工具,它简化了编译构建过程,能够管理大型项目,具有良好的扩展性。

对于ROS这样大体量的平台来说,就采用的是CMake,并且ROS对CMake进行了扩展,于是便有了Catkin编译系统

catkin_make是将cmake与make的编译方式做了一个封装的指令工具, 规范了工作路径与生成文件路径.(catkin_make > cmake > make)

早期的ROS编译系统是rosbuild,后来Catkin作为rosbuild的替代品被正式投入使用(rosbuild已经被逐步淘汰)

7.关于catkin_make(执行该命令时会先执行catkin_init_workspace(若之前未执行))

在新建catkin工作空间时帮我们创建了一个顶层的CMakeLists.txt文件;注意:禁止更改catkin_init_workspace后生成的CMakeLists.txt文件!因为这个文件为一个软链接文件(从图标便可看出)(https://blog.csdn.net/qq_37769337/article/details/128346481),对它进行修改将改变原文件,所有工作空间由catkin_init_worksapce创建的CMakeLists.txt都会受到影响

它会递归的寻找到当前工作空间下的所有软件包内的CMakeLists.txt依次来编译每一个软件包

这就是catkin_make命令在catkin_ws的工作空间目录下,src目录之上执行的原因

catkin_make 实际和下面的指令是等效的

$ cd ~/catkin_ws

$ cd src

$ catkin_init_workspace

$ cd ..

$ mkdir build

$ cd build

$ cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel

$ make

所以最先被编译的是那个在src下的公用的CMakeList.txt文件

参考:https://blog.csdn.net/qq_25241325/article/details/80737036

8.关于find_package

${XXX_INCLUDE_DIRS}和${XXX_LIBRARIES}这两个变量是需要定义的,他们的定义是由.cmake文件完成并赋值

.cmake文件一共有两个:分别是FindXXX.cmake和XXXConfig.cmake

查找.cmake文件的两种模式(不特殊指定的话find_package执行的是Module模式)

Module模式:搜索CMAKE_MODULE_PATH指定路径下的FindXXX.cmake文件,执行该文件从而找到XXX库

给XXX_INCLUDE_DIRS和XXX_LIBRARIES两个变量赋值的操作由FindXXX.cmake模块完成

Config模式:搜索XXX_DIR指定路径下的XXXConfig.cmake文件,执行该文件从而找到XXX库

给XXX_INCLUDE_DIRS和XXX_LIBRARIES两个变量赋值的操作由XXXConfig.cmake模块完成

XXX_DIR需在Find_package之前定义,如set(Caffe_DIR PATH),PATH路径下包含的就是所需要的.cmake文件

对于find_package(catkin),其寻找的库路径作为环境变量需先执行source devel/setup.bash进行添加,才能找到对应的.cmake文件

9.关于catkin_package ------ 暂未弄明白

已知的是它会生成kgConfig.cmake文件供find_package寻找相应的库

10.关于ROS中的log日志

保存路径:默认在~/.ros/log目录下,该目录可以通过修改环境变量ROS_LOG_DIR或者ROS_HOME进行修改

1、ROS_HOME

ros默认的home路径是~/.ros,默认情况下该目录下保存log文件和test的结果文件

通过修改这个环境变量可以改变上面两个文件的保存路径。

2、ROS_LOG_DIR

该变量指向ros输出的log文件保存的目录

该变量为空时,log文件默认保存在ROS_HOME指向的目录中;

设置该变量后,输出的log文件保存在ROS_LOG_DIR指向的目录中。一般在~/.bashrc文件中设置该变量

export ROS_LOG_DIR=/home/w/桌面/log,重启终端后便将log目录设置到/home/w/桌面/log位置

11.关于ROS_INFO和ROS_INFO_STREAM

ROS_INFO(“INFO message %d”,k),相当于c中的printf;

ROS_INFO_STREAM("INFO message." << k),相当于c++中的cout;

LoggerLevel共5个级别,修改输出级别可通过命令:rqt_logger_level进行修改

问题:将节点信息输出设置为output="log"后,在log中并没有找到ROS_INFO的信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

|清风|

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值