本文整理汇总了C++中GridMap::getLength方法的典型用法代码示例。如果您正苦于以下问题:C++ GridMap::getLength方法的具体用法?C++ GridMap::getLength怎么用?C++ GridMap::getLength使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GridMap
的用法示例。
在下文中一共展示了GridMap::getLength方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init
void PotentialField::init() {
ROS_INFO("Created map");
map_.setFrameId("/potential_field_link");
map_.setGeometry(Length(map_x_size_, map_y_size_), map_resolution_);
for (GridMapIterator it(map_); !it.isPastEnd(); ++it) {
Position position;
map_.getPosition(*it, position);
map_.at("obstacle_field", *it) = 0.0;
map_.at("target_waypoint_field", *it) = 0.0;
map_.at("vscan_points_field", *it) = 0.0;
map_.at("potential_field", *it) = 0.0;
}
ROS_INFO("Created map with size %f x %f m (%i x %i cells).",
map_.getLength().x(), map_.getLength().y(), map_.getSize()(0),
map_.getSize()(1));
}
示例2: populateMap
void populateMap(GridMap &map, string layer,string file_path, float scale,float res)
{
cv_bridge::CvImage cv_image;
Mat img = imread(file_path,CV_LOAD_IMAGE_GRAYSCALE);
cv::Size img_size= img.size();
cv::resize(img,img,cv::Size(),scale,scale, CV_INTER_CUBIC);
map.setGeometry(Length(img.rows*res,img.cols*res),res);
for (GridMapIterator it(map); !it.isPastEnd(); ++it)
{
Position position;
map.getPosition(*it, position);
int x = (img.rows/2) + position.x()/res+res/2.0;
int y = (img.cols/2) + position.y()/res+res/2.0;
map.at(layer, *it) = img.at<uchar>(x,y)<200?1:0;
}
map.setTimestamp(ros::Time::now().toNSec());
ROS_INFO("Created map with size %f x %f m (%i x %i cells).",map.getLength().x(), map.getLength().y(),map.getSize()(0), map.getSize()(1));
}
示例3:
TEST(GridMapCvProcessing, changeResolution)
{
// Create grid map.
GridMap mapIn;
mapIn.setGeometry(grid_map::Length(2.0, 1.0), 0.01);
mapIn.add("layer", 1.0);
for (grid_map::CircleIterator iterator(mapIn, mapIn.getPosition(), 0.2); !iterator.isPastEnd(); ++iterator) {
mapIn.at("layer", *iterator) = 2.0;
}
// Change resolution.
GridMap mapOut;
EXPECT_TRUE(GridMapCvProcessing::changeResolution(mapIn, mapOut, 0.1));
// Check data.
EXPECT_TRUE((mapIn.getLength() == mapOut.getLength()).all());
EXPECT_TRUE(mapIn.getPosition() == mapOut.getPosition());
EXPECT_TRUE((mapIn.getSize() == mapOut.getSize() * 10).all());
EXPECT_EQ(mapIn["layer"](0, 0), mapOut["layer"](0, 0)); // Corner.
EXPECT_EQ(mapIn.atPosition("layer", mapIn.getPosition()), mapOut.atPosition("layer", mapOut.getPosition())); // Center.
}
示例4: vscan_points_callback
void PotentialField::vscan_points_callback(
sensor_msgs::PointCloud2::ConstPtr vscan_msg) {
static VscanPointsFieldParamater param;
double around_x(param.around_x);
double around_y(param.around_y);
ros::Time time = ros::Time::now();
pcl::PointCloud<pcl::PointXYZ> pcl_vscan;
pcl::fromROSMsg(*vscan_msg, pcl_vscan);
pcl::PointCloud<pcl::PointXYZ>::Ptr pcl_vscan_ptr(
new pcl::PointCloud<pcl::PointXYZ>(pcl_vscan));
double length_x = map_.getLength().x() / 2.0;
double length_y = map_.getLength().y() / 2.0;
for (GridMapIterator it(map_); !it.isPastEnd(); ++it) {
Position position;
map_.getPosition(*it, position);
map_.at("vscan_points_field", *it) = 0.0;
for (int i(0); i < (int)pcl_vscan.size(); ++i) {
double point_x = pcl_vscan.at(i).x - map_x_offset_;
if (3.0 < pcl_vscan.at(i).z + tf_z_ || pcl_vscan.at(i).z + tf_z_ < 0.3)
continue;
if (length_x < point_x && point_x < -1.0 * length_x)
continue;
if (length_y < pcl_vscan.at(i).y && pcl_vscan.at(i).y < -1.0 * length_y)
continue;
if ((point_x + tf_x_) - around_x < position.x() &&
position.x() < point_x + tf_x_ + around_x) {
if (pcl_vscan.at(i).y - around_y < position.y() &&
position.y() < pcl_vscan.at(i).y + around_y) {
map_.at("vscan_points_field", *it) = 1.0; // std::exp(0.0) ;
}
}
}
}
map_.setTimestamp(time.toNSec());
publish_potential_field();
}