2D激光SLAM::ROS-AMCL包源码阅读(二)关于map地图的数据结构

本文深入探讨了ROS-AMCL包中map_t和map_cell_t数据结构的细节,包括地图原点、尺度、尺寸、栅格描述、占据状态及距离障碍物的参数,为理解机器人定位与地图构建提供了关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ROS-AMCL包源码阅读(二)关于map地图的数据结构


map.h的内容描述如下


 map_t:地图结构体

// Description for a map
typedef struct
{
  // Map origin; the map is a viewport onto a conceptual larger map.
  //地图的原点,这个原点指中心点,即地图坐标(width/2,height/2)对应的世界坐标
  double origin_x, origin_y;
  
  // Map scale (m/cell)
  //尺度
  double scale;

  // Map dimensions (number of cells)
  //尺寸
  int size_x, size_y;
  
  // The map data, stored as a grid
  //地图的栅格描述结构体
  map_cell_t *cells;

  // Max distance at which we care about obstacles, for constructing
  // likelihood field
  //传感器可以感知的最远距离?
  double max_occ_dist;
  
} map_t;

 map_cell_t:描述地图栅格的结构体

// Description for a single map cell.
typedef struct
{
  // Occupancy state (-1 = free, 0 = unknown, +1 = occ)
  //栅格占据状态
  int occ_state;

  // Distance to the nearest occupied cell
  //该栅格距离最近一个“障碍物”(或者说距离最近的处于"占用”状态的栅格)的距离
  double occ_dist;

  // Wifi levels
  //int wifi_levels[MAP_WIFI_MAX_LEVELS];

} map_cell_t;

 

 

EPRobot@EPRobot:~/robot_ws$ cd ~/robot_ws # 在每次打开新终端时运行 EPRobot@EPRobot:~/robot_ws$ catkin_make Base path: /home/EPRobot/robot_ws Source space: /home/EPRobot/robot_ws/src Build space: /home/EPRobot/robot_ws/build Devel space: /home/EPRobot/robot_ws/devel Install space: /home/EPRobot/robot_ws/install #### #### Running command: "make cmake_check_build_system" in "/home/EPRobot/robot_ws/build" #### -- Using CATKIN_DEVEL_PREFIX: /home/EPRobot/robot_ws/devel -- Using CMAKE_PREFIX_PATH: /home/EPRobot/robot_ws/devel;/opt/ros/melodic -- This workspace overlays: /home/EPRobot/robot_ws/devel;/opt/ros/melodic -- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.17", minimum required is "2") -- Using PYTHON_EXECUTABLE: /usr/bin/python2 -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/EPRobot/robot_ws/build/test_results -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python2 (found version "2.7.17") -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.7.29 -- BUILD_SHARED_LIBS is on -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing 62 packages in topological order: -- ~~ - astra_launch -- ~~ - base_control -- ~~ - hibot_follower -- ~~ - lslidar (metapackage) -- ~~ - navigation (metapackage) -- ~~ - robot_navigation -- ~~ - robot_upstart -- ~~ - simple_navigation_goals -- ~~ - lslidar_msgs -- ~~ - rospy_message_converter -- ~~ - eprobot_auto_home -- ~~ - eprobot_start -- ~~ - ls01d -- ~~ - map_server -- ~~ - hls_lfcd_lds_driver -- ~~ - iiiroboticslidar2 -- ~~ - astra_camera -- ~~ - rplidar_ros -- ~~ - eprobot_joy -- ~~ - lslidar_driver -- ~~ - robot_pose_ekf -- ~~ - sc_mini -- ~~ - amcl -- ~~ - fake_localization -- ~~ - laser_filters -- ~~ - robot_localization -- ~~ - track_detection -- ~~ - voxel_grid -- ~~ - costmap_2d -- ~~ - nav_core -- ~~ - base_local_planner -- ~~ - carrot_planner -- ~~ - clear_costmap_recovery -- ~~ - dwa_local_planner -- ~~ - move_slow_and_clear -- ~~ - navfn -- ~~ - global_planner -- ~~ - rotate_recovery -- ~~ - move_base -- ~~ - teb_local_planner -- ~~ - eprobot_description -- ~~ - xf_mic_asr_offline -- ~~ - ydlidar -- ~~ - yocs_ar_pair_approach -- ~~ - yocs_cmd_vel_mux -- ~~ - yocs_controllers -- ~~ - yocs_keyop -- ~~ - yocs_localization_manager -- ~~ - yocs_math_toolkit -- ~~ - yocs_ar_marker_tracking -- ~~ - yocs_diff_drive_pose_controller -- ~~ - yocs_ar_pair_tracking -- ~~ - yocs_joyop -- ~~ - yocs_navi_toolkit -- ~~ - yocs_navigator -- ~~ - yocs_rapps -- ~~ - yocs_safety_controller -- ~~ - yocs_velocity_smoother -- ~~ - yocs_virtual_sensor -- ~~ - yocs_waypoint_provider -- ~~ - yocs_waypoints_navi -- ~~ - yujin_ocs (metapackage) -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- +++ processing catkin package: 'astra_launch' -- ==> add_subdirectory(ros_astra_launch) -- +++ processing catkin package: 'base_control' -- ==> add_subdirectory(base_control) -- +++ processing catkin package: 'hibot_follower' -- ==> add_subdirectory(hibot_follower) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'system_lib' but neither 'system_lib_INCLUDE_DIRS' nor 'system_lib_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) hibot_follower/CMakeLists.txt:24 (catkin_package) -- +++ processing catkin metapackage: 'lslidar' -- ==> add_subdirectory(lslidar) -- +++ processing catkin metapackage: 'navigation' -- ==> add_subdirectory(navigation-melodic/navigation) -- +++ processing catkin package: 'robot_navigation' -- ==> add_subdirectory(robot_navigation) -- +++ processing catkin package: 'robot_upstart' -- ==> add_subdirectory(robot_upstart) -- +++ processing catkin package: 'simple_navigation_goals' -- ==> add_subdirectory(simple_navigation_goals) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'lslidar_msgs' -- ==> add_subdirectory(lslidar_msgs) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- lslidar_msgs: 5 messages, 0 services -- +++ processing catkin package: 'rospy_message_converter' -- ==> add_subdirectory(rospy_message_converter) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- rospy_message_converter: 4 messages, 1 services -- +++ processing catkin package: 'eprobot_auto_home' -- ==> add_subdirectory(eprobot_auto_home) -- +++ processing catkin package: 'eprobot_start' -- ==> add_subdirectory(eprobot_start) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'system_lib' but neither 'system_lib_INCLUDE_DIRS' nor 'system_lib_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) eprobot_start/CMakeLists.txt:24 (catkin_package) -- +++ processing catkin package: 'ls01d' -- ==> add_subdirectory(lidar/ls01d) -- +++ processing catkin package: 'map_server' -- ==> add_subdirectory(navigation-melodic/map_server) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- filesystem -- system -- +++ processing catkin package: 'hls_lfcd_lds_driver' -- ==> add_subdirectory(lidar/hls_lfcd_lds_driver) -- Boost version: 1.65.1 -- +++ processing catkin package: 'iiiroboticslidar2' -- ==> add_subdirectory(lidar/iiiroboticslidar2_ros) -- +++ processing catkin package: 'astra_camera' -- ==> add_subdirectory(ros_astra_camera) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- thread -- chrono -- date_time -- atomic -- ORRBEC Machine : aarch64 -- ORRBEC Machine Bits : 64 -- ORRBEC : arm64 -- libuvc 0.0.6 -- astra_camera: 0 messages, 19 services -- +++ processing catkin package: 'rplidar_ros' -- ==> add_subdirectory(lidar/rplidar_ros) -- +++ processing catkin package: 'eprobot_joy' -- ==> add_subdirectory(eprobot_joy) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'system_lib' but neither 'system_lib_INCLUDE_DIRS' nor 'system_lib_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) eprobot_joy/CMakeLists.txt:39 (catkin_package) -- +++ processing catkin package: 'lslidar_driver' -- ==> add_subdirectory(lslidar_driver) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'boost' but neither 'boost_INCLUDE_DIRS' nor 'boost_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) lslidar_driver/CMakeLists.txt:22 (catkin_package) -- +++ processing catkin package: 'robot_pose_ekf' -- ==> add_subdirectory(robot_pose_ekf) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- chrono -- system -- date_time -- atomic -- robot_pose_ekf: 0 messages, 1 services -- +++ processing catkin package: 'sc_mini' -- ==> add_subdirectory(lidar/sc_mini) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- +++ processing catkin package: 'amcl' -- ==> add_subdirectory(navigation-melodic/amcl) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- +++ processing catkin package: 'fake_localization' -- ==> add_subdirectory(navigation-melodic/fake_localization) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- +++ processing catkin package: 'laser_filters' -- ==> add_subdirectory(laser_filters) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- +++ processing catkin package: 'robot_localization' -- ==> add_subdirectory(robot_localization) robot_localization: You did not request a specific build type: selecting 'RelWithDebInfo'. -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- robot_localization: 0 messages, 7 services -- +++ processing catkin package: 'track_detection' -- ==> add_subdirectory(track_detection) -- +++ processing catkin package: 'voxel_grid' -- ==> add_subdirectory(navigation-melodic/voxel_grid) -- +++ processing catkin package: 'costmap_2d' -- ==> add_subdirectory(navigation-melodic/costmap_2d) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- thread -- chrono -- date_time -- atomic -- costmap_2d: 1 messages, 0 services -- +++ processing catkin package: 'nav_core' -- ==> add_subdirectory(navigation-melodic/nav_core) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'base_local_planner' -- ==> add_subdirectory(navigation-melodic/base_local_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- chrono -- system -- date_time -- atomic -- base_local_planner: 1 messages, 0 services -- +++ processing catkin package: 'carrot_planner' -- ==> add_subdirectory(navigation-melodic/carrot_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'clear_costmap_recovery' -- ==> add_subdirectory(navigation-melodic/clear_costmap_recovery) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'dwa_local_planner' -- ==> add_subdirectory(navigation-melodic/dwa_local_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'move_slow_and_clear' -- ==> add_subdirectory(navigation-melodic/move_slow_and_clear) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- chrono -- system -- date_time -- atomic -- +++ processing catkin package: 'navfn' -- ==> add_subdirectory(navigation-melodic/navfn) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- navfn: 0 messages, 2 services -- NAVFN_HAVE_FLTK: , NETPBM: 1 -- FLTK orf NETPBM not found: cannot build navtest -- +++ processing catkin package: 'global_planner' -- ==> add_subdirectory(navigation-melodic/global_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'rotate_recovery' -- ==> add_subdirectory(navigation-melodic/rotate_recovery) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'move_base' -- ==> add_subdirectory(navigation-melodic/move_base) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'teb_local_planner' -- ==> add_subdirectory(teb_local_planner-melodic) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- System: Linux-5.3.0-1030-raspi2 -- /opt/ros/melodic/share/cmake_modules/cmake/../../../share/cmake_modules/cmake/Modules;/home/EPRobot/robot_ws/src/teb_local_planner-melodic/cmake_modules -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- thread -- graph -- chrono -- date_time -- atomic -- Found SuiteSparse -- Searching for g2o ... -- Found g2o headers in: /opt/ros/melodic/include/g2o -- Found libg2o: /opt/ros/melodic/lib/libg2o_csparse_extension.so;/opt/ros/melodic/lib/libg2o_core.so;/opt/ros/melodic/lib/libg2o_stuff.so;/opt/ros/melodic/lib/libg2o_types_slam2d.so;/opt/ros/melodic/lib/libg2o_types_slam3d.so;/opt/ros/melodic/lib/libg2o_solver_cholmod.so;/opt/ros/melodic/lib/libg2o_solver_pcg.so;/opt/ros/melodic/lib/libg2o_solver_csparse.so;/opt/ros/melodic/lib/libg2o_incremental.so -- teb_local_planner: 3 messages, 0 services -- +++ processing catkin package: 'eprobot_description' -- ==> add_subdirectory(eprobot_description) -- +++ processing catkin package: 'xf_mic_asr_offline' -- ==> add_subdirectory(xf_mic_asr_offline) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- xf_mic_asr_offline: 2 messages, 7 services -- +++ processing catkin package: 'ydlidar' -- ==> add_subdirectory(ydlidar) -- +++ processing catkin package: 'yocs_ar_pair_approach' -- ==> add_subdirectory(yujin_ocs/yocs_ar_pair_approach) -- +++ processing catkin package: 'yocs_cmd_vel_mux' -- ==> add_subdirectory(yujin_ocs/yocs_cmd_vel_mux) -- +++ processing catkin package: 'yocs_controllers' -- ==> add_subdirectory(yujin_ocs/yocs_controllers) -- +++ processing catkin package: 'yocs_keyop' -- ==> add_subdirectory(yujin_ocs/yocs_keyop) -- Could NOT find ecl_threads (missing: ecl_threads_DIR) -- Could not find the required component 'ecl_threads'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found. CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package): Could not find a package configuration file provided by "ecl_threads" with any of the following names: ecl_threadsConfig.cmake ecl_threads-config.cmake Add the installation prefix of "ecl_threads" to CMAKE_PREFIX_PATH or set "ecl_threads_DIR" to a directory containing one of the above files. If "ecl_threads" provides a separate development package or SDK, be sure it has been installed. Call Stack (most recent call first): yujin_ocs/yocs_keyop/CMakeLists.txt:3 (find_package) -- Configuring incomplete, errors occurred! See also "/home/EPRobot/robot_ws/build/CMakeFiles/CMakeOutput.log". See also "/home/EPRobot/robot_ws/build/CMakeFiles/CMakeError.log". Makefile:9560: recipe for target 'cmake_check_build_system' failed make: *** [cmake_check_build_system] Error 1 Invoking "make cmake_check_build_system" failed EPRobot@EPRobot:~/robot_ws$ source devel/setup.bash # 在每次打开新终端时运行
07-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值