C++ を使用して ROS でノードを作成するには、次の手順に従う必要があります。
1. ROS ワークスペースを作成します (すでに ROS ワークスペースがある場合は、この手順をスキップしてください)。ターミナルを開き、次のコマンドを実行します。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
2. ROS ワークスペースのディレクトリを入力しsrc
、新しいパッケージを作成します。次のコマンドを実行します。
cd ~/catkin_ws/src
catkin_create_pkg my_package_name roscpp std_msgs
my_package_name
これにより、 という新しいパッケージが作成され、 とroscpp
がstd_msgs
依存関係として追加されます。
3. パッケージのディレクトリに移動し、my_node.cpp
という名前の新しいファイルを作成します。次のコマンドを実行します。
cd ~/catkin_ws/src/my_package_name
touch my_node.cpp
4.テキスト エディタ ( または などvim
)を使用してファイルnano
を開きmy_node.cpp
、ノード コードを記述します。簡単な例を次に示します。
#include <ros/ros.h>
#include <std_msgs/String.h>
void messageCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("Received message: %s", msg->data.c_str());
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "my_node");
ros::NodeHandle nh;
ros::Subscriber sub = nh.subscribe("my_topic", 10, messageCallback);
ros::spin();
return 0;
}
この例では、ROS ライブラリと std_msgs ライブラリを組み込み、messageCallback
受信したメッセージを処理するコールバック関数を定義し、関数内でmain
ノードを初期化し、サブスクライバを作成してノードのループを開始します。
5.CMakeLists.txt
ファイルを編集してノードをビルド システムに追加します。ターミナルを開き、パッケージのディレクトリに移動し、次のコマンドを実行します。
cd ~/catkin_ws/src/my_package_name
nano CMakeLists.txt
6.add_executable
行を見つけて、その下に次の行を追加します。
add_executable(my_node src/my_node.cpp) # 替换成你的节点文件名
target_link_libraries(my_node ${catkin_LIBRARIES})
7. ROS ワークスペースのルート ディレクトリに戻り、コンパイル コマンドを実行します。
cd ~/catkin_ws
catkin_make
8. ノードを実行します。ターミナルで次のコマンドを実行します。
rosrun my_package_name my_node
これによりノードが起動し、メッセージの受信と処理が開始されます。
独自のニーズに応じて変更および拡張します。また、コードを記述するときは、必ず ROS の仕様とベスト プラクティスに従ってください。