Hello all,
Just wanted to update on this issue in case it is helpful to someone else.
It is completely fixed by using the SVN version of Gazebo with OGRE 1.6.4
for some reason version 1.7.0 of OGRE caused this issue of the shared memory
not getting updated.
Regards,
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-tp28450187p28793134.html
Sent from the playerstage-gazebo mailing list archive at Nabble.com.
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Playerstage-gazebo mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo