[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包
程序员文章站
2022-07-14 22:17:42
...
文章目录
① 背景
Ⅰ什么手机ROS 2 包
可以将包视为ROS 2代码的容器。如果您希望能够安装代码或与他人共享代码,则需要将其组织在一个软件包中。使用软件包,您可以发布ROS 2的工作,并允许其他人轻松构建和使用它。
ROS 2中的软件包创建使用ament作为其构建系统,并使用colcon作为其构建工具。您可以使用官方支持的CMake
或Python
创建软件包,尽管确实存在其他构建类型
Ⅱ ROS 2 包有什么组成
cmake 包
-
package.xml
文件包含这个包里的元信息 -
CMakeLists.txt
怎么去编译这个包
最简单的长这个样子
my_package/
CMakeLists.txt
package.xml
python 包
-
package.xml
文件包含这个包里的元信息 -
setup.py
如何按爪个软件包 -
setup.cfg
保证ros2 可以找到这个包 -
your_package_name
- ROS 工具能找到这个包
大概这个样子
my_package/
setup.py
package.xml
resource/my_package
Ⅲ ROS 2 包和工作空间的关系
一个工作空间可以包含n个包,但是不推荐放很多个,不然每次rebuild 的时候,就是该出去遛弯的时候了
大概长这个样子
workspace_folder/
src/
package_1/
CMakeLists.txt
package.xml
package_2/
setup.py
package.xml
resource/my_package
...
package_n/
CMakeLists.txt
package.xml
② 前提
准备号工作空间dev_ws
③ 任务
==下面每个都会有C++ 和 python 两种方式 ==
Ⅰ 创建包
确保到dev_ws/src
路径下
一般我们创建包的命令这个样子就行:
- C++
ros2 pkg create --build-type ament_cmake <package_name>
- python
ros2 pkg create --build-type ament_python <package_name>
我们现在加选项 --node-name
可以创建hello world 的包
- C++
ros2 pkg create --build-type ament_cmake --node-name my_node_cpp my_package_cpp
- python
ros2 pkg create --build-type ament_python --node-name my_node_py my_package_py
Ⅱ 编译包
命令是 colcon build
也可以 选择只编译某一个包 colcon build --packages-select my_package_cpp
这里可能会报邮箱格式不正确的错误,把邮箱在xml里改一下,还是不行,就删除build/
文件夹重新来
Ⅲ 安装设置文件(setup.bash)
cd ~/dev_ws
. install/setup.bash
Ⅳ 运行包
因为用的–node_name 创建的,会有hello world出来
- C++
ros2 run my_package_cpp my_node_cpp
- python
ros2 run my_package_py my_node_py
Ⅴ 看看包里面都有啥子
-
C++
-
python
Ⅵ 修改 package.xml
description, license ,maintaine
r需要去改
这个样子
python要改的话,setup.py
要一致和package.xml
④ 总结
通过pkg
来创建包,通过 colcon
来编译,成功之后可以执行
命令的说明
usage: ros2 pkg create [-h] [--package-format {2,3}]
[--description DESCRIPTION] [--license LICENSE]
[--destination-directory DESTINATION_DIRECTORY]
[--build-type {cmake,ament_cmake,ament_python}]
[--dependencies DEPENDENCIES [DEPENDENCIES ...]]
[--maintainer-email MAINTAINER_EMAIL]
[--maintainer-name MAINTAINER_NAME]
[--node-name NODE_NAME] [--library-name LIBRARY_NAME]
package_name
Create a new ROS2 package
positional arguments:
package_name The package name
optional arguments:
-h, --help show this help message and exit
--package-format {2,3}, --package_format {2,3}
The package.xml format.
--description DESCRIPTION
The description given in the package.xml
--license LICENSE The license attached to this package
--destination-directory DESTINATION_DIRECTORY
Directory where to create the package directory
--build-type {cmake,ament_cmake,ament_python}
The build type to process the package with
--dependencies DEPENDENCIES [DEPENDENCIES ...]
list of dependencies
--maintainer-email MAINTAINER_EMAIL
email address of the maintainer of this package
--maintainer-name MAINTAINER_NAME
name of the maintainer of this package
--node-name NODE_NAME
name of the empty executable
--library-name LIBRARY_NAME
name of the empty library
上一篇: jQ常用操作dom元素的属性方法