Robotics StackExchange | Archived questions

Reset Odometry poses

Hi , I am trying to create a script in python that resets the odometry values I get from my odometry topic but does not seem to work. Any thoughts?? Thanks in advance.

#! /usr/bin/env python

import rospy
from geometry_msgs.msg import Twist
from math import atan2,pi,pow,sqrt,radians   
from nav_msgs.msg import Odometry
from tf.transformations import euler_from_quaternion, quaternion_from_euler
import math
import tf

rospy.init_node('reset_robot_node', anonymous=True)  
pub2 = rospy.Publisher('/marvin/diff_drive_controller/odom', Odometry,queue_size=1)

msg1=Odometry()

msg1.pose.pose.position.x=None
msg1.pose.pose.position.y=None
msg1.pose.pose.position.z=None
msg1.pose.pose.orientation.x=None
msg1.pose.pose.orientation.y=None
msg1.pose.pose.orientation.z=None
msg1.pose.pose.orientation.z=None
pub1.publish(msg1)

Asked by johnbryant on 2018-12-06 11:02:13 UTC

Comments

Can you please tell us what it is that you really want to do? I have a suspicion that "reset[ting] the odometry values" is something you want to do to achieve something else. The code you show won't do what you think it does, so to avoid an xy-problem, please provide a little more info.

Asked by gvdhoorn on 2018-12-07 03:58:16 UTC

Hi, thanks for your immediate response. Well, I want to do is exactly reset all the values given by odometry topic through a script and not by turning on and off my robot. So that´s why I thought of publishing an empty message to the odometry topic. Any suggestions on that?

Asked by johnbryant on 2018-12-07 04:07:22 UTC

Publishing a single msg like you do to a node does not reset the node nor the topic. I don't see anywhere in the docs for diff_drive_controller that is subscribes to that topic, so if your msg would be published, the next msg would contain the ..

Asked by gvdhoorn on 2018-12-07 04:53:38 UTC

.. values again that diff_drive_controller is maintaining internally.

Also, related, but tangentially: your script most likely exits before the middleware has had a chance to actually publish your msg, so it would not work even if diff_drive_controller supported this.

Asked by gvdhoorn on 2018-12-07 04:54:44 UTC

Answers