ROS python编程
ROS
由于python中包含大量的库,这里将ros与python结合进行编程。
初始化ROS环境
# 创建workspace
mkdir pyRos_ws && cd pyRos_ws
mkdir src && cd src
catkin_init_workspace
# 创建一个package添加rospy
catkin_create_pkg learning_topic rospy std_msgs
cd learning_topic
# 该文件夹用于存放python文件
mkdir scripts
创建ROS节点
这里创建ros节点
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
import std_msgs.msg
from std_msgs.msg import *
def main():
# 初始化节点
rospy.init_node("my_node", anonymous=False)
# 判断ROS是否关闭
while not rospy.is_shutdown():
time = rospy.Time.now().to_sec()
# print 时间
print (time)
rospy.sleep(1.0)
if __name__ == "__main__":
try:
main()
except rospy.ROSInterruptException:
pass
使用Python创建多个Marker
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from visualization_msgs.msg import MarkerArray, Marker
if __name__ =="__main__":
rospy.init_node("publish_markers")
pub_markers = rospy.Publisher("/Markers",MarkerArray,queue_size=10)
pub_marker = rospy.Publisher("/Marker", Marker, queue_size=10)
markers = MarkerArray()
a = 0
b = 0
marker = Marker()
marker.header.stamp = rospy.Time.now()
marker.header.frame_id = "map"
marker.type = Marker.CUBE
marker.action = Marker.ADD
while not rospy.is_shutdown():
# marker.lifetime = rospy.Duration(1)
marker.id = a
marker.pose.position.x = b
marker.pose.position.y = a
marker.pose.position.z = 2
marker.pose.orientation.w = 1.0
marker.color.r = 0.0
marker.color.g = 0.0
marker.color.b = 1.0
marker.color.a = 0.4
marker.scale.x = 2
marker.scale.y = 1
marker.scale.z = 0.2
a+=1
b+=1
pub_marker.publish(marker)
markers.markers.append(marker)
pub_markers.publish(markers)
rospy.sleep(1.0)
这里注意,每一个mark的id必须不一样,不然只显示一个