ros2 pkg create --build-type ament_cmake test1
或者
ros2 pkg create --build-type ament_cmake test1 --dependencies rclcpp std_msgs
其中test1为包名。
--dependencies 指定依赖的功能包,如 rclcpp、std_msgs
2、编写代码
在 test1/src/ 目录下新建文件 talker.cpp:
#include <rclcpp/rclcpp.hpp>
#include <std_msgs/msg/string.hpp>
int main(int argc, char * argv[])
{
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared("talker");
auto publisher = node->create_publisher<std_msgs::msg::String>("chatter", 10);
rclcpp::WallRate loop_rate(1);
while (rclcpp::ok()) {
auto msg = std_msgs::msg::String();
msg.data = "Hello, ROS 2!";
RCLCPP_INFO(node->get_logger(), "Publishing: '%s'", msg.data.c_str());
publisher->publish(msg);
rclcpp::spin_some(node);
loop_rate.sleep();
}
rclcpp::shutdown();
return 0;
}
3、修改cmake文件
在 CMakeLists.txt 增加如下内容:
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
add_executable(talker src/talker.cpp)
ament_target_dependencies(talker rclcpp std_msgs)
install(TARGETS
talker
DESTINATION lib/${PROJECT_NAME}
)
4、编译
回到ROS2工作空间根目录
colcon build --packages-select cpp_example
source install/setup.bash
5、运行
ros2 run cpp_example talker
O了!!!