rpg_ig_active源码阅读(二)

上次看的是如何计算ig,今天看的是basic_viewer部分

ros_nodes中的basic_view_planner.cpp

入口是在ros_nodes下的basic_view_planner.cpp里,这个文件实现了一个rosnode,还有一个简单用户交互

rosnode

rosnode里主要是获取了一些view_planner的参数,包括Robot view 还有 world
还有utility_calculator的参数,
以及对不同ig的计算方法以及权重,这些参数赋给了utility_calculator
而后面这个也赋给了view_planner

utility_calculator->useInformationGain(ig_names[i],ig_weights[i]);
view_planner.setUtility(utility_calculator);

然后对不同的目标进行估值
view_planner.setGoalEvaluationModule(termination_criteria);

用户交互

这个比较简单,就是从键盘里读取,对应了view_planner的不同状态,比如开始运行

case 'g':
std::cout<<"Starting...";
view_planner.run();

code_base中的basic_view_planner.cpp

主要的过程在main函数里:
main函数是主要的部分,内容主要是:

  • getViewSpace函数获取视野viewspace_
  • 然后用getGoodViewSpace函数把候选视野存放在view_candidate_ids
  • 然后获取robot表面的数据,并且计算cost和ig,这两个都被utility封装好了
  • getNbv函数通过cost和ig来算出最好的view的id,根据id得出nbv
  • 然后会判断重建环节是否完成,没有完成的话则用**movet(nbv)**函数到达下一个视野
  • 这一个procedure就结束了,开始下一个procedure

下面会看每个函数具体怎么实现的

  • getViewSpace : 是在ig_active_reconstruction/views_communication_interface.hpp.cpp里声明的,并且在这里是纯虚函数virtual const ViewSpace& getViewSpace()=0;class SimpleViewSpaceModule: public CommunicationInterface是继承过来的,在views_simple_view_space_module.cppgetViewSpace的具体实现,其实只有一个loadfromfile,是在view_space.cpp实现的,文件的路径是在simple_viewspace_module.launch里定义的,文件的第一个数字是Pose的数量,之后的每个pose包含七个量,分别是x y z 和四元数
  • getGoodViewSpace 传入的是id集合和是否忽略已经到过的点,如果点是可达的,并且非bad,如果要忽略已到达的点,那么到达的次数需要为0,这样的点就被选为候选点;
  • retrieveData() 等待获取robot表面的数据
  • getNbv 传入候选id集合以及viewspace,具体实现在weighted_linear_utility.cpp里,这里比较重要的是computeViewIg函数world_comm_unit_->computeViewIg(command,information_gains);,这里是一个client,把command填入request后去call server,server在world_representation_ros_server_ci.inl中,绑定的回调函数为igComputationService,该函数判断interface是否初始化,最后进入的是linked_interface_->computeViewIg(command,result);,该函数在octomap_basic_ray_ig_calculator.inl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值