ROS2-创建一个简单节点
接上一节的内容。
参考博客:ROS2中创建一个节点
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
接下来,使用ros2 pkg create命令创建一个新的包。例如,我们将创建一个名为robotcpp和robotpy的新包:
ros2 pkg create robotcpp --build-type ament_cmake --dependencies rclcpp
ros2 pkg create robotpy --build-type ament_python --dependencies rclpy
如下:

在C++中创建一个节点
1. 编写C++节点代码
首先,导航到robotcpp包的src目录:
cd ~/ros2_ws/src/robotcpp/src
创建一个名为my_robot_node.cpp的C++文件,并添加以下代码:
#include "rclcpp/rclcpp.hpp"
class MyRobotNode : public rclcpp::Node {
public:
MyRobotNode() : Node("my_robot_node") {
RCLCPP_INFO(this->get_logger(), "Hello, ROS 2 from C++!");
}
};
int main(int argc, char **argv) {
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<MyRobotNode>());
rclcpp::shutdown();
return 0;
}
2. 修改CMakeLists.txt
打开CMakeLists.txt文件,并添加以下内容以包含新的C++节点:
add_executable(my_robot_node src/my_robot_node.cpp)
ament_target_dependencies(my_robot_node rclcpp)
install(TARGETS
my_robot_node
DESTINATION lib/${PROJECT_NAME})
如下:

3. 构建包
返回到工作空间的根目录,并构建包:
cd ~/ros2_ws
colcon build
如下:

4. 运行C++节点
构建完成后,使用以下命令运行C++节点:
source ~/ros2_ws/install/setup.bash
ros2 run robotcpp my_robot_node
您应该会在终端中看到"Hello, ROS 2 from C++!"的输出。

在Python中创建一个节点
1. 编写Python节点代码
首先,导航到robotpy包的robotpy目录::
cd ~/ros2_ws/src/robotpy/robotpy
创建一个名为my_robot_node.py的Python文件,并添加以下代码:
import rclpy
from rclpy.node import Node
class MyRobotNode(Node):
def __init__(self):
super().__init__('my_robot_node')
self.get_logger().info('Hello, ROS 2 from Python!')
def main(args=None):
rclpy.init(args=args)
node = MyRobotNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
2. 修改setup.py
打开setup.py文件,并添加以下内容以包含新的Python节点:
"my_robot_node=robotpy.my_robot_node:main"
如下:

3. 构建包
返回到工作空间的根目录,并构建包:
cd ~/ros2_ws
colcon build
4. 运行Python节点
构建完成后,使用以下命令运行Python节点:
source ~/ros2_ws/install/setup.bash
ros2 run robotpy my_robot_node
您应该会在终端中看到"Hello, ROS 2 from Python!"的输出。
