Hello All,

Using gdb, for the same scenario described in this thread I see this
segmentation fault in my client app:

Program received signal SIGSEGV, Segmentation fault.
[Cambiando a Thread 0xb5f9cb70 (LWP 4316)]
0x00411a37 in
boost::signals::detail::call_notification::call_notification(boost::shared_ptr<boost::signals::detail::signal_base_impl>
const&) ()
   from /usr/lib/libboost_signals-mt.so.1.38.0

I see the same issue with version 1.40 of boost:

Program received signal SIGSEGV, Segmentation fault.
[Cambiando a Thread 0xb5f9bb70 (LWP 8332)]
0x00411be7 in
boost::signals::detail::call_notification::call_notification(boost::shared_ptr<boost::signals::detail::signal_base_impl>
const&) ()
   from /usr/lib/libboost_signals.so.1.40.0

I also see exactly the same problem after installing the software versions
mentioned in this article:
http://playerstage.sourceforge.net/wiki/Install_ubuntu

I put a breakpoint in gazebo in:

(gdb) info breakpoints
Num     Type           Disp Enb Address    What
1       breakpoint     keep n   0x00ee7610 in
gazebo::Simulator::PhysicsLoop()
                                       at
/home/tomas/gazebo-0.10.0/server/Simulator.cc:694
5       breakpoint     keep y   0x00eaeee4 in
gazebo::World::UpdateSimulationIface() at
/home/tomas/gazebo-0.10.0/server/World.cc:783

Which is this code, that apparently never gets called because of the
exception in the client code in Boost, hence the lack of response I guess:

780       // Process all the requests
781       for (unsigned int i=0; i < requestCount; i++)
782       {
783         SimulationRequestData *req = &(this->simIface->data->requests[i]);
784     
785         switch (req->type)
786         {
787           case SimulationRequestData::UNPAUSE: 

Here is the sample client code run using gdb with the exception in Boost:

to...@tomas-desktop:~/gazebo-0.10.0/examples/libgazebo/tomas-test$ gdb
tomas-test 
<...>
(gdb) run
Starting program:
/home/tomas/gazebo-0.10.0/examples/libgazebo/tomas-test/tomas-test 
[Thread debugging using libthread_db enabled]
opening /tmp/gazebo-tomas-0/simulation.default 112 33842332
[Nuevo Thread 0xb5f9cb70 (LWP 4316)]

Breakpoint 1, main ()
    at
/home/tomas/gazebo-0.10.0/examples/libgazebo/tomas-test/tomas-test.cc:26
26          simIface->Open(client, "default");
(gdb) s
gazebo::SimulationIface::Open (this=0x804d3d8, client=0x804d3b8, id=...)
    at /home/tomas/gazebo-0.10.0/libgazebo/SimIface.cc:97
97        Iface::Open(client,id); 
(gdb) l
92      
93
////////////////////////////////////////////////////////////////////////////////
94      /// Open a simulation interface
95      void SimulationIface::Open(Client *client, std::string id)
96      {
97        Iface::Open(client,id); 
98        this->data =
(SimulationData*)((char*)this->mMap+sizeof(SimulationIface)); 
99      
100       // Create the thread which waits "blockTimeUs" microseconds and
101       // then signals the goAckSignal
(gdb) print client
$1 = (class gazebo::Client *) 0x804d3b8
(gdb) print *client
$2 = {_vptr.Client = 0x159860, serverId = 0, clientId = 0, filename = {
    static npos = 4294967295, 
    _M_dataplus = {<std::allocator<char>> =
{<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
      _M_p = 0x804d854 "/tmp/gazebo-tomas-0"}}, semKey = 324089338, semId =
0}
(gdb) print id
$3 = {static npos = 4294967295, 
  _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, _M_p = 0x804d624 "default"}}
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
[Cambiando a Thread 0xb5f9cb70 (LWP 4316)]
0x00411a37 in
boost::signals::detail::call_notification::call_notification(boost::shared_ptr<boost::signals::detail::signal_base_impl>
const&) ()
   from /usr/lib/libboost_signals-mt.so.1.38.0

Thanks,
Tomas





tarredondo wrote:
> 
> Hello all,
> 
> Sorry to repost but the issue is not on an old build but on 0.10.0 so i
> figured the title may be confusing the issue.
> 
> I am seeing an issue in which I cant set the basic pioneer robot speed
> with a really simple world model using libgazebo (no Player).  The gazebo
> simulator starts up and simulation time is running, using my program I can
> connect and see that the connection is fine because I tested reading the
> pioneers robot velocity using the pioneer2dx.world file.
> 
> I am using a simple world model with only a plane and the pioneer2dx model
> that comes with Gazebo.  I am using Ubuntu 9.10, ode 0.11.1, ogre v1-7-0,
> bullet-2.76, gazebo 0.10.0.
> 
> The code is now a simple state machine that tries to make the robot do a
> square pattern. I include the code, program output, world and model files.
> 
> Thanks for any help or ideas... (any hints are much appreciated)
> 
> Tomas
> 
> 
> REF: Code, code output, world model, pioneer model
> 
> Here is the code:
> 
> #include <gazebo/gazebo.h>
> #include <stdio.h>
> 
> int main()
> {
>   gazebo::Client *client = new gazebo::Client();
>   gazebo::SimulationIface *simIface = new gazebo::SimulationIface();
>   gazebo::PositionIface *posIface = new gazebo::PositionIface();
>   int serverId = 0;
>   int cmdCnt = 0;
> 
>   /// Connect to the libgazebo server
>   try
>   {
>     client->ConnectWait(serverId, GZ_CLIENT_ID_USER_FIRST);
>   }
>   catch (std::string e)
>   {
>     std::cout << "Gazebo error: Unable to connect\n" << e << "\n";
>     return -1;
>   }
> 
>   /// Open the Simulation Interface
>   try
>   {
>     simIface->Open(client, "default");
>   }
>   catch (std::string e)
>   {
>     std::cout << "Gazebo error: Unable to connect to the sim interface\n"
> << e << "\n";
>     return -1;
>   }
> 
>   /// Open the Position interface
>   try
>   {
>     posIface->Open(client, "pioneer2dx_model1::position_iface_0");
>   }
>   catch (std::string e)
>   {
>     std::cout << "Gazebo error: Unable to connect to the position
> interface\n" << e << "\n";
>     return -1;
>   }
> 
>  posIface->Lock(1);
>  posIface->data->cmdEnableMotors = 1;
>  posIface->Unlock();
> 
>   while(1)
> {
>    posIface->Lock(1);
>    std::cout  << "Cmd Velocity (x,y,z)" <<
> posIface->data->cmdVelocity.pos.x << " " <<
> posIface->data->cmdVelocity.pos.y << " " << 
> posIface->data->cmdVelocity.pos.z << std::endl;
>    posIface->Unlock();
>    posIface->Lock(1);
>    std::cout  << "Velocity (x,y,z):" << posIface->data->velocity.pos.x <<
> " " << posIface->data->velocity.pos.y << " " << 
> posIface->data->velocity.pos.z << std::endl;
>    posIface->Unlock();
>    posIface->Lock(1);
>    std::cout  << "Stall flag:" << posIface->data->stall << std::endl;
>    posIface->Unlock();
>    posIface->Lock(1);
>    std::cout  << "Roll,pitch,yaw:" << posIface->data->pose.roll << " " <<
> posIface->data->pose.pitch << " " <<  posIface->data->pose.yaw <<
> std::endl;
>    posIface->Unlock();
> 
>    switch(cmdCnt)
>    {
>    case 0:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.x = 1;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    case 1:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.x = 0;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    case 2:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.y = 1;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    case 3:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.y = 0;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    case 4:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.x = -1;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    case 5:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.x = 0;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    case 6:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.y = -1;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    case 7:  
>    posIface->Lock(1);
>    posIface->data->cmdVelocity.pos.y = 0;
>    posIface->Unlock();
>    cmdCnt++;
>    break;
>    default: 
>    cmdCnt=0;
>    break;
> 
>    }
> 
>    usleep(3000000);
>    }
> 
>   posIface->Close();
>   delete posIface;
> 
>   return 0;
> }
> 
> 
> Here is the output from the code:
> 
> Cmd Velocity (x,y,z)+0.00000 +0.00000 +0.00000
> Velocity (x,y,z):+0.00000 +0.00000 +0.00000
> Stall flag:+0
> Roll,pitch,yaw:+0.00000 +0.00000 +0.00000
> Cmd Velocity (x,y,z)+1.00000 +0.00000 +0.00000
> Velocity (x,y,z):+0.00000 +0.00000 +0.00000
> Stall flag:+0
> Roll,pitch,yaw:+0.00000 +0.00000 +0.00000
> Cmd Velocity (x,y,z)+0.00000 +0.00000 +0.00000
> Velocity (x,y,z):+0.00000 +0.00000 +0.00000
> Stall flag:+0
> Roll,pitch,yaw:+0.00000 +0.00000 +0.00000
> Cmd Velocity (x,y,z)+0.00000 +1.00000 +0.00000
> Velocity (x,y,z):+0.00000 +0.00000 +0.00000
> Stall flag:+0
> Roll,pitch,yaw:+0.00000 +0.00000 +0.00000
> Cmd Velocity (x,y,z)+0.00000 +0.00000 +0.00000
> Velocity (x,y,z):+0.00000 +0.00000 +0.00000
> Stall flag:+0
> Roll,pitch,yaw:+0.00000 +0.00000 +0.00000
> Cmd Velocity (x,y,z)-1.00000 +0.00000 +0.00000
> Velocity (x,y,z):+0.00000 +0.00000 +0.00000
> Stall flag:+0
> Roll,pitch,yaw:+0.00000 +0.00000 +0.00000
> 
> Here is the world file:
> 
> <?xml version="1.0"?>
> 
> <gazebo:world 
>   xmlns:xi="http://www.w3.org/2001/XInclude";
>   xmlns:gazebo="http://playerstage.sourceforge.net/gazebo/xmlschema/#gz"; 
>   xmlns:model="http://playerstage.sourceforge.net/gazebo/xmlschema/#model"; 
>  
> xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor"; 
>   xmlns:body="http://playerstage.sourceforge.net/gazebo/xmlschema/#body"; 
>   xmlns:geom="http://playerstage.sourceforge.net/gazebo/xmlschema/#geom"; 
>   xmlns:joint="http://playerstage.sourceforge.net/gazebo/xmlschema/#joint"; 
>  
> xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface";
>  
>  
> xmlns:rendering="http://playerstage.sourceforge.net/gazebo/xmlschema/#rendering";
>  
>  
> xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller";
>  
> xmlns:physics="http://playerstage.sourceforge.net/gazebo/xmlschema/#physics";
> >
> 
>   <verbosity>5</verbosity>
> 
>   <physics:ode>
>     <stepTime>0.001</stepTime>
>     <gravity>0 0 -9.8</gravity>
>     <cfm>10e-2</cfm>
>     <erp>0.2</erp>
> 
>     <!-- updateRate: <0 == throttle simTime to match realTime.
>                       0 == No throttling
>                      >0 == Frequency at which to throttle the sim --> 
>     <updateRate>0</updateRate>
>   </physics:ode>
> 
>   <rendering:gui>
>     <type>fltk</type>
>     <size>800 600</size>
>     <pos>0 0</pos>
>   </rendering:gui>
> 
>   <rendering:ogre>
>     <ambient>1 1 1 1</ambient>
>     <shadowTechnique>stencilAdditive</shadowTechnique>
>     <grid>false</grid>
>   </rendering:ogre>
> 
>    <!-- Ground Plane -->
>    <model:physical name="plane1_model">
>     <xyz>0 0 0</xyz>
>     <rpy>0 0 0</rpy>
>     <static>true</static>
> 
>     <body:plane name="plane1_body">
>       <geom:plane name="plane1_geom">
>         <normal>0 0 1</normal>
>         <size>100 100</size>
>         <segments>10 10</segments>
>         <uvTile>100 100</uvTile>
>         <material>Gazebo/GrayGrid</material>
>         <mu1>109999.0</mu1>
>         <mu2>1000.0</mu2>
>       </geom:plane>
>     </body:plane>
>   </model:physical>
> 
> 
>   <model:physical name="pioneer2dx_model1">
>     <xyz>1 1 0.5</xyz>
>     <rpy>0 0 0</rpy>
> 
>     <include embedded="true">
>       <xi:include href="models/pioneer2dx.model" />
>     </include>
> 
>   </model:physical>
> 
> </gazebo:world>
> 
> Here is the pioneer model used :
> <?xml version="1.0"?>
> 
> <!-- Generic Pioneer2dx Model -->
> <model:physical name="default_pioneer_model"
>   xmlns:model="http://playerstage.sourceforge.net/gazebo/xmlschema/#model"; 
>  
> xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor"; 
>   xmlns:body="http://playerstage.sourceforge.net/gazebo/xmlschema/#body"; 
>   xmlns:geom="http://playerstage.sourceforge.net/gazebo/xmlschema/#geom"; 
>   xmlns:joint="http://playerstage.sourceforge.net/gazebo/xmlschema/#joint"; 
>  
> xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#joint"; 
>  
> xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#joint"; 
>   >
> 
> <xyz>0 0 0.0</xyz>
> <rpy>0.0 0.0 0.0</rpy>
> 
> <canonicalBody>chassis_body</canonicalBody>
> 
> <body:box name="chassis_body">
>   <xyz>0.0 0.0 0.0</xyz>
>   <rpy>0.0 0.0 0.0</rpy>
> 
>   <geom:box name="chassis_geom">
>     <xyz>0 0 0.0</xyz>
>     <size>0.445 0.277 0.17</size>
>     <mass>2.0</mass>
>     <mu1>1</mu1>
> 
>     <visual>
>       <size>0.5 0.277 0.17</size>
>       <xyz>0 0 0.04</xyz>
>       <rpy>0 180 0</rpy>
>       <mesh>Pioneer2dx/chassis.mesh</mesh>
>       <material>Gazebo/Pioneer2Body</material>
>     </visual>
> 
>     <visual>
>       <xyz>0.015 0 0.09</xyz>
>       <rpy>0 0 0</rpy>
>       <mesh>Pioneer2at/chassis_top.mesh</mesh>
>       <material>Gazebo/Black</material>
>     </visual>
> 
>     <visual>
>       <xyz>0.21 0.0 0.068</xyz>
>       <rpy>0 0 0</rpy>
>       <size>0.12 0.29 0.034</size>
>       <mesh>Pioneer2at/sonarbank.mesh</mesh>
>       <material>Gazebo/Gold</material>
>     </visual>
> 
>     <visual>
>       <xyz>-0.178 0.0 0.068</xyz>
>       <rpy>0 0 180</rpy>
>       <size>0.12 0.29 0.034</size>
>       <mesh>Pioneer2at/sonarbank.mesh</mesh>
>       <material>Gazebo/Gold</material>
>     </visual>
> 
>   </geom:box>
> </body:box>
> 
> <body:cylinder name="left_wheel">
>   <xyz>0.1 -0.17 -0.0725</xyz>
>   <rpy>0 90 90</rpy>
> 
>   <geom:cylinder name="left_wheel_geom">
>     <size>0.075 0.05</size>
>     <mass>0.5</mass>
>     <mu1>0.5</mu1>
> 
>     <visual>
>       <rpy>-90 0 0</rpy>
>       <size>0.125 0.05 0.125</size>
>       <mesh>Pioneer2dx/tire.mesh</mesh>
>       <material>Gazebo/Black</material>
>     </visual>
> 
>     <visual>
>       <rpy>-90 0 0</rpy>
>       <size>0.073 0.05 0.073</size>
>       <mesh>Pioneer2at/wheel.mesh</mesh>
>       <material>Gazebo/Gold</material>
>     </visual>
> 
>     <visual>
>       <rpy>0 0 0</rpy>
>       <xyz>0 0 0.015</xyz>
>       <size>0.04 0.04 0.08 </size>
>       <mesh>unit_cylinder</mesh>
>       <material>Gazebo/Black</material>
>     </visual>
>     
> 
>   </geom:cylinder>
> </body:cylinder>
> 
> <body:cylinder name="right_wheel">
>   <xyz>0.1 0.17 -0.0725</xyz>
>   <rpy>0 90 90</rpy>
> 
>   <geom:cylinder name="right_wheel_geom">
>     <size>0.075 0.05</size>
>     <mass>0.5</mass>
>     <mu1>0.5</mu1>
> 
>     <visual>
>       <rpy>-90 0 0</rpy>
>       <size>0.125 0.05 0.125</size>
>       <mesh>Pioneer2dx/tire.mesh</mesh>
>       <material>Gazebo/Black</material>
>     </visual>
> 
>     <visual>
>       <rpy>-90 0 0</rpy>
>       <size>0.073 0.05 0.073</size>
>       <mesh>Pioneer2at/wheel.mesh</mesh>
>       <material>Gazebo/Gold</material>
>     </visual>
> 
>     <visual>
>       <rpy>0 0 0</rpy>
>       <xyz>0 0 -0.015</xyz>
>       <size>0.04 0.04 0.08</size>
>       <mesh>unit_cylinder</mesh>
>       <material>Gazebo/Black</material>
>     </visual>
>   </geom:cylinder>
> 
> </body:cylinder>
> 
> <body:sphere name="castor_body">
>   <xyz>-0.200 0 -0.11</xyz>
>   <rpy>0 0 0</rpy>
>   <geom:sphere name="castor_geom">
>     <size>0.04</size>
>     <mass>0.5</mass>
>     <mu1>0.5</mu1>
> 
>     <visual>
>       <scale>0.04 0.04 0.04</scale>
>       <mesh>unit_sphere</mesh>
>       <material>Gazebo/Black</material>
>     </visual>
>   </geom:sphere>
> </body:sphere>
> 
> <joint:hinge name="left_wheel_hinge">
>   <body1>left_wheel</body1>
>   <body2>chassis_body</body2>
>   <anchor>left_wheel</anchor>
>   <anchorOffset>0 0 0.04</anchorOffset>
>   <axis>0 1 0</axis>
>   <erp>0.8</erp>
>   <cfm>10e-5</cfm>
> </joint:hinge>
> 
> <joint:hinge name="right_wheel_hinge">
>   <body1>right_wheel</body1>
>   <body2>chassis_body</body2>
>   <anchor>right_wheel</anchor>
>   <anchorOffset>0 0 -0.04</anchorOffset>
>   <axis>0 1 0</axis>
>   <erp>0.8</erp>
>   <cfm>10e-5</cfm>
> </joint:hinge>
> 
> <joint:ball name="ball_joint">
>   <body1>castor_body</body1>
>   <body2>chassis_body</body2>
>   <anchor>castor_body</anchor>
>   <erp>0.8</erp>
>   <cfm>10e-5</cfm>
> </joint:ball>
> 
> <controller:differential_position2d name="controller1">
>   <leftJoint>left_wheel_hinge</leftJoint>
>   <rightJoint>right_wheel_hinge</rightJoint>
>   <wheelSeparation>0.39</wheelSeparation>
>   <wheelDiameter>0.15</wheelDiameter>
>   <torque>5</torque>
>   <interface:position name="position_iface_0"/>
> </controller:differential_position2d>
> 
> 
> </model:physical>
> 

-- 
View this message in context: 
http://old.nabble.com/issue-with-setting-pioneer-robot-velocity-using-only-libgazebo-and-position-interface-%28gazebo-0.10.0%29-tp28450187p28589029.html
Sent from the playerstage-gazebo mailing list archive at Nabble.com.


------------------------------------------------------------------------------

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

Reply via email to