2026-07-23 16:12:23 +07:00
2026-07-23 16:12:23 +07:00
2026-07-23 16:12:23 +07:00
2026-07-21 14:24:31 +07:00
2026-07-23 10:11:13 +07:00
2026-07-21 14:53:10 +07:00
2026-07-21 14:53:10 +07:00
2026-07-21 14:53:10 +07:00

depth_local_costmap_noetic_test

Package ROS Noetic C++ tối thiểu để chạy local costmap only bằng stack T800:

  • /home/duongtd/T800_ws/src/AMR_T800/pnkx_nav_core/src/Libraries/costmap_2d
  • package catkin: robot_costmap_2d

Node test nhận dữ liệu ROS Noetic và convert sang message robot_* trước khi feed trực tiếp vào VoxelLayer bằng layer->dataCallBack(...).

Luồng dữ liệu chính:

  • /camera/depth/points_proc -> robot_sensor_msgs::PointCloud2 -> source pc_marking
  • /camera/depth/image_raw + /camera/depth/camera_info -> robot_sensor_msgs::DepthCameraData::ConstPtr -> source pc_clearing

/camera/depth/data không cần là ROS topic thật trong gói test này; nó là tên source logic để match với config robot_costmap_2d, giống contract trong sensor_converter.cpp.

Topic phụ được node subscribe để log kiểm tra dữ liệu:

  • /camera_right/depth/camera_info
  • /odom
  • /tf
  • /tf_static

Build

cd /home/duongtd/T800_ws
catkin_make --pkg depth_local_costmap_noetic_test
source devel/setup.bash

Chạy

roslaunch depth_local_costmap_noetic_test depth_local_costmap_test.launch

Launch mặc định mở RViz với config sẵn. Nếu chỉ muốn chạy node không mở GUI:

roslaunch depth_local_costmap_noetic_test depth_local_costmap_test.launch rviz:=false

Nếu robot dùng base_footprint:

roslaunch depth_local_costmap_noetic_test depth_local_costmap_test.launch base_frame:=base_footprint

Nếu hệ thống chỉ có /odom nhưng chưa publish TF odom -> base_link, bật bridge tạm:

roslaunch depth_local_costmap_noetic_test depth_local_costmap_test.launch publish_odom_tf:=true

Không bật publish_odom_tf nếu đã có node khác publish TF này.

Point cloud marking /camera/depth/points_proc được downsample bằng PCL VoxelGrid trước khi feed vào robot_costmap_2d, giống hướng trong amr_control/src/sensor_converter.cpp. Mặc định leaf size là 0.10 m:

roslaunch depth_local_costmap_noetic_test depth_local_costmap_test.launch depth_cloud_voxel_leaf_size:=0.10

Nếu muốn so sánh full cloud:

roslaunch depth_local_costmap_noetic_test depth_local_costmap_test.launch enable_depth_cloud_voxel_filter:=false

Kiểm tra runtime

rostopic echo -n1 /camera/depth/points_proc/header
rostopic echo -n1 /camera/depth/image_raw/header
rostopic echo -n1 /camera/depth/camera_info/header
rostopic echo -n1 /local_costmap/costmap/info
rostopic echo -n1 /local_costmap/costmap/footprint/header
rosrun tf tf_echo odom base_link
rostopic list | grep local_costmap

Frame của /camera/depth/points_proc/camera/depth/image_raw phải transform được về odom; nếu không, obstacle/voxel layer sẽ drop dữ liệu.

Log runtime cần thấy:

  • Fed depth cloud to robot_costmap_2d
  • Fed DepthCameraData to robot_costmap_2d
  • Published local costmap for RViz

Các topic RViz giống hướng amr_control::AmrPublisher:

  • /local_costmap/costmap kiểu nav_msgs/OccupancyGrid
  • /local_costmap/costmap/footprint kiểu geometry_msgs/PolygonStamped

Config local chính của package này dùng cùng kiểu tách file với pnkx_nav_core/config:

  • config/costmap_common_params.yaml
  • config/costmap_local_params_plugins_no_virtual_walls.yaml
  • config/costmap_local_params.yaml

Khi test trên NUC, export:

export PNKX_NAV_CORE_CONFIG_DIR=/home/robotics/DuongTD/dev_ws/src/test/depth_local_costmap_noetic_test/config

robot_cpp::NodeHandle sẽ auto-load 3 file trên. Hiện robot_costmap_2d vẫn còn một số loader cũ dùng getSourceFile() và tự nối thêm /config, nên package cũng giữ các file shim tương thích trong:

/home/robotics/DuongTD/dev_ws/src/test/depth_local_costmap_noetic_test/config/config/*.yaml

Với robot_costmap_2d chưa patch resolver plugin path, library_path trong config được đặt thẳng tới NUC:

library_path: /home/robotics/DuongTD/dev_ws/devel/lib/libplugins.so
Description
No description provided
Readme 119 KiB
Languages
C++ 95.6%
CMake 4.4%