diff --git a/stretch_gazebo/CMakeLists.txt b/stretch_gazebo/CMakeLists.txt index ac6fa979..1d5ab2ab 100644 --- a/stretch_gazebo/CMakeLists.txt +++ b/stretch_gazebo/CMakeLists.txt @@ -14,3 +14,6 @@ install(DIRECTORY launch install(DIRECTORY urdf DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} ) + +catkin_install_python(PROGRAMS scripts/unpause_after_wait + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) \ No newline at end of file diff --git a/stretch_gazebo/launch/gazebo.launch b/stretch_gazebo/launch/gazebo.launch index 6b75bcd5..67b226cf 100644 --- a/stretch_gazebo/launch/gazebo.launch +++ b/stretch_gazebo/launch/gazebo.launch @@ -53,6 +53,6 @@ - + diff --git a/stretch_gazebo/scripts/publish_ground_truth_odom.py b/stretch_gazebo/scripts/publish_ground_truth_odom.py deleted file mode 100755 index ac76c624..00000000 --- a/stretch_gazebo/scripts/publish_ground_truth_odom.py +++ /dev/null @@ -1,43 +0,0 @@ -#! /usr/bin/env python3 - -from gazebo_msgs.srv import GetModelState, GetModelStateRequest, GetWorldProperties -from nav_msgs.msg import Odometry -from std_msgs.msg import Header -from std_srvs.srv import Empty -import rospy -import time - -rospy.init_node('ground_truth_odometry_publisher') -odom_pub=rospy.Publisher('ground_truth', Odometry, queue_size=10) - -rospy.wait_for_service('/gazebo/get_model_state') -get_model_srv = rospy.ServiceProxy('/gazebo/get_model_state', GetModelState) -get_world_properties = rospy.ServiceProxy('/gazebo/get_world_properties', GetWorldProperties) -unpause_physics = rospy.ServiceProxy('/gazebo/unpause_physics', Empty) - -odom=Odometry() -header = Header() -header.frame_id='/ground_truth' -model = GetModelStateRequest() -model.model_name='robot' -models = [] -r = rospy.Rate(20) - -pause_timeout = time.time() + 4.0 -while time.time() < pause_timeout: - rospy.logwarn("Waiting %.2f seconds to unpause physics", pause_timeout - time.time()) - time.sleep(1.0) -unpause_physics() - -while not rospy.is_shutdown(): - if model.model_name not in models: - models = get_world_properties().model_names - rospy.logwarn("Waiting for %s to spawn to publish ground truth odometry", model.model_name) - else: - result = get_model_srv(model) - odom.pose.pose = result.pose - odom.twist.twist = result.twist - header.stamp = rospy.Time.now() - odom.header = header - odom_pub.publish(odom) - r.sleep() diff --git a/stretch_gazebo/scripts/unpause_after_wait b/stretch_gazebo/scripts/unpause_after_wait new file mode 100755 index 00000000..271d014b --- /dev/null +++ b/stretch_gazebo/scripts/unpause_after_wait @@ -0,0 +1,13 @@ +#!/usr/bin/env python + +from std_srvs.srv import Empty +import rospy +import time + +rospy.init_node('unpause_after_wait') +rospy.wait_for_service('/gazebo/unpause_physics') +unpause_physics = rospy.ServiceProxy('/gazebo/unpause_physics', Empty) + +time.sleep(4.0) +unpause_physics() +rospy.loginfo("Physics unpaused") \ No newline at end of file diff --git a/stretch_gazebo/urdf/stretch_gazebo.urdf.xacro b/stretch_gazebo/urdf/stretch_gazebo.urdf.xacro index 1e516a35..0465f507 100644 --- a/stretch_gazebo/urdf/stretch_gazebo.urdf.xacro +++ b/stretch_gazebo/urdf/stretch_gazebo.urdf.xacro @@ -596,6 +596,21 @@ hardware_interface/PositionJointInterface - + + + + + + + true + 25.0 + base_link + ground_truth + 0.01 + world + 0 0 0 + 0 0 0 + +