-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A YARP Controlboard for each robot, which emulated the velocity of the robot joints. #29
Comments
How about trying to get to the joint using OpenRAVE::KinBody::GetJointFromDOFIndex, and then trying to access OpenRAVE::KinBody::Joint::GetValue()? In fact, this approach would be for IEncoders, but maybe it would look more elegant on IPositionControl too. |
I've implemented setEncoder and getEncoder functions. Response: [is] encs (0.0 0.0 0.0 0.0 0.174533 0.0) [tsta] 0 1496050942.161305 [ok] |
Okay, I'll try to put "all the meat on the grill" for this one. 😃 |
@rsantos88 Slow but steady, I've first been looking into #30. Now I'm going to play around with |
Poor results with: axes = manipulatorIDs.size();
CD_DEBUG("manipulatorIDs.size(): %d\n",manipulatorIDs.size());
vectorOfManipulatorPtr[manipulatorIndex]->GetChildJoints(manipulatorJoints);
CD_DEBUG("manipulatorJoints.size(): %d\n",manipulatorJoints.size()); Anyway, the implementation of GetChildJoints is a bit cryptic. Here is some output of a single run with Teo:
Going for a different approach. |
Note to self: "think about |
Note: other important thing to fix is to keep the position. Now, if we want to move a limb (e.g right arm) and then we want to move other different, the first limb returns to the original position (zero position). |
Continuing with this...
If I want to send the correct position values, I need to know in what manipulator I am trying to connect through rpc yarp. @jgvictores do you know any way to get this? |
@rsantos88 The best way to access individual joints now is as seen here: vectorOfJointPtr[axis]->whatever() We'd actually have to replicate this implementation around
Hopefully I'll be able to do this soon, and also play around with odevelocity and other controllers as mentioned above. Offtopic, maybe you can check what I commented with you in person regarding roboticslab-uc3m/teo-openrave-models#3 ? Thanks!!!
|
Ok, @jgvictores no problem. Could you write what do you want in that issue? only to reference the results. Thanks! |
Commented at roboticslab-uc3m/teo-openrave-models#3 (comment) 😊 |
Have advanced here, but haven't been documenting. |
Still working on this, here are some references: |
Some progress at a522394 "very slow, only one limb (last loaded controller), but performs trajectory with intermediate positions" |
Thanks to 7027438 really seeing what is happening, because program breaks without
<trajectory>
<configuration>
<group name="joint_values teoSim 22 23 24 25 26 27" offset="0" dof="6" interpolation=""/>
</configuration>
<data count="2">
0 0 0 0 0 0 0 0 -0.436332 0 0 0 </data>
</trajectory>
<trajectory>
<configuration>
<group name="deltatime" offset="12" dof="1" interpolation=""/>
<group name="joint_velocities teoSim 22 23 24 25 26 27" offset="6" dof="6" interpolation="linear"/>
<group name="joint_values teoSim 22 23 24 25 26 27" offset="0" dof="6" interpolation="quadratic"/>
<group name="iswaypoint" offset="13" dof="1" interpolation="next"/>
</configuration>
<data count="28">
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1.92401e-05 0 0 0 0 0 -0.0438636 0 0 0 0.000877271 1 0 0 -0.0187145 0 0 0 0 0 -1.36801 0 0 0 0.0264829 1 0 0 -0.0237412 0 0 0 0 0 -1.54082 0 0 0 0.00345617 1 0 0 -0.0292858 0 0 0 0 0 -1.71131 0 0 0 0.00340987 1 0 0 -0.138109 0 0 0 0 0 -3.7163 0 0 0 0.0400999 1 0 0 -0.218166 0 0 0 0 0 -4.67083 0 0 0 0.0190905 1 0 0 -0.279409 0 0 0 0 0 -3.96136 0 0 0 0.0141893 1 0 0 -0.300068 0 0 0 0 0 -3.6914 0 0 0 0.00539929 1 0 0 -0.3122 0 0 0 0 0 -3.52324 0 0 0 0.0033631 1 0 0 -0.312637 0 0 0 0 0 -3.51704 0 0 0 0.00012406 1 0 0 -0.320109 0 0 0 0 0 -3.40915 0 0 0 0.00215769 1 0 0 -0.323185 0 0 0 0 0 -3.36373 0 0 0 0.000908408 1 0 0 -0.33134 0 0 0 0 0 -3.24025 0 0 0 0.00246975 1 0 0 -0.339428 0 0 0 0 0 -3.11295 0 0 0 0.00254591 1 0 0 -0.368224 0 0 0 0 0 -2.60975 0 0 0 0.0100639 1 0 0 -0.375933 0 0 0 0 0 -2.45762 0 0 0 0.00304267 1 0 0 -0.391852 0 0 0 0 0 -2.10903 0 0 0 0.00697177 1 0 0 -0.394298 0 0 0 0 0 -2.05022 0 0 0 0.00117621 1 0 0 -0.401131 0 0 0 0 0 -1.87619 0 0 0 0.00348059 1 0 0 -0.401743 0 0 0 0 0 -1.85982 0 0 0 0.000327367 1 0 0 -0.421587 0 0 0 0 0 -1.2143 0 0 0 0.0129104 1 0 0 -0.421604 0 0 0 0 0 -1.2136 0 0 0 1.40322e-05 1 0 0 -0.423385 0 0 0 0 0 -1.13787 0 0 0 0.00151451 1 0 0 -0.435849 0 0 0 0 0 -0.219907 0 0 0 0.0183593 1 0 0 -0.436332 0 0 0 0 0 8.88178e-16 0 0 0 0.00439815 1 0 0 -0.436332 0 0 0 0 0 0 0 0 0 0 1 </data>
</trajectory> Yay! |
Also interesting is how:
becomes:
|
Same in different format, when good:
Becomes:
|
Nice stuff at de33aef "faster, performs trajectory with intermediate positions, all good but still lots to do because for one limb for now". |
First functional version of multicontrol with 1 dof trajectories and all robot joints active, at b83c3ec. |
The mentioned multicontroller works, but currently trajectories are all duration |
WIP at |
Quite a bit done at ca4929f (merge of What's done:
What's left to do:
|
Further advances on same branch(es) most importantly involve 099f69e that implements a getMaxVel (from OpenRAVE model) functionality. |
Note that we've used
Which look pretty public. Will see if can access directly to be able to set in addition to get. |
Ended up using newly-discoverd VelLimit setter and getter functions at 486e765. |
Must work on #29 (comment) |
🎉🎉🎉🎉🎉🎉🎉 Finally closed and merged into Will now be closing related issues and opening new ones documenting the few identified open issues. |
PS: The "big one" was 274cbc2 |
I want change the code to emulate the velocity in each robot joint.
First, we want to work directly with a robot base pointer (more proper) and with that, we want to get the joint positions (get virtual encoder position) . I've been searching a function that allows me to get the opposite of void SetJointValues(const std::vector& values, bool checklimits = true) but I cant find something similar. This last function inherit from KinBody class.
The text was updated successfully, but these errors were encountered: