从头手搓一台ros2复合机器人(带机械臂)

本文详细介绍了如何在ROS2环境下学习和使用Nav2导航系统,包括下载安装、依赖管理、FishBot配置、自主导航以及利用Nav2导航API进行路径规划。

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

一.前言   

        本节开始我们就来学习一下关于导航的内容。

二.ros2学习

         前19小节内容可订阅往期博客

20.Nav2

20.1 Nav2下载安装

这里采用源码安装

这里我把源码放到了~/urdf/src

安装依赖

编译

这里有一个命令--packages-up-to,意思是其所有依赖后再编译该包。具体来说,它告诉 colcon 构建系统在构建指定的软件包及其依赖项时,只构建到哪个软件包为止。

测试是否安装成功

20.2 为FishBot配置Nav2

创建功能包

添加maps文件夹

将上一节的地图文件复制到map文件夹下。

添加Nav2配置文件

src/fishbot_navigation2/param/目录下创建fishbot_nav2.yaml

src/navigation2/nav2_bringup/params/nav2_params.yaml的内容复制粘贴到fishbot_nav2.yaml文件中。

配置参数

Nav2中文网配置指南 — Navigation 2 1.0.0 文档

配置机器人半径和碰撞半径

在全局代价地图和局部代价地图配置用,默认的机器人半径是0.22,而fishbot的半径是0.12,所以需要修改机器人的半径为0.12。

为了防止机器人发生碰撞,一般会给代价地图添加一个碰撞层(inflation_layer),在local_costmapglobal_costmap配置中,可以看到下面关于代价地图相关的配置:

默认0.55对fishbot来说可能有些大了,我们改小些。

配置frame_id和话题

  • 默认全局的坐标系:map
  • 默认里程计坐标系:odom
  • 默认雷达话题:scan
  • 默认机器人基坐标系:base_link
  • 默认地图话题:map

20.3 使用FishBot进行自主导航

1.编写launch文件

2.安装并添加依赖

修改CMakeLists.txt

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

添加依赖

编译运行

运行仿真

运行Nav2

启动后正常应该会在RVIZ2和终端看到一个错误,这是因为没有给定初始化位置(告诉机器人它在地图的大概位置)导致的。

通过RVIZ2的工具栏上的 2D Pose Estimate 可以给迷茫的fishbot指明“机生方向”。

image-20220519232134366

点击 2D Pose Estimate ,选中机器人在Gazebo位置差不多的点,初始化完后,左边的Global Status 就正常了。

单点导航

点击RVIZ2工具栏上的 就可以给fishbot安排一个目标点了,点击按钮,到地图上任意一点击鼠标左键,注意不要松开,移动鼠标给定一个方向。

多点(路点)导航

左下角,有一个Nav2的Rviz2小插件,可以进行启动停止和导航模式的切换,点击切换到路点模式。

接着你可以使用工具栏的 按钮,给FishBot指定多个要移动的点,接着点击左下角的启动,就可以看到FishBot依次到达这些目标点。

查看机器人当前在地图中的位置

打开终端,输入指令:

ros2 run tf2_ros  tf2_echo map base_link

20.4 使用Nav2导航API进行导航

安装简单命令器:

创建一个nav2_new_features的新包

ros2 pkg create --build-type ament_python nav2_new_features --dependencies rclpy geometry_msgs

在这个包中添加scripts的文件夹并添加名为navigate_to_pose.py的脚本

也可通过命令行控制

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值