นี่คือไลบรารี C++ ที่มีอินเทอร์เฟซ ROS เพื่อจัดการแผนที่กริดสองมิติด้วยชั้นข้อมูลหลายชั้น ได้รับการออกแบบมาสำหรับการทำแผนที่หุ่นยนต์เคลื่อนที่เพื่อจัดเก็บข้อมูล เช่น ระดับความสูง ความแปรปรวน สี ค่าสัมประสิทธิ์การเสียดสี คุณภาพการตั้งหลัก พื้นผิวปกติ ความสามารถในการเคลื่อนที่ ฯลฯ ใช้ในแพ็คเกจ Robot-Centric Elevation Mapping ที่ออกแบบมาสำหรับการนำทางในภูมิประเทศที่ขรุขระ
คุณสมบัติ:
นี่คือรหัสการวิจัย คาดว่าจะมีการเปลี่ยนแปลงบ่อยครั้ง และไม่รับผิดชอบต่อความเหมาะสมใดๆ สำหรับวัตถุประสงค์เฉพาะ
ซอร์สโค้ดเผยแพร่ภายใต้ลิขสิทธิ์ BSD 3-Clause
ผู้เขียน : ปีเตอร์ ฟันเฮาเซอร์
สังกัด: ANYbotics
ผู้ดูแล: Maximilian Wulf, [email protected], Magnus Gärtner, [email protected]
ร่วมสนับสนุนโดย: Simone Arreghini, Tanja Baumann, Jeff Delmerico, Remo Diethelm, Perry Franklin, Magnus Gärtner, Ruben Grandia, Edo Jelavic, Dominic Jud, Ralph Kaestner, Philipp Krüsi, Alex Millane, Daniel Stonier, Elena Stumm, Martin Wermelinger, Christos ซาลิดิส
การคาดการณ์นี้ได้รับการพัฒนาครั้งแรกที่ ETH Zurich (Autonomous Systems Lab & Robotic Systems Lab)
งานนี้ดำเนินการโดยเป็นส่วนหนึ่งของ ANYmal Research ซึ่งเป็นชุมชนเพื่อพัฒนาหุ่นยนต์แบบมีขา
หากคุณใช้งานนี้ในบริบททางวิชาการ โปรดอ้างอิงสิ่งตีพิมพ์ต่อไปนี้:
P. Fankhauser และ M. Hutter, "A Universal Grid Map Library: Implementation and Use Case for Rough Terrain Navigation" ใน Robot Operating System (ROS) – The Complete Reference (Volume 1), A. Koubaa (Ed.), Springer , 2559. (PDF)
@incollection{Fankhauser2016GridMapLibrary,
author = {Fankhauser, P{'{e}}ter and Hutter, Marco},
booktitle = {Robot Operating System (ROS) – The Complete Reference (Volume 1)},
title = {{A Universal Grid Map Library: Implementation and Use Case for Rough Terrain Navigation}},
chapter = {5},
editor = {Koubaa, Anis},
publisher = {Springer},
year = {2016},
isbn = {978-3-319-26052-5},
doi = {10.1007/978-3-319-26054-9{_}5},
url = {http://www.springer.com/de/book/9783319260525}
}
ปัจจุบันสาขาเหล่านี้ได้รับการบำรุงรักษา:
คำขอดึงสำหรับ ROS 1 ควรกำหนดเป้าหมายไป master
คำขอดึงสำหรับ ROS 2 ควรกำหนดเป้าหมายไปที่ rolling
และจะถูกส่งกลับหากไม่ทำลาย ABI
บทแนะนำเกี่ยวกับไลบรารีแผนที่กริดรวมถึงบทช่วยสอนมีให้ในหนังสือเล่มนี้
C++ API ได้รับการบันทึกไว้ที่นี่:
เพื่อติดตั้งแพ็คเกจทั้งหมดจากไลบรารีแผนที่กริดตามที่แพ็คเกจ Debian ใช้
sudo apt-get install ros-$ROS_DISTRO-grid-map
แพ็คเกจ grid_map_core ขึ้นอยู่กับไลบรารีพีชคณิตเชิงเส้น Eigen เท่านั้น
sudo apt-get install libeigen3-dev
แพ็คเกจอื่นๆ ขึ้นอยู่กับการติดตั้งมาตรฐาน ROS เพิ่มเติม ( roscpp , tf , filter , sensor_msgs , nav_msgs และ cv_bridge ) แพ็คเกจการแปลงเฉพาะรูปแบบอื่นๆ (เช่น grid_map_cv , grid_map_pcl ฯลฯ) ขึ้นอยู่กับแพ็คเกจที่อธิบายไว้ด้านล่างใน ภาพรวมแพ็คเกจ
หากต้องการสร้างจากแหล่งที่มา ให้โคลนเวอร์ชันล่าสุดจากที่เก็บนี้ลงในพื้นที่ทำงาน catkin ของคุณและคอมไพล์แพ็คเกจโดยใช้
cd catkin_ws/src
git clone https://github.com/anybotics/grid_map.git
cd ../
catkin_make
เพื่อเพิ่มประสิทธิภาพสูงสุด ตรวจสอบให้แน่ใจว่าได้สร้างในโหมด Release คุณสามารถระบุประเภทบิลด์ได้โดยการตั้งค่า
catkin_make -DCMAKE_BUILD_TYPE=Release
ที่เก็บนี้ประกอบด้วยแพ็คเกจต่อไปนี้:
GridMap
และคลาสตัวช่วยหลายคลาส เช่น ตัววนซ้ำ แพ็คเกจนี้ถูกนำไปใช้โดยไม่ต้องพึ่งพา ROSแพ็คเกจการแปลงเพิ่มเติม:
รันการทดสอบหน่วยด้วย
catkin_make run_tests_grid_map_core run_tests_grid_map_ros
หรือ
catkin build grid_map --no-deps --verbose --catkin-make-args run_tests
หากคุณใช้เครื่องมือ catkin
แพ็คเกจ grid_map_demos มีโหนดสาธิตหลายโหนด ใช้โค้ดนี้เพื่อตรวจสอบการติดตั้งแพ็คเกจแผนที่กริด และเพื่อเริ่มต้นใช้งานไลบรารีของคุณเอง
simple_demo สาธิตตัวอย่างง่ายๆ สำหรับการใช้ไลบรารีแผนที่กริด โหนด ROS นี้สร้างแผนที่กริด เพิ่มข้อมูล และเผยแพร่ หากต้องการดูผลลัพธ์ใน RViz ให้ดำเนินการคำสั่ง
roslaunch grid_map_demos simple_demo.launch
Tutorial_demo เป็นการสาธิตเพิ่มเติมเกี่ยวกับฟังก์ชันการทำงานของไลบรารี เปิดตัว Tutorial_demo ด้วย
roslaunch grid_map_demos tutorial_demo.launch
iterators_demo นำเสนอการใช้งานตัววนซ้ำแผนที่กริด เปิดตัวด้วย
roslaunch grid_map_demos iterators_demo.launch
image_to_gridmap_demo สาธิตวิธีการแปลงข้อมูลจากรูปภาพเป็นแผนที่กริด เริ่มการสาธิตด้วย
roslaunch grid_map_demos image_to_gridmap_demo.launch
grid_map_to_image_demo สาธิตวิธีการบันทึกเลเยอร์แผนที่กริดลงในรูปภาพ เริ่มการสาธิตด้วย
rosrun grid_map_demos grid_map_to_image_demo _grid_map_topic:=/grid_map _file:=/home/$USER/Desktop/grid_map_image.png
opencv_demo สาธิตการปรับแต่งแผนที่ด้วยความช่วยเหลือของฟังก์ชัน OpenCV เริ่มการสาธิตด้วย
roslaunch grid_map_demos opencv_demo.launch
Resolution_change_demo แสดงให้เห็นว่าความละเอียดของแผนที่กริดสามารถเปลี่ยนแปลงได้อย่างไรโดยใช้วิธีการปรับขนาดภาพ OpenCV เห็นผลใช้.
roslaunch grid_map_demos resolution_change_demo.launch
filter_demo ใช้สายโซ่ของตัวกรอง ROS เพื่อประมวลผลแผนที่กริด เริ่มต้นจากระดับความสูงของแผนที่ภูมิประเทศ การสาธิตใช้ตัวกรองหลายตัวเพื่อแสดงวิธีคำนวณพื้นผิวปกติ ใช้การลงสีเพื่อเติมรู ปรับให้เรียบ/เบลอแผนที่ และใช้นิพจน์ทางคณิตศาสตร์เพื่อตรวจจับขอบ คำนวณความขรุขระและความสามารถในการเคลื่อนที่ การตั้งค่าสายโซ่ตัวกรองได้รับการกำหนดค่าในไฟล์ filters_demo_filter_chain.yaml
เปิดตัวการสาธิตด้วย
roslaunch grid_map_demos filters_demo.launch
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวกรองแผนที่กริด โปรดดู grid_map_filters
interpolation_demo แสดงผลลัพธ์ของวิธีการประมาณค่าที่แตกต่างกันบนพื้นผิวผลลัพธ์ เริ่มต้นการสาธิตการใช้งาน
roslaunch grid_map_demos interpolation_demo.launch
ผู้ใช้สามารถเล่นกับโลกที่แตกต่างกัน (พื้นผิว) และการตั้งค่าการแก้ไขที่แตกต่างกันในไฟล์ interpolation_demo.yaml
การแสดงภาพจะแสดงความจริงภาคพื้นดินเป็นสีเขียวและสีเหลือง ผลการแก้ไขจะแสดงเป็นสีแดงและสีม่วง นอกจากนี้ การสาธิตยังคำนวณข้อผิดพลาดในการแก้ไขสูงสุดและโดยเฉลี่ย รวมถึงเวลาเฉลี่ยที่จำเป็นสำหรับแบบสอบถามการแก้ไขเดียว
แผนที่กริดมีวิธีการแก้ไขที่แตกต่างกันสี่วิธี (เพื่อเพิ่มความแม่นยำและเพิ่มความซับซ้อน):
สำหรับรายละเอียดเพิ่มเติม โปรดตรวจสอบเอกสารที่ระบุไว้ในไฟล์ CubicInterpolation.hpp
ไลบรารีแผนที่กริดประกอบด้วยตัววนซ้ำต่างๆ เพื่อความสะดวก
แผนที่กริด | แผนที่ย่อย | วงกลม | เส้น | รูปหลายเหลี่ยม |
---|---|---|---|---|
วงรี | เกลียว | |||
การใช้ตัววนซ้ำใน for
loop เป็นเรื่องปกติ ตัวอย่างเช่น วนซ้ำบนแผนที่กริดทั้งหมดด้วย GridMapIterator
for (grid_map::GridMapIterator iterator(map); !iterator.isPastEnd(); ++iterator) {
cout << "The value at index " << (*iterator).transpose() << " is " << map.at("layer", *iterator) << endl;
}
ตัววนซ้ำแผนที่กริดอื่นๆ เป็นไปตามแบบฟอร์มเดียวกัน คุณสามารถดูตัวอย่างเพิ่มเติมเกี่ยวกับวิธีใช้ตัววนซ้ำต่างๆ ได้ในโหนด iterators_demo
หมายเหตุ: เพื่อประสิทธิภาพสูงสุดเมื่อใช้ตัววนซ้ำ ขอแนะนำให้จัดเก็บการเข้าถึงโดยตรงไปยังชั้นข้อมูลของแผนที่กริดด้วย grid_map::Matrix& data = map["layer"]
นอกลูป for
:
grid_map::Matrix& data = map["layer"];
for (GridMapIterator iterator(map); !iterator.isPastEnd(); ++iterator) {
const Index index(*iterator);
cout << "The value at index " << index.transpose() << " is " << data(index(0), index(1)) << endl;
}
คุณสามารถค้นหาการเปรียบเทียบประสิทธิภาพของตัววนซ้ำได้ในโหนด iterator_benchmark
ของแพ็คเกจ grid_map_demos
ซึ่งสามารถรันด้วย
rosrun grid_map_demos iterator_benchmark
โปรดทราบว่าแม้ว่าตัววนซ้ำจะสะดวก แต่มักจะเป็นวิธีที่สะอาดและมีประสิทธิภาพมากที่สุดในการใช้วิธีการ Eigen ในตัว นี่คือตัวอย่างบางส่วน:
การตั้งค่าคงที่ให้กับเซลล์ทั้งหมดของเลเยอร์:
map["layer"].setConstant(3.0);
เพิ่มสองชั้น:
map["sum"] = map["layer_1"] + map["layer_2"];
ปรับขนาดเลเยอร์:
map["layer"] = 2.0 * map["layer"];
สูงสุด ค่าระหว่างสองชั้น:
map["max"] = map["layer_1"].cwiseMax(map["layer_2"]);
คำนวณข้อผิดพลาดรูทค่าเฉลี่ยกำลังสอง:
map.add("error", (map.get("layer_1") - map.get("layer_2")).cwiseAbs());
unsigned int nCells = map.getSize().prod();
double rootMeanSquaredError = sqrt((map["error"].array().pow(2).sum()) / nCells);
มีสองวิธีในการเปลี่ยนตำแหน่งของแผนที่:
setPosition(...)
: เปลี่ยนตำแหน่งของแผนที่โดยไม่เปลี่ยนข้อมูลที่จัดเก็บไว้ในแผนที่ สิ่งนี้จะเปลี่ยนความสัมพันธ์ระหว่างข้อมูลและกรอบแผนที่
move(...)
: ย้ายตำแหน่งที่บันทึกโดยแผนที่กริด wrt ไปยังกรอบแผนที่กริดแบบคงที่ ใช้ตัวเลือกนี้เพื่อย้ายขอบเขตแผนที่กริดโดยไม่ต้องย้ายข้อมูลแผนที่กริด ดูแลการจัดการข้อมูลทั้งหมด เช่น ข้อมูลแผนที่กริดจะอยู่นิ่งในกรอบแผนที่กริด
หมายเหตุ : เนื่องจากโครงสร้างบัฟเฟอร์แบบวงกลม ดัชนีใกล้เคียงอาจไม่ชิดในกรอบแผนที่ สมมติฐานนี้ใช้สำหรับดัชนีที่ได้รับจาก getUnwrappedIndex() เท่านั้น
setPosition(...) | move(...) |
---|---|
ปลั๊กอิน RViz นี้แสดงภาพเลเยอร์แผนที่กริดเป็นพล็อตพื้นผิว 3 มิติ (แผนที่ความสูง) สามารถเลือกเลเยอร์ที่แยกจากกันเป็นเลเยอร์สำหรับข้อมูลสีได้
แพ็คเกจนี้มอบอัลกอริธึมที่มีประสิทธิภาพในการแปลงแผนที่ระดับความสูงเป็นฟิลด์ระยะทางที่มีลายเซ็นสามมิติหนาแน่น แต่ละจุดในตาราง 3 มิติจะมีระยะทางไปยังจุดที่ใกล้ที่สุดในแผนที่พร้อมกับการไล่ระดับสี
โหนดนี้สมัครรับหัวข้อประเภท grid_map_msgs/GridMap และเผยแพร่ข้อความที่สามารถมองเห็นได้ใน RViz หัวข้อที่เผยแพร่ของ Visualizer สามารถกำหนดค่าได้อย่างสมบูรณ์ด้วยไฟล์พารามิเตอร์ YAML คุณสามารถเพิ่มการแสดงภาพข้อมูลด้วยพารามิเตอร์ที่แตกต่างกันจำนวนเท่าใดก็ได้ ตัวอย่างอยู่ที่นี่สำหรับไฟล์การกำหนดค่าของ Tutorial_demo
เมฆจุด | เวกเตอร์ | ตารางการเข้าพัก | กริดเซลล์ |
---|---|---|---|
grid_map_topic
(สตริง ค่าเริ่มต้น: "/grid_map")
ชื่อของหัวข้อแผนที่กริดที่ต้องการแสดงเป็นภาพ ดูคำอธิบายของวิชวลไลเซอร์ด้านล่าง
/grid_map
(grid_map_msgs/GridMap)
แผนที่กริดเพื่อให้เห็นภาพ
หัวข้อที่เผยแพร่ได้รับการกำหนดค่าด้วยไฟล์พารามิเตอร์ YAML หัวข้อที่เป็นไปได้คือ:
point_cloud
(sensor_msgs/PointCloud2)
แสดงแผนที่กริดเป็นจุดคลาวด์ เลือกเลเยอร์ที่จะแปลงเป็นจุดด้วยพารามิเตอร์ layer
name: elevation
type: point_cloud
params:
layer: elevation
flat: false # optional
flat_point_cloud
(sensor_msgs/PointCloud2)
แสดงแผนที่กริดเป็นจุดเมฆ "แบน" กล่าวคือ มีจุดทั้งหมดที่มีความสูงเท่ากัน z สะดวกในการแสดงแผนที่หรือรูปภาพ 2 มิติ (หรือแม้แต่สตรีมวิดีโอ) ใน RViz ด้วยความช่วยเหลือของ Color Transformer
height
ของพารามิเตอร์จะกำหนดตำแหน่ง z ที่ต้องการของคลาวด์จุดแบน
name: flat_grid
type: flat_point_cloud
params:
height: 0.0
หมายเหตุ: หากต้องการละเว้นจุดใน Flat Point Cloud จากเซลล์ว่าง/ไม่ถูกต้อง ให้ระบุเลเยอร์ที่ควรตรวจสอบความถูกต้องด้วย setBasicLayers(...)
vectors
(visualization_msgs/เครื่องหมาย)
แสดงข้อมูลเวกเตอร์ของแผนที่กริดเป็นเครื่องหมายแสดงภาพ ระบุเลเยอร์ที่เก็บส่วนประกอบ x -, y - และ z ของเวกเตอร์ด้วยพารามิเตอร์ layer_prefix
พารามิเตอร์ position_layer
กำหนดเลเยอร์ที่จะใช้เป็นจุดเริ่มต้นของเวกเตอร์
name: surface_normals
type: vectors
params:
layer_prefix: normal_
position_layer: elevation
scale: 0.06
line_width: 0.005
color: 15600153 # red
occupancy_grid
(nav_msgs/OccupancyGrid)
แสดงภาพเลเยอร์ของแผนที่กริดเป็นตารางการเข้าใช้ ระบุเลเยอร์ที่จะมองเห็นด้วยพารามิเตอร์ layer
และขอบเขตบนและล่างด้วย data_min
และ data_max
name: traversability_grid
type: occupancy_grid
params:
layer: traversability
data_min: -0.15
data_max: 0.15
grid_cells
(nav_msgs/GridCells)
แสดงภาพเลเยอร์ของแผนที่กริดเป็นเซลล์กริด ระบุเลเยอร์ที่จะมองเห็นด้วยพารามิเตอร์ layer
และขอบเขตบนและล่างด้วย lower_threshold
และ upper_threshold
name: elevation_cells
type: grid_cells
params:
layer: elevation
lower_threshold: -0.08 # optional, default: -inf
upper_threshold: 0.08 # optional, default: inf
region
(visualization_msgs/Marker)
แสดงขอบเขตของแผนที่กริด
name: map_region
type: map_region
params:
color: 3289650
line_width: 0.003
หมายเหตุ: ค่าสีจะอยู่ในรูปแบบ RGB เป็นจำนวนเต็มต่อกัน (สำหรับค่าแต่ละช่องสัญญาณ 0-255) สามารถสร้างค่าได้เช่นนี้เป็นตัวอย่างสำหรับสีเขียว (แดง: 0, สีเขียว: 255, สีน้ำเงิน: 0)
แพ็คเกจ grid_map_filters มีตัวกรองหลายตัวซึ่งสามารถใช้แผนที่กริดเพื่อทำการคำนวณข้อมูลในเลเยอร์ ตัวกรองแผนที่ตารางจะขึ้นอยู่กับตัวกรอง ROS ซึ่งหมายความว่าสามารถกำหนดค่ากลุ่มตัวกรองเป็นไฟล์ YAML ได้ นอกจากนี้ ตัวกรองเพิ่มเติมสามารถเขียนและทำให้พร้อมใช้งานผ่านกลไกปลั๊กอิน ROS เช่น InpaintFilter
จากแพ็คเกจ grid_map_cv
ตัวกรองพื้นฐานหลายตัวมีอยู่ในแพ็คเกจ grid_map_filters :
gridMapFilters/ThresholdFilter
ตั้งค่าในเลเยอร์เอาต์พุตเป็นค่าที่ระบุ หาก Condition_layer เกินขีดจำกัดบนหรือล่าง (ครั้งละหนึ่งขีดจำกัดเท่านั้น)
name: lower_threshold
type: gridMapFilters/ThresholdFilter
params:
condition_layer: layer_name
output_layer: layer_name
lower_threshold: 0.0 # alternative: upper_threshold
set_to: 0.0 # # Other uses: .nan, .inf
gridMapFilters/MeanInRadiusFilter
คำนวณค่าเฉลี่ยภายในรัศมีสำหรับแต่ละเซลล์ของเลเยอร์
name: mean_in_radius
type: gridMapFilters/MeanInRadiusFilter
params:
input_layer: input
output_layer: output
radius: 0.06 # in m.
gridMapFilters/MedianFillFilter
คำนวณสำหรับแต่ละเซลล์ NaN ของเลเยอร์ค่ามัธยฐาน (ของขอบเขต) ภายในแพตช์ที่มีรัศมี ทางเลือก ใช้การคำนวณค่ามัธยฐานสำหรับค่าที่มีจำกัดอยู่แล้ว รัศมีแพตช์สำหรับจุดเหล่านี้กำหนดโดย existing_value_radius โปรดทราบว่าการคำนวณการเติมจะดำเนินการเฉพาะในกรณีที่ fill_mask ถูกต้องสำหรับจุดนั้น
name: median
type: gridMapFilters/MedianFillFilter
params:
input_layer: input
output_layer: output
fill_hole_radius: 0.11 # in m.
filter_existing_values: false # Default is false. If enabled it also does a median computation for existing values.
existing_value_radius: 0.2 # in m. Note that this option only has an effect if filter_existing_values is set true.
fill_mask_layer: fill_mask # A layer that is used to compute which areas to fill. If not present in the input it is automatically computed.
debug: false # If enabled, the additional debug_infill_mask_layer is published.
debug_infill_mask_layer: infill_mask # Layer used to visualize the intermediate, sparse-outlier removed fill mask. Only published if debug is enabled.
gridMapFilters/NormalVectorsFilter
คำนวณเวกเตอร์ปกติของเลเยอร์ในแผนที่
name: surface_normals
type: gridMapFilters/NormalVectorsFilter
params:
input_layer: input
output_layers_prefix: normal_vectors_
radius: 0.05
normal_vector_positive_axis: z
gridMapFilters/NormalColorMapFilter
คำนวณเลเยอร์สีใหม่ตามเลเยอร์เวกเตอร์ปกติ
name: surface_normals
type: gridMapFilters/NormalColorMapFilter
params:
input_layers_prefix: normal_vectors_
output_layer: normal_color
gridMapFilters/MathExpressionFilter
แยกวิเคราะห์และประเมินนิพจน์เมทริกซ์ทางคณิตศาสตร์ด้วยเลเยอร์ของแผนที่กริด ดู EigenLab สำหรับเอกสารประกอบของนิพจน์
name: math_expression
type: gridMapFilters/MathExpressionFilter
params:
output_layer: output
expression: acos(normal_vectors_z) # Slope.
# expression: abs(elevation - elevation_smooth) # Surface roughness.
# expression: 0.5 * (1.0 - (slope / 0.6)) + 0.5 * (1.0 - (roughness / 0.1)) # Weighted and normalized sum.
gridMapFilters/SlidingWindowMathExpressionFilter
แยกวิเคราะห์และประเมินนิพจน์เมทริกซ์ทางคณิตศาสตร์ภายในหน้าต่างเลื่อนบนเลเยอร์ของแผนที่กริด ดู EigenLab สำหรับเอกสารประกอบของนิพจน์
name: math_expression
type: gridMapFilters/SlidingWindowMathExpressionFilter
params:
input_layer: input
output_layer: output
expression: meanOfFinites(input) # Box blur
# expression: sqrt(sumOfFinites(square(input - meanOfFinites(input))) ./ numberOfFinites(input)) # Standard deviation
# expression: 'sumOfFinites([0,-1,0;-1,5,-1;0,-1,0].*elevation_inpainted)' # Sharpen with kernel matrix
compute_empty_cells: true
edge_handling: crop # options: inside, crop, empty, mean
window_size: 5 # in number of cells (optional, default: 3), make sure to make this compatible with the kernel matrix
# window_length: 0.05 # instead of window_size, in m
gridMapFilters/DuplicationFilter
ทำซ้ำเลเยอร์ของแผนที่กริด
name: duplicate
type: gridMapFilters/DuplicationFilter
params:
input_layer: input
output_layer: output
gridMapFilters/DeletionFilter
ลบเลเยอร์ออกจากแผนที่กริด
name: delete
type: gridMapFilters/DeletionFilter
params:
layers: [color, score] # List of layers.
นอกจากนี้ แพ็คเกจ grid_map_cv ยังมีตัวกรองต่อไปนี้:
gridMapCv/InpaintFilter
ใช้ OpenCV เพื่อลงสี/เติมรูในเลเยอร์
name: inpaint
type: gridMapCv/InpaintFilter
params:
input_layer: input
output_layer: output
radius: 0.05 # in m
จลน์ศาสตร์ | ไพเราะ | โนติค | |
---|---|---|---|
grid_map | |||
หมอ |
จลน์ศาสตร์ | ไพเราะ | โนติค | |
---|---|---|---|
grid_map | |||
grid_map_core | |||
grid_map_costmap_2d | |||
grid_map_cv | |||
grid_map_demos | |||
grid_map_filters | |||
grid_map_loader | |||
grid_map_msgs | |||
grid_map_octomap | |||
grid_map_pcl | |||
grid_map_ros | |||
grid_map_rviz_plugin | |||
grid_map_sdf | |||
grid_map_visualization |
กรุณารายงานข้อบกพร่องและขอคุณสมบัติโดยใช้ตัวติดตามปัญหา