$ rostopic type /ur_driver/joint_speed trajectory_msgs/JointTrajectory $ rosmsg show trajectory_msgs/JointTrajectory std_msgs/Header header uint32 seq time stamp string frame_id string[] joint_names trajectory_msgs/JointTrajectoryPoint[] points float64[] positions float64[] velocities float64[] accelerations float64[] effort duration time_from_start
Python publish topic:
from multiprocessing import Process, Queue import os, time, random import rospy from std_msgs.msg import String from trajectory_msgs.msg import JointTrajectory from trajectory_msgs.msg import JointTrajectoryPoint import threading import time import numpy as np from ddpg01 import DDPG agent = DDPG( "env" ) qvel_global = [0, 0, 0, 0, 0, 0] mutex = threading.Lock() def talker_4(): try: pub = rospy.Publisher('/ur_driver/joint_speed', JointTrajectory, queue_size=10) rate = rospy.Rate(125) qvel = [0, 0, 0, 0, 0, 0] i_seq = 0 global qvel_global, mutex trajectory = JointTrajectory() trajectory.joint_names = ['elbow_joint', 'shoulder_lift_joint', 'shoulder_pan_joint', 'wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint'] while not rospy.is_shutdown(): if mutex.acquire(): acc_max = 0.01 for i in range(6): if ( qvel_global[i] - qvel[i] ) > acc_max: qvel[i] += acc_max elif ( qvel_global[i] - qvel[i] ) < -acc_max: qvel[i] -= acc_max else: qvel[i] = qvel_global[i] mutex.release() trajectory.header.seq = i_seq i_seq += 1 current_time = rospy.Time.now() trajectory.header.stamp = current_time trajectory.points = [JointTrajectoryPoint(velocities=qvel)] pub.publish(trajectory) rate.sleep() except rospy.ROSInterruptException: pass
墨之科技,版权所有 © Copyright 2017-2027
湘ICP备14012786号 邮箱:ai@inksci.com