序文
「Rosのロボットプログラミングの練習、」第三章ルーチン2つの虚定義データ型。
実装プロセス
ワークスペースを作成し、前の章のブログを参照:
ROSロボットプログラミングの練習(3.1) -話題のニュースリリースを
ファイル構造の基本的なパッケージを見てください:
cd ~/catkin_ws/src/basic
ls
tree
[OK]を聞かせてのは、動作を開始する
1を、私たちはメッセージタイプを作成し、ファイルが作成されますComplex.msg
cd ~/catkin_ws/src/basic
mkdir msg
cd msg
vi Complex.msg
VIMで編集する、私は押してキーボード入力モードに入り、次のとおりです。
[Esc]キーを押して編集モード、入力終了するには「:WQ」(注:引用符で囲まれたすべての内容「:」)、保存して終了します。
2、編集ファイルpackage.xml
cd ..
vi package.xml
2.1 <build_depend> rospy </ build_depend> <build_depend> std_msgs </ build_depend>
添加これらbuild_dependの近傍において:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
注:あなたがROSの藍のバージョンがある場合は、exec_dependの必要性がrun_dependを交換します。
2.2
上記のESC終了編集モード、入力「:WQは、」保存して終了します。
3、編集ファイルCMakeLists.txt
vi CMakeLists.txt
3.1、変性find_package()、プラスmessage_generation:
3.2レビューcatkin_package()、プラスmessage_runtime:
3.3レビューadd_message_files()、プラスComplex.msg:
3.4レビューgenerate_message()、一緒に生成システムとは、除去。注:
4、 SRC基本パッケージにmessage_publisher.pyとmessage_subscriber.pyファイルを追加します。
cd src
vi message_publisher.py
vi message_subscriber.py
コードにそれぞれ貼り付けます。
message_publisher.py
#!/usr/bin/env python
import roslib; roslib.load_manifest('basic')
import rospy
from basic.msg import Complex
from random import random
rospy.init_node('message_publisher')
pub=rospy.Publisher('complex',Complex)
rate=rospy.Rate(2)
while not rospy.is_shutdown():
msg=Complex()
msg.real=random()
msg.imaginary=random()
pub.publish(msg)
rate.sleep()
message_subscriber.py
#!/usr/bin/env python
import roslib; roslib.load_manifest('basic')
import rospy
from basic.msg import Complex
def callback(msg):
print 'Real:',msg.real
print 'Imaginary',msg.imaginary
print
rospy.init_node('message_subscriber')
sub = rospy.Subscriber('complex', Complex,callback)
rospy.spin()
5、ターミナル実行roscoreを開きます。
roscore
6、リターンcatkin_wsのルートディレクトリ、catkin_makeのコンパイルと実行スクリプトのパブ
cd ~/catkin_ws
catkin_make
source devel/setup.bash
rosrun basic message_publisher.py
7、他の端末、実行subscriber.pyを開きます
rosrun basic message_subscriber.py
8、業績: