YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
Map2D_nwc_yarp.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: LGPL-2.1-or-later
4 */
5
8#include "Map2D_nwc_yarp.h"
9#include <yarp/os/Log.h>
11#include <yarp/os/LogStream.h>
12#include <mutex>
15
16using namespace yarp::dev;
17using namespace yarp::dev::Nav2D;
18using namespace yarp::os;
19using namespace yarp::sig;
20
21namespace {
22YARP_LOG_COMPONENT(MAP2D_NWC_YARP, "yarp.device.map2D_nwc_yarp")
23}
24
25//------------------------------------------------------------------------------------------------------------------------------
26
28{
29 if (!parseParams(config)) { return false; }
30
31 std::string local_rpc1 = m_local;
32 local_rpc1 += "/mapClient_rpc";
33
34 std::string remote_rpc1 = m_remote;
35 remote_rpc1 += "/rpc";
36
38 {
39 yCError(MAP2D_NWC_YARP, "open() error could not open rpc port %s, check network", local_rpc1.c_str());
40 return false;
41 }
42
43 bool ok=false;
44 ok=Network::connect(local_rpc1, remote_rpc1, m_carrier);
45 if (!ok)
46 {
47 yCError(MAP2D_NWC_YARP, "open() error could not connect to %s", remote_rpc1.c_str());
48 return false;
49 }
50
52 {
53 yCError(MAP2D_NWC_YARP, "Error! Cannot attach the port as a client");
54 return false;
55 }
56
57 return true;
58}
59
61{
62 std::lock_guard <std::mutex> lg(m_mutex);
63 return m_map_RPC.store_map_RPC(map);
64}
65
67{
68 std::lock_guard <std::mutex> lg(m_mutex);
69 auto ret = m_map_RPC.get_map_RPC(map_name);
70 if (!ret.retval)
71 {
72 yCError(MAP2D_NWC_YARP, "Unable to get_map");
73 return ret.retval;
74 }
75 map = ret.themap;
76 return ret.retval;
77}
78
80{
81 std::lock_guard <std::mutex> lg(m_mutex);
83}
84
85ReturnValue Map2D_nwc_yarp::get_map_names(std::vector<std::string>& map_names)
86{
87 std::lock_guard <std::mutex> lg(m_mutex);
89 if (!ret.retval)
90 {
91 yCError(MAP2D_NWC_YARP, "Unable to get_map_names");
92 return ret.retval;
93 }
94 map_names = ret.map_names;
95 return ret.retval;
96}
97
99{
100 std::lock_guard <std::mutex> lg(m_mutex);
101 return m_map_RPC.remove_map_RPC(map_name);
102}
103
105{
106 std::lock_guard <std::mutex> lg(m_mutex);
107 return m_map_RPC.store_location_RPC(location_name,loc);
108}
109
111{
112 std::lock_guard <std::mutex> lg(m_mutex);
113 return m_map_RPC.store_area_RPC(area_name, area);
114}
115
117{
118 std::lock_guard <std::mutex> lg(m_mutex);
119 return m_map_RPC.store_path_RPC(path_name, path);
120}
121
122ReturnValue Map2D_nwc_yarp::getLocationsList(std::vector<std::string>& locations)
123{
124 std::lock_guard <std::mutex> lg(m_mutex);
126 if (!ret.retval)
127 {
128 yCError(MAP2D_NWC_YARP, "Unable to getLocationsList");
129 return ret.retval;
130 }
131 locations = ret.locations;
132 return ret.retval;
133}
134
135ReturnValue Map2D_nwc_yarp::getAreasList(std::vector<std::string>& areas)
136{
137 std::lock_guard <std::mutex> lg(m_mutex);
139 if (!ret.retval)
140 {
141 yCError(MAP2D_NWC_YARP, "Unable to getAreasList");
142 return ret.retval;
143 }
144 areas = ret.areas;
145 return ret.retval;
146}
147
148ReturnValue Map2D_nwc_yarp::getPathsList(std::vector<std::string>& paths)
149{
150 std::lock_guard <std::mutex> lg(m_mutex);
152 if (!ret.retval)
153 {
154 yCError(MAP2D_NWC_YARP, "Unable to getPathsList");
155 return ret.retval;
156 }
157 paths = ret.paths;
158 return ret.retval;
159}
160
161ReturnValue Map2D_nwc_yarp::getAllLocations(std::vector<yarp::dev::Nav2D::Map2DLocation>& locations)
162{
163 std::lock_guard <std::mutex> lg(m_mutex);
165 if (!ret.retval)
166 {
167 yCError(MAP2D_NWC_YARP, "Unable to getAllLocations");
168 return ret.retval;
169 }
170 locations = ret.locations;
171 return ret.retval;
172}
173
174ReturnValue Map2D_nwc_yarp::getAllAreas(std::vector<yarp::dev::Nav2D::Map2DArea>& areas)
175{
176 std::lock_guard <std::mutex> lg(m_mutex);
178 if (!ret.retval)
179 {
180 yCError(MAP2D_NWC_YARP, "Unable to getAllAreas");
181 return ret.retval;
182 }
183 areas = ret.areas;
184 return ret.retval;
185}
186
187ReturnValue Map2D_nwc_yarp::getAllPaths(std::vector<yarp::dev::Nav2D::Map2DPath>& paths)
188{
189 std::lock_guard <std::mutex> lg(m_mutex);
191 if (!ret.retval)
192 {
193 yCError(MAP2D_NWC_YARP, "Unable to getAllPaths");
194 return ret.retval;
195 }
196 paths = ret.paths;
197 return ret.retval;
198}
199
201{
202 std::lock_guard <std::mutex> lg(m_mutex);
203 auto ret = m_map_RPC.get_location_RPC(location_name);
204 if (!ret.retval)
205 {
206 yCError(MAP2D_NWC_YARP, "Unable to getLocation");
207 return ret.retval;
208 }
209 loc = ret.loc;
210 return ret.retval;
211}
212
213ReturnValue Map2D_nwc_yarp::getArea(std::string area_name, Map2DArea& area)
214{
215 std::lock_guard <std::mutex> lg(m_mutex);
216 auto ret = m_map_RPC.get_area_RPC(area_name);
217 if (!ret.retval)
218 {
219 yCError(MAP2D_NWC_YARP, "Unable to getArea");
220 return ret.retval;
221 }
222 area = ret.area;
223 return ret.retval;
224}
225
226ReturnValue Map2D_nwc_yarp::getPath(std::string path_name, Map2DPath& path)
227{
228 std::lock_guard <std::mutex> lg(m_mutex);
229 auto ret = m_map_RPC.get_path_RPC(path_name);
230 if (!ret.retval)
231 {
232 yCError(MAP2D_NWC_YARP, "Unable to getPath");
233 return ret.retval;
234 }
235 path = ret.path;
236 return ret.retval;
237}
238
240{
241 std::lock_guard <std::mutex> lg(m_mutex);
242 return m_map_RPC.delete_location_RPC(location_name);
243}
244
245ReturnValue Map2D_nwc_yarp::renameLocation(std::string original_name, std::string new_name)
246{
247 std::lock_guard <std::mutex> lg(m_mutex);
248 return m_map_RPC.rename_location_RPC(original_name,new_name);
249}
250
251ReturnValue Map2D_nwc_yarp::deleteArea(std::string location_name)
252{
253 std::lock_guard <std::mutex> lg(m_mutex);
254 return m_map_RPC.delete_area_RPC(location_name);
255}
256
258{
259 std::lock_guard <std::mutex> lg(m_mutex);
260 return m_map_RPC.delete_path_RPC(path_name);
261}
262
263ReturnValue Map2D_nwc_yarp::renameArea(std::string original_name, std::string new_name)
264{
265 std::lock_guard <std::mutex> lg(m_mutex);
266 return m_map_RPC.rename_area_RPC(original_name, new_name);
267}
268
269ReturnValue Map2D_nwc_yarp::renamePath(std::string original_name, std::string new_name)
270{
271 std::lock_guard <std::mutex> lg(m_mutex);
272 return m_map_RPC.rename_path_RPC(original_name, new_name);
273}
274
276{
277 std::lock_guard <std::mutex> lg(m_mutex);
279}
280
282{
283 std::lock_guard <std::mutex> lg(m_mutex);
285}
286
292
294{
295 std::lock_guard <std::mutex> lg(m_mutex);
297}
298
300{
301 std::lock_guard <std::mutex> lg(m_mutex);
303}
304
306{
307 return true;
308}
309
315
321
327
333
334ReturnValue Map2D_nwc_yarp::saveMapToDisk(std::string map_name, std::string file_name)
335{
336 std::lock_guard <std::mutex> lg(m_mutex);
337 return m_map_RPC.save_map_to_disk_RPC(map_name,file_name);
338}
339
341{
342 std::lock_guard <std::mutex> lg(m_mutex);
343 return m_map_RPC.load_map_from_disk_RPC(file_name);
344}
345
347{
348 std::lock_guard <std::mutex> lg(m_mutex);
350}
bool ret
virtual return_get_map_names get_map_names_RPC()
virtual yarp::dev::ReturnValue save_map_to_disk_RPC(const std::string &map_name, const std::string &file_name)
virtual yarp::dev::ReturnValue save_maps_collection_RPC(const std::string &maps_collection_file)
virtual yarp::dev::ReturnValue remove_map_RPC(const std::string &map_name)
virtual yarp::dev::ReturnValue clear_all_areas_RPC()
virtual yarp::dev::ReturnValue enable_maps_compression_RPC(const bool enable_compression)
virtual yarp::dev::ReturnValue store_area_RPC(const std::string &area_name, const yarp::dev::Nav2D::Map2DArea &area)
virtual yarp::dev::ReturnValue rename_path_RPC(const std::string &original_name, const std::string &new_name)
virtual yarp::dev::ReturnValue delete_path_RPC(const std::string &path_name)
virtual return_get_all_areas get_all_areas_RPC()
virtual yarp::dev::ReturnValue store_map_RPC(const yarp::dev::Nav2D::MapGrid2D &themap)
virtual yarp::dev::ReturnValue rename_location_RPC(const std::string &original_name, const std::string &new_name)
virtual return_get_location get_location_RPC(const std::string &location_name)
virtual return_get_areas_list get_areas_list_RPC()
virtual yarp::dev::ReturnValue load_map_from_disk_RPC(const std::string &file_name)
virtual return_get_path get_path_RPC(const std::string &path_name)
virtual yarp::dev::ReturnValue store_path_RPC(const std::string &path_name, const yarp::dev::Nav2D::Map2DPath &path)
virtual yarp::dev::ReturnValue clear_all_locations_RPC()
virtual yarp::dev::ReturnValue rename_area_RPC(const std::string &original_name, const std::string &new_name)
virtual yarp::dev::ReturnValue clear_all_maps_RPC()
virtual yarp::dev::ReturnValue delete_location_RPC(const std::string &location_name)
virtual yarp::dev::ReturnValue load_locations_and_extras_RPC(const std::string &locations_collection_file)
virtual yarp::dev::ReturnValue load_maps_collection_RPC(const std::string &maps_collection_file)
virtual yarp::dev::ReturnValue delete_area_RPC(const std::string &area_name)
virtual yarp::dev::ReturnValue store_location_RPC(const std::string &location_name, const yarp::dev::Nav2D::Map2DLocation &loc)
virtual return_get_area get_area_RPC(const std::string &area_name)
virtual return_get_all_paths get_all_paths_RPC()
virtual return_get_map get_map_RPC(const std::string &map_name)
virtual yarp::dev::ReturnValue save_locations_and_extras_RPC(const std::string &locations_collection_file)
virtual yarp::dev::ReturnValue clear_all_maps_temporary_flags_RPC()
virtual return_get_paths_list get_paths_list_RPC()
virtual yarp::dev::ReturnValue clear_all_paths_RPC()
virtual return_get_locations_list get_locations_list_RPC()
virtual return_get_all_locations get_all_locations_RPC()
virtual yarp::dev::ReturnValue clear_map_temporary_flags_RPC(const std::string &map_name)
bool parseParams(const yarp::os::Searchable &config) override
Parse the DeviceDriver parameters.
yarp::dev::ReturnValue getPathsList(std::vector< std::string > &paths) override
Get a list of the names of all stored paths.
yarp::dev::ReturnValue clearAllMaps() override
Removes all the registered maps from the server.
yarp::dev::ReturnValue clearAllMapsTemporaryFlags() override
Clear all temporary flags from all stored maps.
yarp::dev::ReturnValue saveMapsCollection(std::string maps_collection_file) override
Save a collection of maps to disk.
yarp::dev::ReturnValue loadMapsCollection(std::string maps_collection_file) override
Load a collection of maps from disk.
yarp::dev::ReturnValue saveLocationsAndExtras(std::string locations_collection_file) override
Save a collection of locations/area/paths etc to disk.
yarp::dev::ReturnValue remove_map(std::string map_name) override
Removes a map from the map server.
yarp::dev::ReturnValue renameLocation(std::string original_name, std::string new_name) override
Searches for a location and renames it.
yarp::dev::ReturnValue deleteLocation(std::string location_name) override
Delete a location.
bool open(yarp::os::Searchable &config) override
Open the DeviceDriver.
yarp::os::Port m_rpcPort_to_Map2D_nws
yarp::dev::ReturnValue clearMapTemporaryFlags(std::string map_name) override
Clear all temporary flags from a specific map.
yarp::dev::ReturnValue loadMapFromDisk(std::string file_name) override
Load a map from disk.
yarp::dev::ReturnValue getLocation(std::string location_name, yarp::dev::Nav2D::Map2DLocation &loc) override
Retrieves a location specified by the user in the world reference frame.
yarp::dev::ReturnValue getAllPaths(std::vector< yarp::dev::Nav2D::Map2DPath > &paths) override
Get a list of all stored paths.
yarp::dev::ReturnValue clearAllPaths() override
Delete all stored paths.
yarp::dev::ReturnValue getAllLocations(std::vector< yarp::dev::Nav2D::Map2DLocation > &locations) override
Get a list of all stored locations.
yarp::dev::ReturnValue clearAllAreas() override
Delete all stored areas.
yarp::dev::ReturnValue storePath(std::string path_name, yarp::dev::Nav2D::Map2DPath path) override
Store a path.
yarp::dev::ReturnValue renameArea(std::string original_name, std::string new_name) override
Searches for an area and renames it.
yarp::dev::ReturnValue saveMapToDisk(std::string map_name, std::string file_name) override
Save a map to disk.
yarp::dev::ReturnValue getAreasList(std::vector< std::string > &locations) override
Get a list of the names of all stored areas.
yarp::dev::ReturnValue get_map(std::string map_name, yarp::dev::Nav2D::MapGrid2D &map) override
Gets a map from the map server.
yarp::dev::ReturnValue loadLocationsAndExtras(std::string locations_collection_file) override
Load a collection of locations/areas/paths etc from disk.
yarp::dev::ReturnValue clearAllLocations() override
Delete all stored locations.
yarp::dev::ReturnValue store_map(const yarp::dev::Nav2D::MapGrid2D &map) override
Stores a map into the map server.
yarp::dev::ReturnValue get_map_names(std::vector< std::string > &map_names) override
Gets a list containing the names of all registered maps.
IMap2DMsgs m_map_RPC
yarp::dev::ReturnValue deletePath(std::string path_name) override
Delete a path.
yarp::dev::ReturnValue getPath(std::string path_name, yarp::dev::Nav2D::Map2DPath &path) override
Retrieves a path.
yarp::dev::ReturnValue getLocationsList(std::vector< std::string > &locations) override
Get a list of the names of all stored locations.
yarp::dev::ReturnValue getAllAreas(std::vector< yarp::dev::Nav2D::Map2DArea > &areas) override
Get a list of all stored areas.
yarp::dev::ReturnValue storeArea(std::string area_name, yarp::dev::Nav2D::Map2DArea area) override
Store an area.
yarp::dev::ReturnValue renamePath(std::string original_name, std::string new_name) override
Searches for a path and renames it.
yarp::dev::ReturnValue getArea(std::string location_name, yarp::dev::Nav2D::Map2DArea &area) override
Retrieves an area.
std::mutex m_mutex
bool close() override
Close the DeviceDriver.
yarp::dev::ReturnValue storeLocation(std::string location_name, yarp::dev::Nav2D::Map2DLocation loc) override
Store a location specified by the user in the world reference frame.
yarp::dev::ReturnValue enableMapsCompression(bool enable) override
Enable/disables maps compression over the network.
yarp::dev::ReturnValue deleteArea(std::string location_name) override
Delete an area.
A mini-server for performing network communication in the background.
bool open(const std::string &name) override
Start port operation, with a specific name, with automatically-chosen network parameters.
Definition Port.cpp:79
A base class for nested structures that can be searched.
Definition Searchable.h:31
yarp::os::WireLink & yarp()
Get YARP state associated with this object.
Definition Wire.h:28
#define yCError(component,...)
#define YARP_LOG_COMPONENT(name,...)
For streams capable of holding different kinds of content, check what they actually have.
An interface to the operating system, including Port based communication.