ROSパブリケーション&サブスクリプション文字列

4299 ワード

Rosバージョン:Kinetic
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]

注:時間の都合により、詳細な展開がなされていない場合が多いので、ご質問があれば、下記にご記入ください
注:時間の都合により、展開できなかった内容が多数ございますので、ご質問がございましたら、下記にご記入ください