costmap_adapter.cpp
Go to the documentation of this file.
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2018, Locus Robotics
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  */
34 
36 #include <nav_core2/exceptions.h>
38 #include <string>
39 
41 
42 namespace nav_core_adapter
43 {
44 
46 {
48  costmap_2d::Costmap2D* costmap = costmap_ros->getCostmap();
49  info.width = costmap->getSizeInCellsX();
50  info.height = costmap->getSizeInCellsY();
51  info.resolution = costmap->getResolution();
52  info.frame_id = costmap_ros->getGlobalFrameID();
53  info.origin_x = costmap->getOriginX();
54  info.origin_y = costmap->getOriginY();
55  return info;
56 }
57 
59 {
61  {
62  delete costmap_ros_;
63  }
64 }
65 
66 void CostmapAdapter::initialize(costmap_2d::Costmap2DROS* costmap_ros, bool needs_destruction)
67 {
68  costmap_ros_ = costmap_ros;
69  needs_destruction_ = needs_destruction;
72 }
73 
74 void CostmapAdapter::initialize(const ros::NodeHandle& parent, const std::string& name, TFListenerPtr tf)
75 {
76  initialize(new costmap_2d::Costmap2DROS(name, *tf), true);
77 }
78 
80 {
81  return costmap_->getMutex();
82 }
83 
85 {
87 }
88 
90 {
92  if (!costmap_ros_->isCurrent())
93  throw nav_core2::CostmapDataLagException("Costmap2DROS is out of date somehow.");
94 }
95 
96 void CostmapAdapter::setValue(const unsigned int x, const unsigned int y, const unsigned char& value)
97 {
98  costmap_->setCost(x, y, value);
99 }
100 
101 unsigned char CostmapAdapter::getValue(const unsigned int x, const unsigned int y) const
102 {
103  unsigned int index = costmap_->getIndex(x, y);
104  return costmap_->getCharMap()[index];
105 }
106 
108 {
109  throw nav_core2::CostmapException("setInfo not implemented on CostmapAdapter");
110 }
111 
113 {
114  costmap_->updateOrigin(new_info.origin_x, new_info.origin_y);
115 }
116 
117 } // namespace nav_core_adapter
nav_grid::NavGridInfo::height
unsigned int height
nav_core2::Costmap::mutex_t
boost::recursive_mutex mutex_t
nav_core_adapter::CostmapAdapter::update
void update() override
Definition: costmap_adapter.cpp:89
nav_grid::NavGridInfo::origin_x
double origin_x
costmap_2d::Costmap2D
costmap_2d::Costmap2D::getCharMap
unsigned char * getCharMap() const
costmap_2d::Costmap2D::getOriginX
double getOriginX() const
nav_core_adapter::CostmapAdapter::~CostmapAdapter
virtual ~CostmapAdapter()
Deconstructor for possibly freeing the costmap_ros_ object.
Definition: costmap_adapter.cpp:58
nav_core2::CostmapDataLagException
class_list_macros.h
nav_core_adapter::CostmapAdapter::getMutex
nav_core2::Costmap::mutex_t * getMutex() override
Definition: costmap_adapter.cpp:79
costmap_2d::Costmap2DROS::resetLayers
void resetLayers()
PLUGINLIB_EXPORT_CLASS
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
costmap_2d::Costmap2D::setCost
void setCost(unsigned int mx, unsigned int my, unsigned char cost)
nav_core_adapter::infoFromCostmap
nav_grid::NavGridInfo infoFromCostmap(costmap_2d::Costmap2DROS *costmap_ros)
Definition: costmap_adapter.cpp:45
nav_core_adapter::CostmapAdapter::getValue
unsigned char getValue(const unsigned int x, const unsigned int y) const override
Definition: costmap_adapter.cpp:101
nav_core_adapter::CostmapAdapter::needs_destruction_
bool needs_destruction_
Definition: costmap_adapter.h:80
costmap_2d::Costmap2D::getSizeInCellsY
unsigned int getSizeInCellsY() const
nav_core2::CostmapException
nav_grid::NavGridInfo::frame_id
std::string frame_id
costmap_adapter.h
nav_core_adapter::CostmapAdapter::setInfo
void setInfo(const nav_grid::NavGridInfo &new_info) override
Definition: costmap_adapter.cpp:107
exceptions.h
costmap_2d::Costmap2D::getMutex
mutex_t * getMutex()
nav_grid::NavGridInfo
nav_core_adapter::CostmapAdapter::costmap_ros_
costmap_2d::Costmap2DROS * costmap_ros_
Definition: costmap_adapter.h:78
nav_core_adapter::CostmapAdapter::updateInfo
void updateInfo(const nav_grid::NavGridInfo &new_info) override
Definition: costmap_adapter.cpp:112
costmap_2d::Costmap2D::getOriginY
double getOriginY() const
nav_grid::NavGridInfo::resolution
double resolution
nav_core_adapter::CostmapAdapter::setValue
void setValue(const unsigned int x, const unsigned int y, const unsigned char &value) override
Definition: costmap_adapter.cpp:96
TFListenerPtr
std::shared_ptr< tf2_ros::Buffer > TFListenerPtr
costmap_2d::Costmap2DROS::isCurrent
bool isCurrent() const
nav_grid::NavGridInfo::width
unsigned int width
nav_core_adapter
Definition: costmap_adapter.h:43
nav_core_adapter::CostmapAdapter::initialize
void initialize(costmap_2d::Costmap2DROS *costmap_ros, bool needs_destruction=false)
Initialize from an existing Costmap2DROS object.
Definition: costmap_adapter.cpp:66
nav_core_adapter::CostmapAdapter
Definition: costmap_adapter.h:47
costmap_2d::Costmap2D::getResolution
double getResolution() const
costmap_2d::Costmap2D::updateOrigin
virtual void updateOrigin(double new_origin_x, double new_origin_y)
tf
nav_core2::Costmap
costmap_2d::Costmap2D::getIndex
unsigned int getIndex(unsigned int mx, unsigned int my) const
nav_core_adapter::CostmapAdapter::reset
void reset() override
Definition: costmap_adapter.cpp:84
costmap_2d::Costmap2DROS::getCostmap
Costmap2D * getCostmap() const
costmap_2d::Costmap2D::getSizeInCellsX
unsigned int getSizeInCellsX() const
costmap_2d::Costmap2DROS::getGlobalFrameID
const std::string & getGlobalFrameID() const noexcept
nav_core_adapter::CostmapAdapter::costmap_
costmap_2d::Costmap2D * costmap_
Definition: costmap_adapter.h:79
nav_grid::NavGridInfo::origin_y
double origin_y
costmap_2d::Costmap2DROS
ros::NodeHandle


nav_core_adapter
Author(s):
autogenerated on Sun May 18 2025 02:47:37