1. MPI_Allgatherv, version 0.5.1
2. inorder to modify "modelupdatefunc" module, add "models" list in GazeboID.cc & .hh, when load model in world.cc, modelprt will be pushback to this list
This commit is contained in:
parent
6bf9cf2bb2
commit
8c093b02be
|
@ -40,7 +40,7 @@
|
|||
// #include "gazebo/common/Plugin.hh"
|
||||
// #include "gazebo/common/Events.hh"
|
||||
// #include "gazebo/common/Exception.hh"
|
||||
// #include "gazebo/common/Console.hh"
|
||||
#include "gazebo/common/Console.hh"
|
||||
// #include "gazebo/common/CommonTypes.hh"
|
||||
|
||||
// #include "gazebo/physics/Gripper.hh"
|
||||
|
@ -85,7 +85,7 @@ void GazeboID::Load(sdf::ElementPtr _sdf)
|
|||
while (modelNameElem)
|
||||
{
|
||||
modelNames.push_back(modelNameElem->Get<std::string>());
|
||||
modelIDs.push_back(0); //initial state is 0
|
||||
modelIDs.push_back(0); //initial state is 0
|
||||
modelNameElem = modelNameElem->GetNextElement("model_name");
|
||||
}
|
||||
}
|
||||
|
@ -126,4 +126,17 @@ void GazeboID::Fini()
|
|||
{
|
||||
this->modelNames.clear();
|
||||
this->sdf.reset();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
ModelPtr GazeboID::GetModel(unsigned int _index) const
|
||||
{
|
||||
if (_index >= this->models.size())
|
||||
{
|
||||
gzerr << "Given model index[" << _index << "] is out of range[0.."
|
||||
<< this->models.size() << "]\n";
|
||||
return ModelPtr();
|
||||
}
|
||||
|
||||
return this->models[_index];
|
||||
}
|
|
@ -40,8 +40,8 @@ namespace gazebo
|
|||
{
|
||||
namespace physics
|
||||
{
|
||||
/// \class Distribution Distribution.hh physics/physics.hh
|
||||
/// \brief Distribution is used to store information about the distributed simulation.
|
||||
/// \class GazeboID GazeboID.hh physics/physics.hh
|
||||
/// \brief GazeboID is used to store information about the distributed simulation.
|
||||
class GZ_PHYSICS_VISIBLE GazeboID
|
||||
{
|
||||
/// \brief Constructor.
|
||||
|
@ -53,7 +53,7 @@ public:
|
|||
public:
|
||||
virtual ~GazeboID();
|
||||
|
||||
/// \brief Load the Distribution.
|
||||
/// \brief Load the GazeboID.
|
||||
/// \param[in] _sdf SDF parameters to load from.
|
||||
public:
|
||||
void Load(sdf::ElementPtr _sdf);
|
||||
|
@ -63,8 +63,8 @@ public:
|
|||
public:
|
||||
int GetGazeboID();
|
||||
|
||||
/// \brief Get the number of models this Distribution has.
|
||||
/// \return Number of models associated with this Distribution.
|
||||
/// \brief Get the number of models this GazeboID has.
|
||||
/// \return Number of models associated with this GazeboID.
|
||||
public:
|
||||
unsigned int GetModelCount();
|
||||
|
||||
|
@ -89,6 +89,14 @@ public:
|
|||
/// \brief Finialize the gazeboID
|
||||
public:
|
||||
void Fini();
|
||||
|
||||
/// \brief Get a model based on an index.
|
||||
/// Get a Model using an index, where index must be greater than zero
|
||||
/// and less than GazeboID::GetModelCount()
|
||||
/// \param[in] _index The index of the model [0..GetModelCount)
|
||||
/// \return A pointer to the Model. NULL if _index is invalid.
|
||||
public:
|
||||
ModelPtr GetModel(unsigned int _index) const;
|
||||
|
||||
/// \brief The Distribution's current SDF description.
|
||||
private:
|
||||
|
@ -105,6 +113,10 @@ private:
|
|||
/// \brief Models ID in this gazebo
|
||||
private:
|
||||
std::vector<unsigned int> modelIDs;
|
||||
|
||||
/// \brief A cached list of models. This is here for performance.
|
||||
public:
|
||||
Model_V models;
|
||||
};
|
||||
|
||||
} // namespace physics
|
||||
|
|
|
@ -1817,8 +1817,39 @@ void World::BuildSceneMsg(msgs::Scene &_scene, BasePtr _entity)
|
|||
void World::ModelUpdateSingleLoop()
|
||||
{
|
||||
// Update all the models
|
||||
for (unsigned int i = 0; i < this->dataPtr->rootElement->GetChildCount(); i++)
|
||||
this->dataPtr->rootElement->GetChild(i)->Update();
|
||||
/// original part
|
||||
//for (unsigned int i = 0; i < this->dataPtr->rootElement->GetChildCount(); i++)
|
||||
// this->dataPtr->rootElement->GetChild(i)->Update();
|
||||
/// original part
|
||||
|
||||
// test by zhangshuai 2019.07.09 ----Begin
|
||||
// for (unsigned int i = 0; i < this->dataPtr->rootElement->GetChildCount(); i++)
|
||||
// {
|
||||
// this->dataPtr->rootElement->GetChild(i)->Update();
|
||||
// std::cout << "GetChildCount() : " << this->dataPtr->rootElement->GetChildCount() << std::endl; //zhangshuai test 2019.07.09
|
||||
// std::cout << "GetChild(" << i << ") : " << this->dataPtr->rootElement->GetChild(i)->GetName() << std::endl;
|
||||
// std::cout << "rootElement->GetName() : " << this->dataPtr->rootElement->GetName() << std::endl;
|
||||
// std::cout << "this->GetModelCount() : " << this->GetModelCount() << std::endl;
|
||||
// }
|
||||
// test by zhangshuai 2019.07.09 ----End
|
||||
|
||||
// test by zhangshuai 2019.07.10 ----Begin
|
||||
// for (unsigned int i = 0; i < this->GetModelCount(); i++)
|
||||
// {
|
||||
// this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModel(i)->Update();
|
||||
// this->GetModel(i)->Update();
|
||||
// std::cout << "this->GetModelCount() : " << this->GetModelCount() << std::endl;
|
||||
// std::cout << "this->GetModel(i)->GetName() : " << this->GetModel(i)->GetName() << std::endl;
|
||||
// }
|
||||
// test by zhangshuai 2019.07.10 ----End
|
||||
|
||||
for (unsigned int i = 0; i < this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModelCount(); i++)
|
||||
{
|
||||
this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModel(i)->Update();
|
||||
// this->GetModel(i)->Update();
|
||||
std::cout << "GetModelCount() : " << this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModelCount() << std::endl;
|
||||
std::cout << "GetModel(i)->GetName() : " << this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModel(i)->GetName() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
|
@ -1842,17 +1873,52 @@ void World::LoadPlugins()
|
|||
{
|
||||
ModelPtr model = boost::static_pointer_cast<Model>(
|
||||
this->dataPtr->rootElement->GetChild(i));
|
||||
|
||||
// Modified by zhangshuai 2019.04.02 ----Begin
|
||||
if (this->flag == 1)
|
||||
{
|
||||
// Judge if the model to load is simulated in this gazebo
|
||||
for (unsigned int j = 0; j < this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModelCount(); j++)
|
||||
|
||||
// for (unsigned int i = 0; i < this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModelCount(); i++)
|
||||
// {
|
||||
// if (model->GetName() == this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModelName(i))
|
||||
// {
|
||||
// // Original part
|
||||
// model->LoadPlugins();
|
||||
// // Original part
|
||||
// this->distribution->GetGazeboIDPtr(gazeboLocalID)->SetModelID(i, model->GetId());
|
||||
// }
|
||||
// }
|
||||
|
||||
int tmp_gazebo_count = this->distribution->GetGazeboCount();
|
||||
for (int tmp_gazebo_id = 0; tmp_gazebo_id < tmp_gazebo_count; tmp_gazebo_id++)
|
||||
{
|
||||
if (model->GetName() == this->distribution->GetGazeboIDPtr(gazeboLocalID)->GetModelName(j))
|
||||
if (this->gazeboLocalID == tmp_gazebo_id)
|
||||
{
|
||||
// Original part
|
||||
model->LoadPlugins();
|
||||
// Original part
|
||||
unsigned int tmp_model_count = this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelCount();
|
||||
for (unsigned int j = 0; j < tmp_model_count; j++)
|
||||
{
|
||||
if (model->GetName() == this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelName(j))
|
||||
{
|
||||
// Original part
|
||||
model->LoadPlugins();
|
||||
// Original part
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->SetModelID(j, model->GetId());
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->models.push_back(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int tmp_model_count = this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelCount();
|
||||
for (unsigned int j = 0; j < tmp_model_count; j++)
|
||||
{
|
||||
if (model->GetName() == this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelName(j))
|
||||
{
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->SetModelID(j, model->GetId());
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->models.push_back(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1860,6 +1926,7 @@ void World::LoadPlugins()
|
|||
{
|
||||
model->LoadPlugins();
|
||||
}
|
||||
|
||||
// Modified by zhangshuai 2019.04.02 ----End
|
||||
// model->LoadPlugins();
|
||||
}
|
||||
|
@ -2404,6 +2471,7 @@ void World::ProcessFactoryMsgs()
|
|||
model->LoadPlugins();
|
||||
// Original part
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->SetModelID(i, model->GetId());
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->models.push_back(model); // modified by zhangshuai 2019.07.10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2415,6 +2483,7 @@ void World::ProcessFactoryMsgs()
|
|||
if (model->GetName() == this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelName(i))
|
||||
{
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->SetModelID(i, model->GetId());
|
||||
this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->models.push_back(model); // modified by zhangshuai 2019.07.10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue