chuycepeda
User
 Senior Boarder
| Posts: 14 |   | Karma: 4
|
Multi-Robot SLAM - 2010/02/28 04:35
Hi, I've modified ExplorerSimService from Trevor, which is pretty similar to Raul's one using sonars; and now I've loaded an environment from an XML together with 3 Pioneers, which I created using SPL from HelloApps.
The question is, how computational cost is increased by triplicating that operations ? Can this be optimized ?....I don't really know if the answer is just: "It Triplicates, and maybe..." 
Below is basically what I've done and when using the 3 LRFs for doing the map, the FPS go really bad to about 15 or less...I'm using a Core 2 Duo running at 2.20Ghz...how much you think could be enough?
--Changes into Start() Method: (I use lrfenableX for referring which LRF data is considered in the map)
| Code: |
if (lrfenable)
{
MainPortInterleave.CombineWith(
Arbiter.Interleave(
new TeardownReceiverGroup(),
new ExclusiveReceiverGroup(
Arbiter.Receive<LaserRangeFinderResetUpdate>(true, _mainPort, LaserRangeFinderResetUpdateHandler),
Arbiter.Receive<LaserRangeFinderUpdate>(true, _mainPort, LaserRangeFinderUpdateHandler)
),
new ConcurrentReceiverGroup()
)
);
}
if (lrfenable2)
{
MainPortInterleave.CombineWith(
Arbiter.Interleave(
new TeardownReceiverGroup(),
new ExclusiveReceiverGroup(
Arbiter.Receive<LaserRangeFinderResetUpdate>(true, _mainPort2, LaserRangeFinderResetUpdateHandler2),
Arbiter.Receive<LaserRangeFinderUpdate>(true, _mainPort2, LaserRangeFinderUpdateHandler2)
),
new ConcurrentReceiverGroup()
)
);
}
if (lrfenable3)
{
MainPortInterleave.CombineWith(
Arbiter.Interleave(
new TeardownReceiverGroup(),
new ExclusiveReceiverGroup(
Arbiter.Receive<LaserRangeFinderResetUpdate>(true, _mainPort3, LaserRangeFinderResetUpdateHandler3),
Arbiter.Receive<LaserRangeFinderUpdate>(true, _mainPort3, LaserRangeFinderUpdateHandler3)
),
new ConcurrentReceiverGroup()
)
);
}
MainPortInterleave.CombineWith(
Arbiter.Interleave(
new TeardownReceiverGroup(),
new ExclusiveReceiverGroup(),
new ConcurrentReceiverGroup(
Arbiter.Receive<sicklrf.Reset>(true, _lrfNotifyPort, LaserResetNotification),
Arbiter.Receive<sicklrf2.Reset>(true, _lrfNotifyPort2, LaserResetNotification2),
Arbiter.Receive<sicklrf3.Reset>(true, _lrfNotifyPort3, LaserResetNotification3)
)
)
);
Activate(
Arbiter.ReceiveWithIterator<sicklrf.Replace>(false, _lrfNotifyPort, LaserReplaceNotification),
Arbiter.ReceiveWithIterator<sicklrf2.Replace>(false, _lrfNotifyPort2, LaserReplaceNotification2),
Arbiter.ReceiveWithIterator<sicklrf3.Replace>(false, _lrfNotifyPort3, LaserReplaceNotification3)
);
|
|