Arahkan ke direktori package Anda:
cd ~/ros2_ws/src/my_cpp_pkg/srcBuat file C++ node:
touch my_first_node.cppBuka my_first_node.cpp dan isi dengan:
#include "rclcpp/rclcpp.hpp"
int main(int argc, char **argv)
{
rclcpp::init(argc, argv);
auto node = std::make_shared<rclcpp::Node>("cpp_test");
RCLCPP_INFO(node->get_logger(), "Hello CPP Node");
rclcpp::spin(node);
rclcpp::shutdown();
return 0;
}Tekan Ctrl+Shift+P > C/C++: Edit Configurations (JSON), lalu tambahkan rclcpp ke includePath:
"includePath": [
"${workspaceFolder}/**",
"/opt/ros/humble/include/**"
],Edit file CMakeLists.txt Anda seperti berikut:
cmake_minimum_required(VERSION 3.8)
project(my_cpp_pkg)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
add_executable(cpp_node src/my_first_node.cpp)
ament_target_dependencies(cpp_node rclcpp)
install(TARGETS
cpp_node
DESTINATION lib/${PROJECT_NAME}
)
ament_package()Arahkan ke root workspace:
cd ~/ros2_ws
colcon build --packages-select my_cpp_pkgsource install/setup.bash
ros2 run my_cpp_pkg cpp_nodeGunakan pendekatan berbasis class untuk struktur yang lebih rapi dan scalable:
#include "rclcpp/rclcpp.hpp"
class MyNode : public rclcpp::Node
{
public:
MyNode() : Node("cpp_test"), counter_(0)
{
RCLCPP_INFO(this->get_logger(), "Hello CPP Node");
timer_ = this->create_wall_timer(
std::chrono::seconds(1),
std::bind(&MyNode::timerCallBack, this));
}
private:
void timerCallBack()
{
counter_++;
RCLCPP_INFO(this->get_logger(), "Hello %d", counter_);
}
rclcpp::TimerBase::SharedPtr timer_;
int counter_;
};
int main(int argc, char **argv)
{
rclcpp::init(argc, argv);
auto node = std::make_shared<MyNode>();
rclcpp::spin(node);
rclcpp::shutdown();
return 0;
}| 🏠 Menu Utama |
|---|