ROS2 Nav2导航栈的启动(利用自己实现的里程计和定位模块)
// The client used to control the nav2 stack
std::shared_ptr<nav2_lifecycle_manager::LifecycleManagerClient> client_nav_;
std::shared_ptr<nav2_lifecycle_manager::LifecycleManagerClient> client_loc_;
1、启动map_server节点:
ros2 run nav2_map_server map_server --ros-args --param yaml_filename:=/home/xi/rviz2/start_up/share/nav2_bringup/maps/cszj_map.yaml
ros2 lifecycle set /map_server activate
4、启动Nav2导航栈:
5、启动定位节点(自己基于NDT算法,ESKF定位):
./robot_localization_node ../config/robot_local_param.yaml
6、启动里程计节点(自己实现的里程计:轮速计+IMU+ESKF):
./robot_odometry_node ../config/odometry/robot_odometry_param.yaml
std::shared_ptr<nav2_lifecycle_manager::LifecycleManagerClient> client_nav_;
std::shared_ptr<nav2_lifecycle_manager::LifecycleManagerClient> client_loc_;
1、启动map_server节点:
ros2 run nav2_map_server map_server --ros-args --param yaml_filename:=/home/xi/rviz2/start_up/share/nav2_bringup/maps/cszj_map.yaml
2、激活map_server节点:
ros2 lifecycle set /map_server configureros2 lifecycle set /map_server activate
3、启动map静态坐标系转换:
因为点云地图是基于UTM坐标系的,其数值太大,RVIZ不能正确显示,因此通过一个静态坐标系转换节点,作一个坐标系偏移.
ros2 launch ./static_tf2_broadcaster.py4、启动Nav2导航栈:
去掉默认的定位: AMCL
ros2 launch nav2_bringup citi_robot_navigation_launch.py
5、启动定位节点(自己基于NDT算法,ESKF定位):
./robot_localization_node ../config/robot_local_param.yaml
注意: topic:/amcl_pose(好像必须为这个topic名字,Nav2才行,待确认!),
负责坐标系转换:全局定位(地图)与里程计坐标系, map<------odometry
6、启动里程计节点(自己实现的里程计:轮速计+IMU+ESKF):
./robot_odometry_node ../config/odometry/robot_odometry_param.yaml
评论已关闭