hello_world_in_ROS2
基本操作
创建工作空间
1
2
3mkdir -p helloworld/src #创建目录
cd helloworld
colcon build --package-select filename创建功能包
1
2
3
4
5
6
7cd src
ros2 pkg create pkg01_helloworld_cpp(功能包名)...
--build-type ament_cmake... #创建类型,如果是python就是ament_python
--dependencies rclcpp... #(添加依赖)
--node-name helloworld (可执行文件名)
ros2 pkg create pkg01_helloworld_cpp--build-type ament_cmake --dependencies rclcpp --node-name helloworldnode名最好与工作空间名一致
写源文件
配置文件后编译
pakage.xml 主要看
rclcpp 
编译就还是回到主工作空间里面:
1
colcon build
运行代码
1 | source install/setup.bash |
2. ROS2中的初始化和资源释放
在 C++ 中,需要进行初始化和资源释放的过程主要有以下几个原因:
1. 资源管理
C++ 是一种手动管理资源的编程语言,这意味着程序员需要显式地分配和释放内存和其他资源。初始化和资源释放是确保资源正确管理的重要步骤,防止内存泄漏和资源枯竭。
- 初始化:在程序开始时初始化资源,如内存、文件句柄、网络连接等。
- 资源释放:在程序结束或不再需要资源时释放这些资源,确保系统资源可以被其他程序使用。
2. 防止资源泄漏
资源泄漏是指程序运行过程中分配的资源没有正确释放,导致资源无法被重新利用,最终可能耗尽系统资源。通过适当地初始化和释放资源,可以有效防止资源泄漏。
3. 确保程序稳定和高效运行
正确的资源管理可以确保程序稳定和高效地运行,减少崩溃和性能下降的风险。例如,在 ROS 2 中,初始化和关闭过程确保了节点之间的通信正常进行和正确终止。
4. ROS 2 特定原因
在 ROS 2 中,初始化和资源释放尤其重要,因为它涉及到多个节点之间的通信和协调。具体原因包括:
- 初始化:
rclcpp::init(argc, argv);初始化 ROS 2 客户端库,确保所有相关组件正确设置,以便节点可以正常工作。这包括设置上下文、解析参数等。 - 资源释放:
rclcpp::shutdown();关闭 ROS 2 客户端库,确保所有资源正确释放,所有节点之间的通信正常终止。这对于避免资源泄漏和确保程序正确退出至关重要。
示例代码
以下是 ROS 2 节点示例代码的详细解释:
1 | cpp复制代码 |
解释
- **
rclcpp::init(argc, argv);**:初始化 ROS 2 客户端库,设置上下文环境,解析命令行参数,确保节点可以正常运行。 - **
auto node = std::make_shared<rclcpp::Node>("helloworld_node_cpp");**:创建一个 ROS 2 节点,节点名称为helloworld_node_cpp。 - **
RCLCPP_INFO(node->get_logger(), "Hello, world!");**:使用日志记录器输出一条信息。 - **
rclcpp::shutdown();**:关闭 ROS 2 客户端库,释放所有资源,确保程序正常终止。
通过这些步骤,可以确保 ROS 2 节点在初始化后正常工作,并在结束时正确释放资源。
- 标题: hello_world_in_ROS2
- 作者: Porcovsky
- 创建于 : 2024-09-07 09:40:03
- 更新于 : 2025-06-12 11:11:19
- 链接: https://pocro.github.io/2024/09/07/ROS2/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
