ros2节点
时间: 2025-05-31 16:49:02 AIGC 浏览: 56
### ROS2 节点使用教程
#### 启动功能包中的节点
启动某个特定的功能包下的节点可以使用 `ros2 run` 命令。其通用格式如下:
```bash
ros2 run <package_name> <executable_name>
```
例如,运行 `turtlesim` 功能包中的 `turtlesim_node` 可以通过以下命令实现[^1]:
```bash
ros2 run turtlesim turtlesim_node
```
#### 查看当前活动的节点列表
为了查看当前正在运行的所有节点,可使用以下命令:
```bash
ros2 node list
```
这会返回一个包含所有活跃节点名称的列表。
#### 获取指定节点的信息
如果需要详细了解某一个具体节点的相关信息(如订阅者、发布者以及服务等),可以通过以下命令完成:
```bash
ros2 node info <node_name>
```
例如,查询名为 `/turtlesim` 的节点详情时,执行以下命令即可:
```bash
ros2 node info /turtlesim
```
#### 修改节点名称
在某些情况下可能希望更改默认的节点名以便于区分不同的实例或者满足项目需求。此时可以在启动节点的时候利用重映射选项来改变名字。操作方法如下所示:
```bash
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_custom_turtle
```
这里我们将原本叫作 `turtlesim_node` 的实体改成了新的自定义称呼——`my_custom_turtle`[^1]。
#### 设置参数值
部分节点支持动态调整内部配置项,在实际部署过程中非常有用。要给目标程序传递额外设定,则需附加相应标志位及其对应数值。下面展示了一个例子说明如何把日志级别设为调试模式(即等级编码等于10):
```bash
ros2 run example_parameters_rclcpp parameters_basic --ros-args -p rcl_log_level:=10
```
此句脚本的作用就是告诉系统开启高级别的记录输出用于排查错误。
#### 编译单个源文件成独立可执行二进制形式
除了依赖colcon工具链构建整个工程外,还可以借助标准C++编译器手动处理单一.cpp文档生成单独的应用模块。以下是基于Linux环境下的示范流程:
假设存在这样一个简单的hello world样例代码存储路径位于~/workspace/src/helloworld_publisher/src/下命名为talker.cpp:
```cpp
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
using namespace std::chrono_literals;
class MinimalPublisher : public rclcpp::Node {
public:
MinimalPublisher() : Node("minimal_publisher") {
publisher_ = this->create_publisher<std_msgs::msg::String>("topic", 10);
timer_ = this->create_wall_timer(500ms, std::bind(&MinimalPublisher::timer_callback, this));
}
private:
void timer_callback(){
auto message = std_msgs::msg::String();
static uint8_t count=0;
message.data = "Hello World: "+to_string(count++);
RCLCPP_INFO(this->get_logger(), "Publishing: '%s'", message.data.c_str());
publisher_->publish(message);
}
rclcpp::TimerBase::SharedPtr timer_;
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_;
};
int main(int argc, char *argv[]) {
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<MinimalPublisher>());
rclcpp::shutdown();
return 0;
}
```
那么我们就可以按照常规方式进行编译链接工作了。首先确保安装好必要的库头文件和静态共享对象(.so),接着编写Makefile或者直接调用g++命令行一次性搞定全部事情。比如这样写法就很不错啦!
```bash
g++ talker.cpp \
-I/opt/ros/<distro>/include \
-L/opt/ros/<distro>/lib \
-lrclcpp -lrmw_cyclonedds_cpp -lrcl -lcaret -lpoco_foundationmd \
-o my_pub_app
```
注意替换掉< distro >为你所使用的发行版本号,像foxy,galactic等等[^2]。
---
阅读全文
相关推荐



















