Hello,
You're world file is the problem. Here is how you specify a laser fiducial id:
<body:...>
<geom:... >
<laserFiducialId>#</laserFiducialId>
</geom:...>
</body:..>
-nate
On Wed, Jul 2, 2008 at 6:57 AM, Sanchit Sood <[EMAIL PROTECTED]> wrote:
> Hello
>
> I'm using player and gazebo svn version 6728.
>
> I am trying to use fiducials to identify objects. When I try to get the
> count of the identified objects using GetCount() method it always returns 0,
> even if the object is just in front of the laser.
>
> Another problem is that reading data from laser fails very often with a
> segmentation fault; but after 2-3 tries it works fine.
>
> The relevant portions of code are as follows
>
> world file:
>
> <model:physical name="box1_model">
> <xyz>2 0 0.25</xyz>
> <canonicalBody>box1_body</canonicalBody>
> <static>false</static>
>
> <body:box name="box1_body">
> <geom:box name="box1_geom">
> <size>0.35 0.35 0.35</size>
> <mass>0.01</mass>
> <visual>
> <mesh>unit_box</mesh>
> <size>0.35 0.35 0.35</size>
> <material>Gazebo/BumpyMetal</material>
> </visual>
> </geom:box>
> </body:box>
> <fiducial>4</fiducial>
> </model:physical>
>
> laser model:
> <sensor:ray name="laser_2">
> <rayCount>180</rayCount>
> <rangeCount>361</rangeCount>
> <origin>0.05 0.0 0</origin>
>
> <minAngle>-90</minAngle>
> <maxAngle>90</maxAngle>
>
> <minRange>0.1</minRange>
> <maxRange>8</maxRange>
> `
> <controller:sicklms200_laser name="laser_controller_2">
> <interface:laser name="laser_iface_1"/>
> <interface:fiducial name="fiducial_iface_1"/>
> </controller:sicklms200_laser>
> </sensor:ray>
>
> gazebo.cfg
>
> driver
> (
> name "gazebo"
> provides ["fiducial:0"]
> gz_id "fiducial_iface_1"
> )
>
> driver
> (
> name "gazebo"
> provides ["laser:1"]
> gz_id "laser_iface_1"
> )
>
>
> Client
> #include<libplayerc++/playerc++.h>
>
> using namespace std;
> using namespace PlayerCc;
>
> PlayerClient robot("localhost",6665);
> LaserProxy lpl(&robot,1);
> FiducialProxy fp(&robot,0);
>
> int main(){
> double array[361];
> for(;;)
> {
> robot.Read();
> for(int i=0;i<361; i++)
> {
> array[i]=lpl.GetRange(i);
> }
> cout<<fp.GetCount()<<" object(s) detected"<<endl;
>
> if(fp.GetCount()!=0)
> { cout<<"detected"<<endl;
> return -1;
> }
> }
> }
>
> Am I doing something wrong somewhere?
>
> Thanks in advance
> Sanchit
>
> -------------------------------------------------------------------------
> Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
> Studies have shown that voting for your favorite open source project,
> along with a healthy diet, reduces your potential for chronic lameness
> and boredom. Vote Now at http://www.sourceforge.net/community/cca08
>
> _______________________________________________
> Playerstage-gazebo mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo
>
>
-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Playerstage-gazebo mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo