目录
3.3 Source the setup file:获取安装文件
1.创建工作区
首先,创建一个目录 (
ros2_ws
) 来包含我们的工作区:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
ros2的colcon编译器和ros1的catkin编译器区别:与catkin相比没有devel
目录。
2.构建工作区
这允许通过更改空间中的文件(例如 Python 文件或其他未编译的资源)来更改已安装的文件,以加快迭代速度。
`colcon build
ament_cmake
devel
--symlink-install
source
`
colcon build --symlink-install
#相关参数及意思
--packages-up-to构建您想要的包,以及它的所有依赖项,但不是整个工作区(节省时间)
--symlink-install每次调整 python 脚本时都不必重新构建
--event-handlers console_direct+在构建时显示控制台输出(可以在log目录中找到)
编译后,ros2_ws/src下的的文件目录:
├── build ├── install ├── log └── src 存放代码的空间(功能包的代码、配置文件、lunach文件)
运行测试 :要为我们刚刚构建的包运行测试,请运行以下命令
colcon test
设置环境变量:
colcon 成功完成构建后,输出将在
install
目录中。您可以使用任何已安装的可执行文件或库之前,需要将它们添加到您的路径和库路径中colcon 将在
install
目录中生成 bash/bat 文件以帮助设置环境。这些文件会将所有必需的元素添加到您的路径和库路径中,并提供由包导出的任何 bash 或 shell 命令。
. install/setup.bash
3.创建自己的包
3.1 创建一个包的架构
#1.创建一个包的架构
cd ~/ros2_ws/src
ros2 pkg create --build-type ament_cmake zhaoyan_package #<package_name>=zhaoyan_package
#可以加一个node-name,可选参数--node-name在包中创建一个简单的 Hello World 类型可执行文件
ros2 pkg create --build-type ament_cmake zhaoyan_package --node-name zhaoyan_node
3.2 构建自己的包
将包放入工作区特别有价值,因为您可以通过在工作区根目录中运行来一次构建多个包。否则,您将不得不单独构建每个包。
colcon build
cd ~/ros2_ws
colcon build --packages-select my_package
3.3 Source the setup file:获取安装文件
要使用新的包和可执行文件,首先打开一个新终端并获取主 ROS 2 安装。
cd ~/ros2_ws
. install/local_setup.bash
3.4使用自己的包
确定要运行您
--node-name
在包创建期间使用参数创建的可执行文件,请输入命令:
ros2 run zhaoyan_package zhaoyan_node
3.5检查自己的包
cd ~/ros2_ws/src/zhaoyan_package
ls
CMakeLists.txt include package.xml src
- package.xml:是介绍功能包的信息:名称、版本、功能、开发者信息、开源许可证、依赖信息等等
- CMakeLists.txt:描述功能包编译的规则,编译时候需要依赖的库
3.6自定义package.xml
创建包后,您可能已经在返回消息中注意到字段
description
和license
包含TODO
注释。这是因为包描述和许可声明不是自动设置的,但如果你想发布你的包,它们是必需的。该maintainer
字段可能还需要填写。
cd ros2_ws/src/zhaoyan_package
sudo vim zhaoyan_package.xml
<?xml version="1.0"?>
<?xml-model
href="http://download.ros.org/schema/package_format3.xsd"
schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>my_package</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="user@todo.todo">user</maintainer>
<license>TODO: License declaration</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
重新修改树根节点:<description>
<description>Beginner client libraries tutorials practice package</description>
重新修改树根节点:<liscense>
<license>Apache License 2.0</license>
重新修改树根节点:<maintainer>
<maintainer zhaoyan@163.com</maintainer>