コード例 #1
0
def odom_cb(msg):
    global odom_x, odom_y, model_x, model_y, first_call, prev_x, prev_y, prev_theta

    x = msg.pose.pose.position.x
    y = msg.pose.pose.position.y
    ori = msg.pose.pose.orientation
    theta = q2e([ori.x, ori.y, ori.z, ori.w])[2]

    if first_call:
        first_call = False
        prev_x = x
        prev_y = y
        prev_theta = theta
        model_x.append(x)
        model_y.append(y)
    else:
        #for model
        new_x, new_y, new_theta = update(prev_x, prev_y, prev_theta, 0.5,
                                         -0.25)
        model_x.append(new_x)
        model_y.append(new_y)
        prev_x = new_x
        prev_y = new_y
        prev_theta = new_theta

    odom_x.append(x)
    odom_y.append(y)
コード例 #2
0
def pose_to_matrix(pose):
    """takes ros pose message and converts to 4x4 homogenous matrix"""
    pos = [pose.position.x, pose.position.y, pose.position.z]
    quat = pose.orientation
    rpy = list(q2e((quat.x, quat.y, quat.z, quat.w)))
    mat = transform_matrix(*pos + rpy)
    return mat
コード例 #3
0
ファイル: crazyflieParser.py プロジェクト: sunnyshi0310/DHC
 def callback(self, data):
     self.trans = np.array(
         [data.pose.pose.position.x, data.pose.pose.position.z])
     self.xy = np.array(
         [data.pose.pose.position.x, data.pose.pose.position.y])
     orientation_q = data.pose.pose.orientation
     orientation_list = [
         orientation_q.x, orientation_q.y, orientation_q.z, orientation_q.w
     ]
     self.ori = np.array([
         orientation_q.x, orientation_q.y, orientation_q.z, orientation_q.w
     ])
     rotation = np.array(q2e(orientation_list))
     self.rot = rotation[1]
     self.yaw = rotation[2]
     self.roll = rotation[0]
コード例 #4
0
ファイル: plot_odom.py プロジェクト: mviswanathan24/sim_ws
def odom_cb(msg):
    global state_x, state_y, transformed_x, transformed_y, init_set

    x = msg.pose.pose.position.x
    y = msg.pose.pose.position.y
    ori = msg.pose.pose.orientation
    theta = q2e([ori.x, ori.y, ori.z, ori.w])[2]

    if not init_set:
        init_set = True
        ini_x = x;
        ini_y = y;
        ini_theta = theta
    else:
        tx, ty, ttht = transform_pose(x,y,theta)
        transformed_x.append(tx)
        transformed_y.append(ty)

    state_x.append(x)
    state_y.append(y)
コード例 #5
0
 def get_obs(self):
     self.unpause_sim()
     obs = []
     states = self.get_relative_state()
     self.pause_sim()
     for neighbour, state in states.items():
         translation = np.array(state[0])[:-1]
         rotation = np.array(q2e(state[1])[-1])  # extract only YAW
         # print (self.goal)
         obs.append(
             np.hstack([
                 translation, rotation, self.goal[neighbour],
                 self.previous_act
             ]))
     obs = self.scale_obs(np.hstack(obs))
     self.previous_obs = deepcopy(obs)
     obs = {
         "observation": self.previous_obs,
         "achieved_goal": self.previous_obs[self.parent.goal_indices],
         "desired_goal": np.hstack(self.goal.values())
     }
     return obs
コード例 #6
0
from sensor_msgs.msg import JointState
from tf import TransformBroadcaster
from tf.transformations import quaternion_from_euler as q2e
from math import sin, cos, pi

joint_state = JointState()
odom_broadcaster = TransformBroadcaster()

angle = 0
if __name__ == "__main__":
    rospy.init_node("controller")
    robot_control = rospy.Publisher('/joint_states', JointState, queue_size=10)
    rate = rospy.Rate(30)

    while not rospy.is_shutdown():
        joint_state.header.stamp = rospy.Time.now()
        joint_state.name = [
            'base_to_wheel1', 'base_to_wheel2', 'base_to_wheel3',
            'base_to_wheel4'
        ]
        joint_state.position = [0, 0, 0, 0, 0]

        x, y, z = cos(angle), sin(angle), 0
        odom_quat = q2e(0, 0, angle)
        print('%d', '%d', x, y)
        robot_control.publish(joint_state)
        odom_broadcaster.sendTransform((x, y, z), odom_quat, rospy.Time.now(),
                                       'base_link', 'odom')

        rate.sleep()
コード例 #7
0
 def tf_preprocessor(x):
     trans, rot = x
     return np.array(list(trans[:2]) + list(q2e(rot)[-1:]))