Python 真香~
继续使用Python吧。
那就还是用之前那个learning_service的package吧。
在scripts文件夹里面新增 turtle_command_server.py
#!/usr/bin/env python
import rospy
import thread,time
from geometry_msgs.msg import Twist
from std_srvs.srv import Trigger, TriggerResponse
pubCommand = False
turtle_vel_pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size = 10)
def command_thread():
while True:
if pubCommand:
vel_msg = Twist()
vel_msg.linear.x = 0.5
vel_msg.angular.z = 0.2
turtle_vel_pub.publish(vel_msg)
time.sleep(0.1)
def commandCallBack(req):
global pubCommand
pubCommand = bool(1-pubCommand)
rospy.loginfo("Publish turtle velocity command![%d]", pubCommand)
return TriggerResponse(1,"Change turtle command state!")
def turtle_command_server():
rospy.init_node('turtle_command_server')
s = rospy.Service('/turtle_command', Trigger, commandCallBack)
print "Ready to receive trutle command."
thread.start_new_thread(command_thread,())
rospy.spin()
if __name__ == '__main__':
turtle_command_server()
原理Python真的不用配置,真香~~
直接走起。
catkin_make
roscore
rosrun turtlesim turtlesim_node
rosrun learning_service turtle_command_server.py
好了准好三个了,再开一个来输入控制代码
rosservice call /turtle_command "{}"
一次开始运动,再来一次就是停止运动。
来,玩弄你的小乌龟。
**现在还不太清楚什么时候要配置CMakelists的。不过感觉Python比较香。