当前位置:网站首页>[ROS](01)创建ROS工作空间
[ROS](01)创建ROS工作空间
2022-08-02 14:02:00 【CynalFly】
文章只是个人学习过程中学习笔记,主要参考ROS教程1。
1. 创建catkin工作空间
Catkin工作空间是一个文件夹,可以在其中修改、构建和安装 catkin 包。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
在运行上述命令后,在catkin_ws工作空间下有build
、devel
、src
这个三个目录文件夹(这3个catkin编译系统默认的)。
build
(Build Space):catkin(CMake)的缓存信息和其他中间件devel
(Development Space):生成目标文件(包括头文件、动态链接库、静态链接库、可执行文件等)、环境变量src
(Source Space):ROS的catkin软件包(源码)
Tips:早期有些教程仍然保留
catkin_init_workspace
这条初始化命令,它的作用就是在catkin_ws
工作空间的src
目录下创建CMakeLists.txt
文件。但实际上catkin_make
命令包含了catkin_init_workspace
,不必再调用了(当然你也可以使用,没有任何影响)。
接下来设置环境变量,首先source
一下新生成的setup.*sh
文件(在devel目录下可看见几个setup.*sh
):
source devel/setup.bash
但是上述命令只适用当前终端,这导致每次打开新的终端都需要source
命令一下,重新刷新环境变量,才能使用ROS相关命令。解决办法是,在终端中输入如下命令,如此每次打开终端,.bashrc
会自动运行:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
我们用 vi 编辑器打开 ~/.bashrc
文件,在文件的末尾(红色框内)这行就是我们添加的ROS系统的环境变量,上一行是我们创建的catkin_ws工作空间的环境变量。在终端中输入如下命令:
vi ~/.bashrc
想要查看环境变量,在终端中输入如下命令:
echo $ROS_PACKAGE_PATH
通过上述命令后,显示包含那些保存有ROS软件包的路径,并且每个路径之间用冒号(:)分隔开来。
路径PATH格式:/home/<
username
>/catkin_ws/src:/opt/ros/<distro
>/share
2. catkin工作空间结构
要查看catkin工作空间的结构,可以使用tree命令,显示文件结构,在终端中输入如下命令:
cd ~/catkin_ws
sudo apt install tree
tree
显示的结构如下所示:
.
├── build
│ ├── atomic_configure
│ │ ├── env.sh
│ │ ├── local_setup.bash
│ │ ├── local_setup.sh
│ │ ├── local_setup.zsh
│ │ ├── setup.bash
│ │ ├── setup.sh
│ │ ├── _setup_util.py
│ │ └── setup.zsh
│ ├── catkin
│ │ └── catkin_generated
│ │ └── version
│ │ └── package.cmake
│ ├── catkin_generated
│ │ ├──
......
├── devel
│ ├── cmake.lock
│ ├── env.sh
│ ├── lib
│ ├── local_setup.bash
│ ├── local_setup.sh
│ ├── local_setup.zsh
│ ├── setup.bash
│ ├── setup.sh
│ ├── _setup_util.py
│ └── setup.zsh
└── src
└── CMakeLists.txt -> /opt/ros/melodic/share/catkin/cmake/toplevel.cmake
ROS.otg. ROS教程[EB/OL]. 2020-12-22[2022-7-5]. http://wiki.ros.org/cn/ROS/Tutorials. ︎
边栏推荐
- Tornado框架路由系统介绍及(IOloop.current().start())启动源码分析
- Interview | with questions to learn, Apache DolphinScheduler Wang Fuzheng
- Interviewer: Can you talk about optimistic locking and pessimistic locking?
- redis延时队列
- 动态刷新日志级别
- 目标检测场景SSD-Mobilenetv1-FPN
- VMM是什么?_兮是什么意思
- 网络安全第六次作业
- You can't accept 60% slump, there is no eligible for gain of 6000% in 2021-05-27
- CVE-2020-27986 (Sonarqube sensitive information leak) vulnerability fix
猜你喜欢
随机推荐
els long block deformation conditions, boundary collision judgment
Geoffery Hinton:深度学习的下一个大事件
deal!It's July 30th!
第八单元 中间件
Go语言初始
EasyExcel 的使用
第十五单元 分页、过滤
RKMPP API安装使用总结
此次519暴跌的几点感触 2021-05-21
瑞吉外卖笔记——第08讲读写分离
The future of financial services will never stop, and the bull market will continue 2021-05-28
Swagger 的使用
网络安全第三次作业
关于市场后市的发展预测? 2021-05-23
How to solve mysql service cannot start 1069
RHCE第一天作业
如何解决1045无法登录mysql服务器
Flask-SQLAlchemy
无序数组排序并得到最大间隔
Tornado框架路由系统介绍及(IOloop.current().start())启动源码分析