ROS2学习笔记汇总目录-CSDN博客

一、使用FishBot进行自主导航

1.1 编写launch文件

        将地图、配置文件传递给nav2为提供好的launch文件中即可。

cd robot/robot_ws/src/fishbot_navigation2/
touch launch/navigation2.launch.py
nano launch/navigation2.launch.py
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node


def generate_launch_description():
    #=============================1.定位到包的地址=============================================================
    fishbot_navigation2_dir = get_package_share_directory('fishbot_navigation2')
    nav2_bringup_dir = get_package_share_directory('nav2_bringup')
    
    
    #=============================2.声明参数,获取配置文件路径===================================================
    # use_sim_time 这里要设置成true,因为gazebo是仿真环境,其时间是通过/clock话题获取,而不是系统时间
    use_sim_time = LaunchConfiguration('use_sim_time', default='true') 
    map_yaml_path = LaunchConfiguration('map',default=os.path.join(fishbot_navigation2_dir,'maps','fishbot_map.yaml'))
    nav2_param_path = LaunchConfiguration('params_file',default=os.path.join(fishbot_navigation2_dir,'param','fishbot_nav2.yaml'))
    rviz_config_dir = os.path.join(nav2_bringup_dir,'rviz','nav2_default_view.rviz')

    #=============================3.声明启动launch文件,传入:地图路径、是否使用仿真时间以及nav2参数文件==============
    nav2_bringup_launch = IncludeLaunchDescription(
            PythonLaunchDescriptionSource([nav2_bringup_dir,'/launch','/bringup_launch.py']),
            launch_arguments={
                'map': map_yaml_path,
                'use_sim_time': use_sim_time,
                'params_file': nav2_param_path}.items(),
        )
    rviz_node =  Node(
            package='rviz2',
            executable='rviz2',
            name='rviz2',
            arguments=['-d', rviz_config_dir],
            parameters=[{'use_sim_time': use_sim_time}],
            output='screen')
    
    return LaunchDescription([nav2_bringup_launch,rviz_node])

1.2 安装并添加依赖

(1)修改CMakeLists.txt

nano CMakeLists.txt

        添加install指令,将文件拷贝到install目录。

cmake_minimum_required(VERSION 3.5)
project(fishbot_navigation2)

# find dependencies
find_package(ament_cmake REQUIRED)
install(
  DIRECTORY launch param maps
  DESTINATION share/${PROJECT_NAME}
)

ament_package()

(2)添加依赖

nano package.xml

        主要是添加这行 <exec_depend>nav2_bringup</exec_depend>       

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>fishbot_navigation2</name>
  <version>0.0.0</version>
  <description>TODO: Package description</description>
  <maintainer email="sangxin2014@sina.com">root</maintainer>
  <license>TODO: License declaration</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>
  <exec_depend>nav2_bringup</exec_depend>
  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>

 1.3 编译和测试

(1)编译

        在工作空间robot_ws/下打开终端:

cd ../..

colcon build --packages-up-to  fishbot_navigation2

(2)测试

        运行gazebo仿真:

source install/setup.bash
ros2 launch fishbot_description gazebo.launch.py

        运行Nav2:

source install/setup.bash
ros2 launch fishbot_navigation2 navigation2.launch.py

        设立起始点,选择上面工具栏中的“2D Pose Estimate”, 在地图中选择初始点位置及方向:

        得到导航地图:

        选择上面工具栏中的“Nav2 Goal”, 在地图中选择目标点位置及方向,将生成导航路径,机器人沿路径移动到目标点:

        点击左下角的 “Waypoint / Nav Through Poses Mode”,再使用“Nav2 Goal”可以设置路点导航,途径多个目标点(图中绿色箭头):

        点击左下角的“Start Nav Through Poses”,可以开始导航:

学习:【ROS2机器人入门到实战】为FishBot配置Nav2_fishbot nav2-CSDN博客

二、使用Nav2导航API进行导航

Nav2的API其实是Nav2提供的一个Python库,通过该库你可以事先调用你的机器人进行简单的控制(比如导航到点)。

学习:【ROS2机器人入门到实战】使用Nav2导航API进行导航_foxy nav2 怎么设置起点和终点-CSDN博客

这部分是使用ROS2(foxy)版本的,所以可以跳过。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐