ROSパブリケーション&サブスクリプション文字列
4299 ワード
Rosバージョン:Kinetic
Linuxバージョン:Ubuntu 16.04
Step 1:ワークパーティションの作成
Step 2:エンジニアリングパッケージの作成
(1)ワークスペースに入る
std_msgs rospy roscppはパケット依存)
Step 3:パブリケーションノードを書く
(1)先ほど作成したfirstエンジニアリングパッケージに切り替える
publish.cppファイルを書いて次のコードを書きます
書き込み受信ノード
(1)subscribeを作成する.cppファイル
(2)subscribeを開く.cppファイルを書いて次のコードを書きます
Step 5:CMakeListsを編集する.txtファイル
(1)firstエンジニアリングパッケージに切り替える
(2)firstエンジニアリングパッケージのCMakeListsを開く.txtファイル
CMakeLists.txtファイルの後に次の文を追加します.
Step 5:プログラムテスト
(1)ワークスペースファイルに切り替える
(5)publishノードの実行
注:時間の都合により、詳細な展開がなされていない場合が多いので、ご質問があれば、下記にご記入ください
注:時間の都合により、展開できなかった内容が多数ございますので、ご質問がございましたら、下記にご記入ください
Linuxバージョン:Ubuntu 16.04
Step 1:ワークパーティションの作成
mkdir -p workSpace/src
cd ~/workSpace/src
catkin_init_workspace
Step 2:エンジニアリングパッケージの作成
(1)ワークスペースに入る
cd ~/workSpace/src
(2)catkin_を使用create_pkgコマンド作成、フォーマット:catkin_create_pkg+パッケージ名+std_msgs rospy roscpp( std_msgs rospy roscppはパケット依存)
catkin_create_pkg first std_msgs rospy roscpp
(3)パッケージのコンパイルcd ~/workSpace
catkin_make
Step 3:パブリケーションノードを書く
(1)先ほど作成したfirstエンジニアリングパッケージに切り替える
cd ~/workSpace/src/first
(2)srcファイルへcd ./src
(3)publishを作成する.cppファイルtouch publish.cpp
(4)オンpublish.cppファイルを書いて次のコードを書きます
#include "ros/ros.h"
#include "std_msgs/String.h"
#include
int main(int argc,char **argv)
{
ros::init(argc,argv,"publish");
ros::NodeHandle ch;
ros::Publisher chatterPublish = ch.advertise<:string>("chatter",1000);
ros::Rate loop_rate(25);
int count = 0;
while(ros::ok())
{
std_msgs::String msg;
std::stringstream stringStr;
stringStr << count;
msg.data = stringStr.str();
ROS_INFO("%s",msg.data.c_str());
chatterPublish.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
Step4: 書き込み受信ノード
(1)subscribeを作成する.cppファイル
touch subscribe.cpp
(2)subscribeを開く.cppファイルを書いて次のコードを書きます
#include "ros/ros.h"
#include "std_msgs/String.h"
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard : [%s]",msg->data.c_str());
}
int main(int argc,char **argv)
{
ros::init(argc,argv,"subscribe");
ros::NodeHandle ch;
ros::Subscriber chatterSubscribe = ch.subscribe("chatter",1000,chatterCallback);
ros::spin();
return 0;
}
Step 5:CMakeListsを編集する.txtファイル
(1)firstエンジニアリングパッケージに切り替える
cd ..
(2)firstエンジニアリングパッケージのCMakeListsを開く.txtファイル
gedit CMakeLists.txt
(3)CMakeLists.txtファイルの後に次の文を追加します.
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(publish src/publish.cpp)
target_link_libraries(publish ${catkin_LIBRARIES})
add_executable(subscribe src/subscribe.cpp)
target_link_libraries(subscribe ${catkin_LIBRARIES})
Step 5:プログラムテスト
(1)ワークスペースファイルに切り替える
cd ~/workSpace
(2)パッケージのコンパイルcatkin_make
(3)ROSを実行する前に、コアプログラムを開く必要があるroscore
(4)プログラム登録を行うcd ~/workSpace
source ./devel/setup.bash
(5)publishノードの実行
source ./devel/setup.bash
rosrun first publish
(6)publish効果は以下の通りです.[ INFO] [1503411559.389559783]: 728
[ INFO] [1503411559.429590639]: 729
[ INFO] [1503411559.469584022]: 730
[ INFO] [1503411559.509559116]: 731
[ INFO] [1503411559.549610605]: 732
[ INFO] [1503411559.589573180]: 733
[ INFO] [1503411559.629562030]: 734
[ INFO] [1503411559.669586479]: 735
[ INFO] [1503411559.709607218]: 736
[ INFO] [1503411559.749559386]: 737
[ INFO] [1503411559.789595977]: 738
[ INFO] [1503411559.829607695]: 739
[ INFO] [1503411559.869589854]: 740
[ INFO] [1503411559.909561388]: 741
(7)subscribeノードの実行source ./devel/setup.bash
rosrun first subscribe
(8)subscribe効果は以下の通りです.[ INFO] [1503411559.389923540]: I heard : [728]
[ INFO] [1503411559.430051186]: I heard : [729]
[ INFO] [1503411559.470006422]: I heard : [730]
[ INFO] [1503411559.510059517]: I heard : [731]
[ INFO] [1503411559.550007881]: I heard : [732]
[ INFO] [1503411559.590005653]: I heard : [733]
[ INFO] [1503411559.630056561]: I heard : [734]
[ INFO] [1503411559.670017638]: I heard : [735]
[ INFO] [1503411559.710036361]: I heard : [736]
[ INFO] [1503411559.750000053]: I heard : [737]
[ INFO] [1503411559.789929008]: I heard : [738]
[ INFO] [1503411559.830030398]: I heard : [739]
[ INFO] [1503411559.869964462]: I heard : [740]
[ INFO] [1503411559.909935796]: I heard : [741]
注:時間の都合により、詳細な展開がなされていない場合が多いので、ご質問があれば、下記にご記入ください
注:時間の都合により、展開できなかった内容が多数ございますので、ご質問がございましたら、下記にご記入ください