Sekarang kita akan membuat node service server menggunakan C++ di ROS 2. Node ini akan menangani permintaan penjumlahan dua bilangan bulat dari client.
Arahkan ke folder:
ros2_ws/src/my_cpp_pkg/src/Kemudian buat file C++ baru, misalnya:
touch add_two_ints_server.cpp#include "example_interfaces/srv/add_two_ints.hpp"
#include "rclcpp/rclcpp.hpp"
using namespace std::placeholders; // Untuk bind placeholder fungsi callback
class AddTwoIntsServerNode : public rclcpp::Node {
public:
AddTwoIntsServerNode() : Node("add_two_ints_server") {
server_ = this->create_service<
example_interfaces::srv::AddTwoInts>( // Buat service server
"add_two_ints", // Nama servicenya
std::bind(&AddTwoIntsServerNode::callbackAddTwoInts, this, _1,
_2) // Binding callback
);
RCLCPP_INFO(this->get_logger(),
"Add Two Ints Service has been started.");
}
private:
void callbackAddTwoInts(
const example_interfaces::srv::AddTwoInts::Request::SharedPtr
request, // Data request dari client
const example_interfaces::srv::AddTwoInts::Response::SharedPtr
response // Tempat menaruh hasil (sum)
) {
response->sum = request->a + request->b;
RCLCPP_INFO(this->get_logger(), "%d + %d = %d", (int)request->a,
(int)request->b, (int)response->sum);
}
rclcpp::Service<example_interfaces::srv::AddTwoInts>::SharedPtr
server_; // Deklarasi service server
};
int main(int argc, char **argv) {
rclcpp::init(argc, argv);
auto node = std::make_shared<AddTwoIntsServerNode>(); // Buat objek node
rclcpp::spin(node);
rclcpp::shutdown();
return 0;
}create_service<...>digunakan untuk membuat service server.callbackAddTwoInts()akan dipanggil setiap kali client mengirim request.response->sum = request->a + request->badalah proses utama server.- Node akan terus berjalan hingga ditutup secara manual (Ctrl+C).
Tambahkan baris berikut:
add_executable(add_two_ints_server src/add_two_ints_server.cpp)
ament_target_dependencies(add_two_ints_server rclcpp example_interfaces)
install(TARGETS
add_two_ints_server
DESTINATION lib/${PROJECT_NAME}
)Tambahkan dependensi berikut jika belum ada:
<depend>example_interfaces</depend>Arahkan ke folder utama workspace:
cd ~/ros2_ws
colcon build --packages-select my_cpp_pkgKemudian jalankan node:
ros2 run my_cpp_pkg add_two_ints_serverContoh hasil terminal dengan client python:

| 🏠 Menu Utama |
|---|