That was it!
Anyway, now I have one new problem.
Each time I call that function I print the results
The first time the object is in x=10 , I set cmd_pos[0]=11
Even thought the next time the object is in 
x=47.8293 or 58.734245   a very strange and too big number
So I once more add 1 and set it to cmd_pos[0]
The next time
x=7324,21849234
next 
x= something e06
next
something e32
next 
e100 and gazebo server dies

I only modify the values there and I'm sure i'm just adding one.
Even if I set cmd_pos[0]=1 everytime the function is called, the same thing 
happens

any clue?




> Hi Jordi,
>
> I've used the truth interface without any problem.
>
> The only thing you shoud add is:
>
> truth->data->cmd_new = 1;
>
> To "inform" the interface that new data is available.
>
> I hope it helps,
>
>     Didac
>
> Jordi wrote:
> >Hi
> >I have some problems playing with the truth interface, I'm using the
> > libgazebo interface directly, Gazebo 0.6
> >The code attached below can't modify the position of any object of the
> > world. I've added truth intefaces to anything with no results:  I always
> > get the same readings and nothing changes.
> >The interface is correctly opened.
> >The readings of the interface are correct and if I try to modify the
> > readings (for instance: iface->truth->data->pos[0]=pos_x+x-startX), the
> > next time my function is called, those readings go back to the real
> > reading of the object so I'm sure the server is working and updating the
> > data.
> >
> >
> >  double pos_x, pos_y, pos_z;
> >  double rot_u, rot_x, rot_y, rot_z;
> >
> >  pos_x=iface->truth->data->pos[0];
> >  pos_y=iface->truth->data->pos[1];
> >  pos_z=iface->truth->data->pos[2];
> >
> >  rot_u=iface->truth->data->pos[0];
> >  rot_x=iface->truth->data->pos[1];
> >  rot_y=iface->truth->data->pos[2];
> >  rot_z=iface->truth->data->pos[3];
> >
> >
> >    Debug () << "post_x " << pos_x << " x " << x << " startX " <<startX <<
> > " total " <<pos_x+x-startX ;
> >    gz_truth_lock(iface->truth,1);
> >    //iface->truth->data->pos[0]=pos_x+x-startX
> >    iface->truth->data->cmd_pos[0]=pos_x+x-startX;
> >    iface->truth->data->cmd_pos[1]=pos_y+y-startY;
> >    iface->truth->data->cmd_pos[2]=pos_z;
> >    iface->truth->data->cmd_rot[0]= rot_u;
> >    iface->truth->data->cmd_rot[1]= rot_x;
> >    iface->truth->data->cmd_rot[2]= rot_y;
> >    iface->truth->data->cmd_rot[3]= rot_z;
> >    gz_truth_unlock(iface->truth);
> >
> >
> >
> >x and startX are defined elsewhere. The output is like this.
> >
> >post_x  8.64727  x  478  startX  477  total  9.64727
> >post_x  8.64727  x  481  startX  478  total  11.6473
> >post_x  8.64727  x  482  startX  481  total  9.64727
> >post_x  8.64727  x  483  startX  482  total  9.64727
> >post_x  8.64727  x  483  startX  483  total  8.64727
> >
> >
> >That numbers are logical to me, except that I'm overriding cmd_pos with
> > the position named total but it is not changing anything of the real
> > position of the object.
> >
> >--
> >Jordi Polo
> >
> >
> >_______________________________________________
> >Playerstage-gazebo mailing list
> >[email protected]
> >https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo


_______________________________________________
Playerstage-gazebo mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo

Reply via email to