编译工作空间
$ sudo apt install python3-colcon-ros
$ cd ~/dev_ws/
$ colcon build
编译成功后,就可以在工作空间中看到自动生产的build、log、install文件夹
src:存放代码
build:编译的中间文件
log:日志文件
install:代码编译结果(一些节点的程序)
设置环境变量
$ source install/local_setup.sh # 仅在当前终端生效
$ echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc # 所有终端均生效
功能包
把不同功能的代码划分到不同的功能包中
$ ros2 pkg create --build-type <build-type> <package_name>
pkg:表示功能包相关的功能;
create:表示创建功能包;
build-type:表示新创建的功能包是C++还是Python的,如果使用C++或者C,那这里就跟ament_cmake,如果使用Python,就跟ament_python;
package_name:新建功能包的名字。
分别创建c++和python版本的功能包
$ cd ~/dev_ws/src
$ ros2 pkg create --build-type ament_cmake learning_pkg_c # C++
$ ros2 pkg create --build-type ament_python learning_pkg_python # Python
编译功能包:
$ cd ~/dev_ws
$ colcon build # 编译工作空间所有功能包
$ source install/local_setup.bash
在ROS 2的功能包中,无论是C++还是Python版本,通常会包含一些常见的文件和目录,它们各自的作用如下:
-
CMakeLists.txt:这是CMake构建系统的配置文件,用于指定编译选项、依赖项和生成目标等。
-
package.xml:这是功能包的元数据文件,用于描述功能包的名称、版本、作者、依赖项等信息。
-
src/:这个目录通常包含了实现功能包的源代码文件,可以是C++源文件或Python脚本文件。
-
include/:如果是C++功能包,这个目录通常包含头文件(.h或.hpp),用于声明类、函数和常量等。
-
launch/:这个目录通常包含用于启动节点和配置参数的launch文件,可以通过launch文件来启动多个节点和设置节点参数。
-
msg/:这个目录通常包含消息定义文件(.msg),用于定义自定义消息类型。
-
srv/:这个目录通常包含服务定义文件(.srv),用于定义自定义服务类型。
-
action/:这个目录通常包含动作定义文件(.action),用于定义自定义动作类型。
-
config/:这个目录通常包含配置文件,用于存储功能包的参数配置。
-
scripts/:如果是Python功能包,这个目录通常包含一些Python脚本文件,用于实现功能包的逻辑。
-
test/:这个目录通常包含用于功能包的单元测试和集成测试的测试文件。
-
setup.py:这个文件是Python功能包特有的文件,用于构建和安装Python包的配置文件。它定义了包的元数据、依赖项和入口点等信息,以及构建和安装的相关配置。
这些文件和目录组成了一个完整的ROS 2功能包,用于实现特定的功能和节点。具体的文件和目录结构可能会因项目需求而有所不同,但以上列举的是常见的文件和目录。
需要注意的是,C++和Python功能包在性能方面可能存在差异,因此在选择时需要考虑到具体的应用场景和要求。同时,对于Python功能包,还需要包含setup.py
文件来完成包的构建和安装。
节点
执行某些具体的任务,每个节点都是一个可以独立运行的可执行文件。每一个节点都需要有唯一的命名,可以通过节点的名称来做查询。
要实现一个节点,代码的实现流程是这样做:
1.编程接口初始化
2.创建节点并初始化
3.实现节点功能
4.销毁节点并关闭接口
$ ros2 run learning_node node_helloworld_class #最后面是节点的名字
修改代码后一定要进行编译再运行节点,因为运行的是install中的代码编译结果
在工作空间的文件夹打开终端进行编译
$ colcon build
节点的命令
$ ros2 node list # 查看节点列表
$ ros2 node info <node_name> # 查看节点信息