Skip to content

Commit 6ceb293

Browse files
authored
Merge pull request #240 from benmaidel/feature/base_emu_reset_odom_melodic
reset odometry service for base emulation
2 parents 723109e + 9482e70 commit 6ceb293

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

cob_hardware_emulation/scripts/emulation_base.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from geometry_msgs.msg import Twist, Transform, TransformStamped
1010
from geometry_msgs.msg import Pose, PoseWithCovarianceStamped, Quaternion
1111
from nav_msgs.msg import Odometry
12+
from std_srvs.srv import Trigger, TriggerRequest, TriggerResponse
1213

1314
class EmulationBase(object):
1415
def __init__(self):
@@ -30,7 +31,10 @@ def __init__(self):
3031
rospy.Subscriber("/base/twist_controller/command", Twist, self.twist_callback, queue_size=1)
3132
rospy.Subscriber("/initialpose", PoseWithCovarianceStamped, self.initalpose_callback, queue_size=1)
3233
self.pub_odom = rospy.Publisher("/base/odometry_controller/odometry", Odometry, queue_size=1)
34+
rospy.Service("/base/odometry_controller/reset_odometry", Trigger, self.reset_odometry)
3335
self.br = tf2_ros.TransformBroadcaster()
36+
self.tf_buffer = tf2_ros.Buffer()
37+
self.tf_listener = tf2_ros.TransformListener(self.tf_buffer)
3438

3539
self.timestamp_last_update = rospy.Time.now()
3640

@@ -87,6 +91,16 @@ def initalpose_callback(self, msg):
8791
self.odom.pose.pose = Pose()
8892
self.odom.pose.pose.orientation.w = 1
8993

94+
def reset_odometry(self, req):
95+
transform = self.tf_buffer.lookup_transform("map", "base_link", rospy.Time(0))
96+
97+
self.initial_pose = transform.transform
98+
99+
self.odom.pose.pose = Pose()
100+
self.odom.pose.pose.orientation.w = 1
101+
102+
return TriggerResponse(True, "odometry resetted")
103+
90104
def twist_callback(self, msg):
91105
self.twist = msg
92106
self.timestamp_last_twist = rospy.Time.now()

0 commit comments

Comments
 (0)