Python sensor_msgs.msg.JointState() Examples
The following are 30
code examples of sensor_msgs.msg.JointState().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
sensor_msgs.msg
, or try the search function
.
Example #1
Source File: rudder_control_heading.py From usv_sim_lsa with Apache License 2.0 | 7 votes |
def talker_ctrl(): global rate_value rospy.init_node('usv_simple_ctrl', anonymous=True) rate = rospy.Rate(rate_value) # 10h # publishes to thruster and rudder topics pub_motor = rospy.Publisher('thruster_command', JointState, queue_size=10) pub_rudder = rospy.Publisher('joint_setpoint', JointState, queue_size=10) pub_result = rospy.Publisher('move_usv/result', Float64, queue_size=10) # subscribe to state and targer point topics rospy.Subscriber("state", Odometry, get_pose) # get usv position (add 'gps' position latter) rospy.Subscriber("move_usv/goal", Odometry, get_target) # get target position while not rospy.is_shutdown(): try: pub_motor.publish(thruster_ctrl_msg()) pub_rudder.publish(rudder_ctrl_msg()) pub_result.publish(verify_result()) rate.sleep() except rospy.ROSInterruptException: rospy.logerr("ROS Interrupt Exception! Just ignore the exception!") except rospy.ROSTimeMovedBackwardsException: rospy.logerr("ROS Time Backwards! Just ignore the exception!")
Example #2
Source File: fk_service_client.py From intera_sdk with Apache License 2.0 | 7 votes |
def fk_service_client(limb = "right"): ns = "ExternalTools/" + limb + "/PositionKinematicsNode/FKService" fksvc = rospy.ServiceProxy(ns, SolvePositionFK) fkreq = SolvePositionFKRequest() joints = JointState() joints.name = ['right_j0', 'right_j1', 'right_j2', 'right_j3', 'right_j4', 'right_j5', 'right_j6'] joints.position = [0.763331, 0.415979, -1.728629, 1.482985, -1.135621, -1.674347, -0.496337] # Add desired pose for forward kinematics fkreq.configuration.append(joints) # Request forward kinematics from base to "right_hand" link fkreq.tip_names.append('right_hand') try: rospy.wait_for_service(ns, 5.0) resp = fksvc(fkreq) except (rospy.ServiceException, rospy.ROSException), e: rospy.logerr("Service call failed: %s" % (e,)) return False # Check if result valid
Example #3
Source File: kinematics_interfaces.py From gym-sawyer with MIT License | 7 votes |
def get_current_fk(self, fk_link_names, frame_id='base_link'): """ Get the current forward kinematics of a set of links. :param fk_link_names: [string] list of links that we want to get the forward kinematics from :param frame_id: string the reference frame to be used :return fk_result: moveit_msgs.srv.GetPositionFKResponse """ # Subscribe to a joint_states js = rospy.wait_for_message('/robot/joint_states', JointState) # Call FK service fk_result = self.get_fk(fk_link_names, js.name, js.position, frame_id) return fk_result
Example #4
Source File: boat_rudder_vel_ctrl.py From usv_sim_lsa with Apache License 2.0 | 7 votes |
def __init__(self): rospy.init_node('usv_vel_ctrl', anonymous=False) self.rate = 10 r = rospy.Rate(self.rate) # 10hertz self.usv_vel = Odometry() self.usv_vel_ant = Odometry() self.target_vel = Twist() self.target_vel_ant = Twist() self.thruster_msg = JointState() self.rudder_msg = JointState() self.thruster_msg.header = Header() self.rudder_msg.header = Header() self.kp_lin = 80 self.ki_lin = 200 thruster_name = 'fwd' rudder_name = 'rudder_joint' self.I_ant_lin = 0 self.I_ant_ang = 0 self.lin_vel = 0 self.lin_vel_ang = 0 self.ang_vel = 0 self.kp_ang = 2 self.ki_ang = 4 self.rudder_max = 70 self.thruster_max = 30 self.pub_motor = rospy.Publisher('thruster_command', JointState, queue_size=10) self.pub_rudder = rospy.Publisher('joint_setpoint', JointState, queue_size=10) rospy.Subscriber("state", Odometry, self.get_usv_vel) rospy.Subscriber("cmd_vel", Twist, self.get_target_vel) while not rospy.is_shutdown(): self.pub_rudder.publish(self.rudder_ctrl_msg(self.ang_vel_ctrl(), rudder_name)) self.pub_motor.publish(self.thruster_ctrl_msg(self.lin_vel_ctrl(), thruster_name)) r.sleep()
Example #5
Source File: rudder_control_heading_old.py From usv_sim_lsa with Apache License 2.0 | 7 votes |
def talker_ctrl(): global rate_value # publishes to thruster and rudder topics pub_motor = rospy.Publisher('thruster_command', JointState, queue_size=10) pub_rudder = rospy.Publisher('joint_setpoint', JointState, queue_size=10) rospy.init_node('usv_simple_ctrl', anonymous=True) rate = rospy.Rate(rate_value) # 10h # subscribe to state and targer point topics rospy.Subscriber("state", Odometry, get_pose) # get usv position (add 'gps' position latter) rospy.Subscriber("usv_position_setpoint", Odometry, get_target) # get target position while not rospy.is_shutdown(): pub_motor.publish(thruster_ctrl_msg()) pub_rudder.publish(rudder_ctrl_msg()) rate.sleep()
Example #6
Source File: robotiq_85_driver.py From kinova-movo with BSD 3-Clause "New" or "Revised" License | 6 votes |
def _update_gripper_joint_state(self,dev=0): js = JointState() js.header.frame_id = '' js.header.stamp = rospy.get_rostime() js.header.seq = self._seq[dev] if 0==dev: prefix = 'right_' else: prefix='left_' js.name = ['%srobotiq_85_left_knuckle_joint'%prefix] pos = np.clip(0.8 - ((0.8/0.085) * self._gripper.get_pos(dev)), 0., 0.8) js.position = [pos] dt = rospy.get_time() - self._prev_js_time[dev] self._prev_js_time[dev] = rospy.get_time() js.velocity = [(pos-self._prev_js_pos[dev])/dt] self._prev_js_pos[dev] = pos return js
Example #7
Source File: sailboat_control_heading.py From usv_sim_lsa with Apache License 2.0 | 6 votes |
def talker_ctrl(): global rate_value global currentHeading global windDir global isTacking global heeling global spHeading rospy.init_node('usv_simple_ctrl', anonymous=True) rate = rospy.Rate(rate_value) # 10h # publishes to thruster and rudder topics #pub_sail = rospy.Publisher('angleLimits', Float64, queue_size=10) pub_rudder = rospy.Publisher('joint_setpoint', JointState, queue_size=10) pub_result = rospy.Publisher('move_usv/result', Float64, queue_size=10) pub_heading = rospy.Publisher('currentHeading', Float64, queue_size=10) pub_windDir = rospy.Publisher('windDirection', Float64, queue_size=10) pub_heeling = rospy.Publisher('heeling', Float64, queue_size=10) pub_spHeading = rospy.Publisher('spHeading', Float64, queue_size=10) # subscribe to state and targer point topics rospy.Subscriber("state", Odometry, get_pose) # get usv position (add 'gps' position latter) rospy.Subscriber("move_usv/goal", Odometry, get_target) # get target position while not rospy.is_shutdown(): try: pub_rudder.publish(rudder_ctrl_msg()) #pub_sail.publish(sail_ctrl()) pub_result.publish(verify_result()) pub_heading.publish(currentHeading) pub_windDir.publish(windDir) pub_heeling.publish(heeling) pub_spHeading.publish(spHeading) rate.sleep() except rospy.ROSInterruptException: rospy.logerr("ROS Interrupt Exception! Just ignore the exception!") except rospy.ROSTimeMovedBackwardsException: rospy.logerr("ROS Time Backwards! Just ignore the exception!")
Example #8
Source File: diff_control_heading.py From usv_sim_lsa with Apache License 2.0 | 6 votes |
def talker_ctrl(): global rate_value global result # publishes to thruster and rudder topics pub_motor = rospy.Publisher('thruster_command', JointState, queue_size=10) pub_result = rospy.Publisher('move_usv/result', Float64, queue_size=10) rospy.init_node('usv_simple_ctrl', anonymous=True) rate = rospy.Rate(rate_value) # 10h # subscribe to state and targer point topics rospy.Subscriber("state", Odometry, get_pose) # get usv position (add 'gps' position latter) rospy.Subscriber("move_usv/goal", Odometry, get_target) # get target position while not rospy.is_shutdown(): try: pub_motor.publish(thruster_ctrl_msg()) pub_result.publish(verify_result()) rate.sleep() except rospy.ROSInterruptException: rospy.logerr("ROS Interrupt Exception! Just ignore the exception!") except rospy.ROSTimeMovedBackwardsException: rospy.logerr("ROS Time Backwards! Just ignore the exception!")
Example #9
Source File: airboat_control_heading.py From usv_sim_lsa with Apache License 2.0 | 6 votes |
def talker_ctrl(): global rate_value rospy.init_node('usv_simple_ctrl', anonymous=True) rate = rospy.Rate(rate_value) # 10h # publishes to thruster and rudder topics pub_motor = rospy.Publisher('thruster_command', JointState, queue_size=10) pub_rudder = rospy.Publisher('joint_setpoint', JointState, queue_size=10) pub_result = rospy.Publisher('move_usv/result', Float64, queue_size=10) # subscribe to state and targer point topics rospy.Subscriber("state", Odometry, get_pose) # get usv position (add 'gps' position latter) rospy.Subscriber("move_usv/goal", Odometry, get_target) # get target position while not rospy.is_shutdown(): try: pub_motor.publish(thruster_ctrl_msg()) pub_rudder.publish(rudder_ctrl_msg()) pub_result.publish(verify_result()) rate.sleep() except rospy.ROSInterruptException: rospy.logerr("ROS Interrupt Exception! Just ignore the exception!") except rospy.ROSTimeMovedBackwardsException: rospy.logerr("ROS Time Backwards! Just ignore the exception!")
Example #10
Source File: widowx_controller.py From visual_foresight with MIT License | 6 votes |
def __init__(self, robot_name, print_debug, email_cred_file='', log_file='', control_rate=100, gripper_attached='default'): super(WidowXController, self).__init__(robot_name, print_debug, email_cred_file, log_file, control_rate, gripper_attached) self._redist_rate = rospy.Rate(50) self._arbotix = ArbotiX('/dev/ttyUSB0') assert self._arbotix.syncWrite(MAX_TORQUE_L, [[servo_id, 255, 0] for servo_id in SERVO_IDS]) != -1, "failure during servo configuring" assert self._arbotix.syncWrite(TORQUE_LIMIT, [[servo_id, 255, 0] for servo_id in SERVO_IDS]) != -1, "failure during servo configuring" self._joint_lock = Lock() self._angles, self._velocities = {}, {} rospy.Subscriber("/joint_states", JointState, self._joint_callback) time.sleep(1) self._joint_pubs = [rospy.Publisher('/{}/command'.format(name), Float64, queue_size=1) for name in JOINT_NAMES[:-1]] self._gripper_pub = rospy.Publisher('/gripper_prismatic_joint/command', Float64, queue_size=1) p.connect(p.DIRECT) widow_x_urdf = '/'.join(__file__.split('/')[:-1]) + '/widowx/widowx.urdf' self._armID = p.loadURDF(widow_x_urdf, useFixedBase=True) p.resetBasePositionAndOrientation(self._armID, [0, 0, 0], p.getQuaternionFromEuler([np.pi, np.pi, np.pi])) self._n_errors = 0
Example #11
Source File: setup_calibrated_sawyer_cams.py From visual_foresight with MIT License | 6 votes |
def get_endeffector_pos(self): fkreq = SolvePositionFKRequest() joints = JointState() joints.name = self._limb_right.joint_names() joints.position = [self._limb_right.joint_angle(j) for j in joints.name] # Add desired pose for forward kinematics fkreq.configuration.append(joints) fkreq.tip_names.append('right_hand') try: rospy.wait_for_service(self.name_of_service, 5) resp = self.fksvc(fkreq) except (rospy.ServiceException, rospy.ROSException), e: rospy.logerr("Service call failed: %s" % (e,)) return False
Example #12
Source File: tom_sim.py From costar_plan with Apache License 2.0 | 6 votes |
def cmd_cb(self, msg): ''' Callback to update the world. Listens to JointState messages so we can get the time. Parameters: ---------- msg: message received from callback -- should be a joint state ''' if not isinstance(msg, JointState): raise RuntimeError('must send a joint state') elif len(msg.name) is not len(msg.position): raise RuntimeError('number of positions and joint names must match') for name, pos in zip(msg.name, msg.position): if not name in self.qs: raise RuntimeError('world sent joint that does not exist') self.qs[name] = pos
Example #13
Source File: ros.py From promplib with GNU Lesser General Public License v3.0 | 6 votes |
def get(self, x_des, seed=None, bounds=()): """ Get the IK by minimization :param x_des: desired task space pose [[x, y, z], [x, y, z, w]] :param seed: RobotState message :param bounds:[(min, max), (min, max), (min, max), ... for each joint] :return: (bool, joints) """ if isinstance(seed, RobotState): seed = seed.joint_state elif not isinstance(seed, JointState) and seed is not None: raise TypeError('ros.IK.get only accepts RS or JS, got {}'.format(type(seed))) seed = [seed.position[seed.name.index(joint)] for joint in self._ik.joints] if seed is not None else () result = self._ik.get(x_des, seed, bounds) return result[0], JointState(name=self._ik.joints, position=list(result[1]))
Example #14
Source File: ros.py From promplib with GNU Lesser General Public License v3.0 | 6 votes |
def add_viapoint(self, t, obsys, sigmay=1e-6): """ Add a viapoint i.e. an observation at a specific time :param t: Time of observation :param obsys: RobotState observed at the time :param sigmay: :return: """ if isinstance(obsys, RobotState): obsys = obsys.joint_state elif not isinstance(obsys, JointState): raise TypeError("ros.ProMP.add_viapoint only accepts RS or JS, got {}".format(type(obsys))) try: positions = [obsys.position[obsys.name.index(joint)] for joint in self.joint_names] # Make sure joints are in right order except KeyError as e: raise KeyError("Joint {} provided as viapoint is unknown to the demonstrations".format(e)) else: self.promp.add_viapoint(t, map(float, positions), sigmay)
Example #15
Source File: roboclaw_wrapper.py From osr-rover-code with Apache License 2.0 | 6 votes |
def read_encoder_values(self): """Query roboclaws and update current motors status in encoder ticks""" enc_msg = JointState() enc_msg.header.stamp = rospy.Time.now() for motor_name, properties in self.roboclaw_mapping.iteritems(): enc_msg.name.append(motor_name) position = self.read_encoder_position(properties["address"], properties["channel"]) velocity = self.read_encoder_velocity(properties["address"], properties["channel"]) current = self.read_encoder_current(properties["address"], properties["channel"]) enc_msg.position.append(self.tick2position(position, self.encoder_limits[motor_name][0], self.encoder_limits[motor_name][1], properties['ticks_per_rev'], properties['gear_ratio'])) enc_msg.velocity.append(self.qpps2velocity(velocity, properties['ticks_per_rev'], properties['gear_ratio'])) enc_msg.effort.append(current) self.current_enc_vals = enc_msg
Example #16
Source File: rover.py From osr-rover-code with Apache License 2.0 | 6 votes |
def __init__(self): rover_dimensions = rospy.get_param('/rover_dimensions', {"d1": 0.184, "d2": 0.267, "d3": 0.267, "d4": 0.256}) self.d1 = rover_dimensions["d1"] self.d2 = rover_dimensions["d2"] self.d3 = rover_dimensions["d3"] self.d4 = rover_dimensions["d4"] self.min_radius = 0.45 # [m] self.max_radius = 6.4 # [m] self.no_cmd_thresh = 0.05 # [rad] self.wheel_radius = rospy.get_param("/rover_dimensions/wheel_radius", 0.075) # [m] drive_no_load_rpm = rospy.get_param("/drive_no_load_rpm", 130) self.max_vel = self.wheel_radius * drive_no_load_rpm / 60 * 2 * math.pi # [m/s] rospy.Subscriber("/cmd_vel", Twist, self.cmd_cb) rospy.Subscriber("/encoder", JointState, self.enc_cb) self.corner_cmd_pub = rospy.Publisher("/cmd_corner", CommandCorner, queue_size=1) self.drive_cmd_pub = rospy.Publisher("/cmd_drive", CommandDrive, queue_size=1)
Example #17
Source File: core.py From pyrobot with MIT License | 6 votes |
def _callback_joint_states(self, msg): """ ROS subscriber callback for arm joint state (position, velocity) :param msg: Contains message published in topic :type msg: sensor_msgs/JointState """ self.joint_state_lock.acquire() for idx, name in enumerate(msg.name): if name in self.arm_joint_names: if idx < len(msg.position): self._joint_angles[name] = msg.position[idx] if idx < len(msg.velocity): self._joint_velocities[name] = msg.velocity[idx] if idx < len(msg.effort): self._joint_efforts[name] = msg.effort[idx] self.joint_state_lock.release()
Example #18
Source File: gripper.py From pyrobot with MIT License | 6 votes |
def _callback_joint_states(self, msg): """ ROS subscriber callback for gripper joint state (position, velocity) :param msg: Contains message published in topic :type msg: sensor_msgs/JointState """ self.joint_state_lock.acquire() for idx, name in enumerate(msg.name): if name in self.gripper_joint_names: if idx < len(msg.position): self._joint_angles[name] = msg.position[idx] if idx < len(msg.velocity): self._joint_velocities[name] = msg.velocity[idx] if idx < len(msg.effort): self._joint_efforts[name] = msg.effort[idx] self.joint_state_lock.release()
Example #19
Source File: diff_control_heading.py From usv_sim_lsa with Apache License 2.0 | 5 votes |
def thruster_ctrl_msg(): global actuator_vel global left global right global Kp msg = JointState() msg.header = Header() msg.name = ['fwd_left', 'fwd_right'] aux = rudder_ctrl() left = aux + 100. right = -aux + 100. if (left < 0): left = 0 if (right < 0): right = 0 msg.position = [left, right] msg.velocity = [] msg.effort = [] return msg
Example #20
Source File: js_listener.py From costar_plan with Apache License 2.0 | 5 votes |
def __init__(self, config): self.topic = config['joint_states_topic'] self.sub = rospy.Subscriber(self.topic, JointState, self.js_cb) self.joints = config['joints'] self.dof = config['dof'] self.q0 = None self.dq = None self.old_q0 = [0] * self.dof if self.joints is not None: assert self.dof == len(self.joints)
Example #21
Source File: rviz_bridge.py From freefloating_gazebo_demo with MIT License | 5 votes |
def __init__(self): self.odom = Odometry() self.odom_received = False self.odom_sub = rospy.Subscriber('state', Odometry, self.OdomCallBack) self.thruster_received = False self.thruster_sub = rospy.Subscriber('thruster_command', JointState, self.ThrusterCallBack)
Example #22
Source File: sailboat_polar_diagram_control.py From usv_sim_lsa with Apache License 2.0 | 5 votes |
def talker_ctrl(): global rate_value global currentHeading global windDir rospy.init_node('usv_simple_ctrl', anonymous=True) rate = rospy.Rate(rate_value) # 10h # publishes to thruster and rudder topics #pub_sail = rospy.Publisher('angleLimits', Float64, queue_size=10) pub_rudder = rospy.Publisher('joint_setpoint', JointState, queue_size=10) pub_result = rospy.Publisher('move_usv/result', Float64, queue_size=10) pub_heading= rospy.Publisher('currentHeading', Float64, queue_size=10) pub_windDir= rospy.Publisher('windDirection', Float64, queue_size=10) # subscribe to state and targer point topics rospy.Subscriber("state", Odometry, get_pose) # get usv position (add 'gps' position latter) rospy.Subscriber("move_usv/goal", Odometry, get_target) # get target position while not rospy.is_shutdown(): try: pub_rudder.publish(rudder_ctrl_msg()) #pub_sail.publish(sail_ctrl()) pub_result.publish(verify_result()) pub_heading.publish(currentHeading) pub_windDir.publish(windDir) rate.sleep() except rospy.ROSInterruptException: rospy.logerr("ROS Interrupt Exception! Just ignore the exception!") except rospy.ROSTimeMovedBackwardsException: rospy.logerr("ROS Time Backwards! Just ignore the exception!")
Example #23
Source File: execute.py From costar_plan with Apache License 2.0 | 5 votes |
def __init__(self, world, actor_id, namespace="",): # We only really want the publish function -- and I wanted to see if # this would work. It does. self.publish = rospy.Publisher( os.path.join(namespace, "joint_states_cmd"), JointState, queue_size=1000).publish # Store which joints we are controlling. self.world = world self.joints = self.world.actors[actor_id].joints
Example #24
Source File: condition.py From costar_plan with Apache License 2.0 | 5 votes |
def __call__(self, world, state, actor, prev_state=None): js = JointState( name=actor.joints, position=state.q, ) rs = RobotState(joint_state=js) # TODO(cpaxton): this is about 75% of the current speed. Commenting # this out makes a huge difference. We should be able to drastically # reduce it by adding a C++ interface to run the check. res = self.srv(robot_state=rs) if not res.valid: print "[ValidStateCondition] Invalid state!" print res return res.valid
Example #25
Source File: joint_state_publisher.py From jupyter-ros with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self): description = get_param('robot_description') self.free_joints = {} self.joint_list = [] # for maintaining the original order of the joints self.dependent_joints = get_param("dependent_joints", {}) self.use_mimic = get_param('use_mimic_tags', True) self.use_small = get_param('use_smallest_joint_limits', True) self.zeros = get_param("zeros") self.pub_def_positions = get_param("publish_default_positions", True) self.pub_def_vels = get_param("publish_default_velocities", False) self.pub_def_efforts = get_param("publish_default_efforts", False) robot = xml.dom.minidom.parseString(description) if robot.getElementsByTagName('COLLADA'): self.init_collada(robot) else: self.init_urdf(robot) use_gui = get_param("use_gui", False) if use_gui: num_rows = get_param("num_rows", 0) self.app = QApplication(sys.argv) self.gui = JointStatePublisherGui("Joint State Publisher", self, num_rows) self.gui.show() else: self.gui = None source_list = get_param("source_list", []) self.sources = [] for source in source_list: self.sources.append(rospy.Subscriber(source, JointState, self.source_cb)) self.pub = rospy.Publisher('joint_states', JointState, queue_size=5)
Example #26
Source File: bridge.py From promplib with GNU Lesser General Public License v3.0 | 5 votes |
def to_joint_state(state): if isinstance(state, RobotState): state = state.joint_state elif not isinstance(state, JointState): raise TypeError("ROSBridge.to_joint_trajectory only accepts RT or JT, got {}".format(type(trajectory))) return state
Example #27
Source File: sailboat_control_heading.py From usv_sim_lsa with Apache License 2.0 | 5 votes |
def rudder_ctrl_msg(): msg = JointState() msg.header = Header() msg.name = ['rudder_joint', 'sail_joint'] msg.position = [rudder_ctrl(), sail_ctrl()] msg.velocity = [] msg.effort = [] return msg
Example #28
Source File: ros.py From promplib with GNU Lesser General Public License v3.0 | 5 votes |
def get(self, state): """ Get the FK :param state: RobotState message to get the forward kinematics for :return: [[x, y, z], [x, y, z, w]] """ if isinstance(state, RobotState): state = state.joint_state elif not isinstance(state, JointState): raise TypeError('ros.FK.get only accepts RS or JS, got {}'.format(type(state))) return self._fk.get([state.position[state.name.index(joint)] for joint in self.joints])
Example #29
Source File: ros.py From promplib with GNU Lesser General Public License v3.0 | 5 votes |
def set_start(self, obsy, sigmay=1e-6): if isinstance(obsy, RobotState): obsy = obsy.joint_state elif not isinstance(obsy, JointState): raise TypeError("ros.ProMP.set_start only accepts RS or JS, got {}".format(type(obsy))) try: positions = [obsy.position[obsy.name.index(joint)] for joint in self.joint_names] # Make sure joints are in right order except KeyError as e: raise KeyError("Joint {} provided as start state is unknown to the demonstrations".format(e)) else: self.promp.set_start(map(float, positions), sigmay)
Example #30
Source File: tom_goto.py From costar_plan with Apache License 2.0 | 5 votes |
def goto(kdl_kin, pub, listener, trans, rot): try: T = pm.fromTf((trans, rot)) q0 = [-1.0719114121799995, -1.1008140645600006, 1.7366724169200003, -0.8972388608399999, 1.25538042294, -0.028902652380000227,] # DEFAULT objt, objr = ((0.470635159016, 0.0047549889423, -0.428045094013),(0,0,0,1)) T_orig = pm.fromTf((objt,objr)) # MOVEd objt, objr = ((0.52, 0.00, -0.43),(0,0,0,1)) T_new = pm.fromTf((objt,objr)) T_pose = pm.toMatrix(T) Q = kdl_kin.inverse(T_pose, q0) print "----------------------------" print "[ORIG] Closest joints =", Q msg = JointState(name=CONFIG['joints'], position=Q) pub.publish(msg) rospy.sleep(0.2) T_goal = T_orig.Inverse() * T T2 = T_new * T_goal T2_pose = pm.toMatrix(T2) Q = kdl_kin.inverse(T2_pose, q0) print "[NEW] Closest joints =", Q msg = JointState(name=CONFIG['joints'], position=Q) pub.publish(msg) rospy.sleep(0.2) except (tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException), e: pass