Change location of global costmap relative to map frame / cartographer mark prohibited area
Hi there
I am trying to implement outdoor navigation. When i do so i come to a point where the maps from Google Cartographer do not separate street and meadow good enough. Due to the fact that i want to stay on the street i came up with the idea of editing the map. I do not found a way to edit the .pbstream which is normally the Input for my navigation. To be able to edit a map i run the assets writer, which resulted in a nice map.pgm picture and a map.yaml file. This enables me to edit the map.pgm with normal tools like ImageMagick. Therefore i can draw meadow and other obstacles in this map.
My plan is it still to localize with Cartographer and send the location info over tf to the move_base node. The global_costmap should then initialize on the edited map published with map_server. With enabling the option clearing = false the painted area should stay restricted. to reach that only the /map topic from the map_server gets published is simply commented out cartographer_occupancy_grid_node. This works fine.
The problem is neither the overlapping from the published maps (submaps (black/white right bottom) represents cartographer map, /map (purple right bottom with transparency edited lines) represents the edited map from the map_server) as apparent under visualization of all maps. I simply solved this with changing
origin: [5.51, 8.09, 3.14159] in the map.yaml file...
The problem indeed is, that the global_costmap (purple/turquoise left top) does not adopt its origin an gets published at the [0.0, 0.0, 0.0 ] location. Is there a way to force the global_costmap also to get published at a distinct location (same as the map_server map in the /map frame)? Or do you got any other suggestions to mark the prohibited area with google cartographer?
Thanks in advance
map.yaml
image: /home/ba_slam/bagfiles/keller/keller_edit.pgm
resolution: 0.050000
origin: [5.51, 8.09, 3.14159]
#origin: [0.0, 0.0, 0.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
autonomous_navigation_rp.launch
<launch>
<param name="/use_sim_time" value="true"/>
<!-- Run the map server -->
<arg name="map_file" default="/home/ba_slam/bagfiles/keller/keller.bag_map.yaml"/>
<node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)" />
<!-- <remap from="map" to="map_server_map"/> -->
<!-- RPlidar starten #################################################################### -->
<node name="rplidarNode" pkg="rplidar_ros" type="rplidarNode" output="screen">
<param name="serial_port" type="string" value="/dev/ttyUSB1"/>
<param name="serial_baudrate" type="int" value="115200"/>
<param name="frame_id" type="string" value="rp_link"/>
<param name="inverted" type="bool" value="false"/>
<param name="angle_compensate" type="bool" value="true"/>
</node>
<!-- RVIZ starten #################################################################### -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find rplidar_ros)/rviz/rplidar.rviz" />
<!-- eigene tf_broadcaster/listener einbinden##############################################
<node name="tf_broadcaster_base" pkg="robot_setup_tf" type="tf_broadcaster_base" />
-->
<!-- Turtlebot bringup ################################################################## -->
<include file = "$(find turtlebot_bringup)/launch/minimal.launch"/>
<!---Cartographer ###################### -->
<param ...
I've upvoted your question so that you have enough karma to add your image directly to the question.