Jose_UTEC Posted July 5, 2018 Share Posted July 5, 2018 I have tried to use .set_joint_trajectory. It's working with one joint but I have problem with multiple joint. The error msg is attached. def set_j(): limb = intera_interface.Limb('right') limb.move_to_neutral() names=["right_j6","right_j5"] positions=[[-2.42577,-2.46446,-2.49639,-2.52226,-2.54279,-2.55868,-2.57063,-2.57935,-2.58555,-2.58992,-2.59318,-2.59602,-2.59916,-2.6033,-2.60914,-2.6174,-2.62876,-2.64395,-2.66367,-2.68861,-2.71949,-2.75664,-2.79891,-2.8448,-2.89279,-2.94136,-2.989,-3.0342,-3.07544,-3.11121,-3.14,-3.16072,-3.174,-3.1809,-3.1825,-3.17984,-3.174,-3.16603,-3.157,-3.14797,-3.14,-3.13394,-3.1298,-3.12736,-3.1264,-3.12672,-3.1281,-3.13033,-3.1332,-3.13649,-3.14,-3.14351,-3.1468,-3.14967,-3.1519,-3.15328,-3.1536,-3.15264,-3.1502,-3.14606,-3.14],[0.91,0.862531,0.815121,0.768189,0.722156,0.677442,0.634467,0.593652,0.555416,0.520181,0.488365,0.460391,0.436677,0.417644,0.403712,0.395302,0.392834,0.396728,0.407404,0.425283,0.450785,0.484025,0.523899,0.568998,0.617913,0.669234,0.721554,0.773462,0.82355,0.870408,0.912628,0.948976,0.978928,1.00213,1.01824,1.0269,1.02776,1.02047,1.00468,0.980052,0.946223,0.903247,0.852784,0.796894,0.737636,0.677072,0.617261,0.560263,0.508139,0.462949,0.426753,0.401611,0.389584,0.392731,0.413112,0.452789,0.51382,0.598267,0.70819,0.845648,1.0127]] velocities=[[-0.386873,-0.319299,-0.258777,-0.205306,-0.158887,-0.119519,-0.0872025,-0.0619379,-0.0437248,-0.0325633,-0.0284533,-0.0313949,-0.0413881,-0.0584328,-0.0825292,-0.113677,-0.151876,-0.197127,-0.24943,-0.308784,-0.371491,-0.422757,-0.458884,-0.479871,-0.485718,-0.476426,-0.451994,-0.412422,-0.357711,-0.28786,-0.207164,-0.132797,-0.0690547,-0.0159357,0.0265595,0.0584309,0.0796785,0.0903023,0.0903023,0.0796785,0.0605556,0.0414328,0.0244347,0.00956141,-0.00318714,-0.0138109,-0.02231,-0.0286842,-0.0329338,-0.0350585,-0.0350585,-0.0329338,-0.0286842,-0.02231,-0.0138109,-0.00318714,0.00956141,0.0244347,0.0414328,0.0605556,0],[-0.474686,-0.474104,-0.469319,-0.460331,-0.447141,-0.429749,-0.408153,-0.382356,-0.352355,-0.318153,-0.279747,-0.237139,-0.190329,-0.139315,-0.0840997,-0.0246815,0.0389393,0.106763,0.178789,0.255017,0.332399,0.39874,0.450989,0.489148,0.513217,0.523194,0.519081,0.500877,0.468583,0.422198,0.363487,0.299511,0.232035,0.161059,0.086583,0.00860702,-0.072869,-0.157845,-0.246321,-0.338297,-0.429756,-0.504631,-0.558903,-0.592574,-0.605643,-0.59811,-0.569976,-0.521239,-0.451901,-0.361961,-0.251419,-0.120276,0.0314695,0.203817,0.396766,0.610316,0.844469,1.09922,1.37458,1.67054,1.67054]] accelerations=[[0.67574,0.605225,0.534709,0.464193,0.393678,0.323162,0.252647,0.182131,0.111615,0.0410995,-0.0294161,-0.0999318,-0.170447,-0.240963,-0.311479,-0.381994,-0.45251,-0.523026,-0.593541,-0.627072,-0.512661,-0.361265,-0.209869,-0.0584728,0.0929232,0.244319,0.395715,0.547111,0.698507,0.806965,0.743666,0.637428,0.53119,0.424952,0.318714,0.212476,0.106238,4.44089e-14,-0.106238,-0.191228,-0.191228,-0.169981,-0.148733,-0.127486,-0.106238,-0.0849904,-0.0637428,-0.0424952,-0.0212476,0,0.0212476,0.0424952,0.0637428,0.0849904,0.106238,0.127486,0.148733,0.169981,0.191228,-0.605556,0],[0.00582343,0.0478491,0.0898747,0.1319,0.173926,0.215952,0.257977,0.300003,0.342029,0.384054,0.42608,0.468106,0.510131,0.552157,0.594183,0.636208,0.678234,0.72026,0.762285,0.773822,0.663404,0.522497,0.38159,0.240683,0.0997759,-0.0411311,-0.182038,-0.322945,-0.463852,-0.587108,-0.639759,-0.67476,-0.70976,-0.74476,-0.77976,-0.81476,-0.849761,-0.884761,-0.919761,-0.914592,-0.748743,-0.542726,-0.336708,-0.13069,0.0753281,0.281346,0.487364,0.693382,0.8994,1.10542,1.31144,1.51745,1.72347,1.92949,2.13551,2.34152,2.54754,2.75356,2.95958,2.95958,2.95958]] limb.set_joint_trajectory(names, positions, velocities, accelerations) Link to comment Share on other sites More sharing options...
LSMM Posted July 20, 2018 Share Posted July 20, 2018 Hi Jose_UTEC, I think that with the joint trajectory control you should send one set of (position, velocity, acceleration) at the time. In your case you want to control "right_j6" and "right_j5". Lets say the trajectory right_j6 has to follow is an array traj_j6 = the huge array you gave for j6 angles (around 60 values according to what i can see in your post). Let's say you want your joint to be at one of this angle values every 0.1 sec (10 Hz), so with 60 values you are going to last 6 sec. If you call vel_j6 = the huge array you gave for j6 velocities and acc_j6 = the huge array you gave for j6 accelerations (and same for j5 with traj_j5, vel_j5 and acc_j5), then you should have a code like: import rospy import intera_interface limb = intera_interface.Limb('right') limb.move_to_neutral() # control rate, data sent every 0.1 s rate = 10 # Hz control_rate = rospy.Rate(rate) # controlled joints names=['right_j6','right_j5'] i = 0 # initializing time step # looping over your arrays of 60 values for pose, vel and acc for each joint while i < len(traj_j6): pose = [traj_j6[i], traj_j5[i]] velocity = [vel_j6[i], vel_j5[i]] acceleration = [acc_j6[i], acc_j5[i]] # sending targeted pose, vel and acceleration for current time step limb.set_joint_trajectory(names, pose, velocity, acceleration) # incrementing time step i += 1 # wait around 0.1 s before looping to next time step control_rate.sleep() print "Trajectory done..." Might not be the perfect way to do it but it worked for me. If any one has any better suggestions, I would be happy to see how it can be improved... hope that it is what you tried to do and that this can help, Good luck Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.