ROS机器人开发仿真

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

开发环境版本为: Ubuntu 20.04 以及 ros-kinetic

要求 1. 发送 cmd_vel 话题能够控制车子的前后左右移动 2. 利用 move_base 控制小车往一个目的地运动
3. 接收 move_base 的 action 回调,控制小车在两个点的来回

一、gmapping 功能包的使用

了解算法
Gmapping 是 一 个 基 于 2D 激 光 雷 达 使 用 RBPF(Rao-Blackwellized Particle Filters)算法完成二维栅格地图构 建的 SLAM 算法。 优点:gmapping 可以实时构建室内环境地图,在小场景中计 算量少,且地图精度较高,对激光雷达扫描频率要求较低。 缺点:随着环境的增大,构建地图所需的内存和计算量就会 变得巨大,所以 gmapping 不适合大场景构图。一个直观的 感受是,对于 200x200 米的范围,如果栅格分辨率是 5cm, 每个栅格占用一个字节内存,那么每个粒子携带的地图都要 16M 的内存,如果是 100 粒子就是 1.6G 内存。

更改参数
启动算法的 gmapping.launch 文件如下,这里需要根据各自 的情况,对下面文件中注释的部分进行更改,更改内容根据 自己的情况。 该启动的launch文件放在任意一个功能包的launch的文件夹 中都可以,也可以新建一个功能包,因为按照二进制方式安 装 gmapping 算法是没有这个文件的。
在这里插入图片描述
安装准备:
首先下载 ubuntu20.04 的镜像: 然后在虚拟机中安装好环境: https://www.cnblogs.com/ubuntuanzhuang/p/ubuntu2004anz huangjiaocheng.html
安装 ros: https://blog.csdn.net/r1141207831/article/details/106327172?
运行 roscore,从打印的信息找到版本信息。根据 ros 版本是 noetic,因此就安装 noetic 版本 的包:
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control sudo apt-get install ros-noetic-turtlebot-* sudo apt install ros-noetic-gmapping

二、实验一步骤

1.启动 Gazebo 并加载机器人、环境模型:

代码如下(示例):

export TURTLEBOT3_MODEL=burger

注:每次新打开这个终端,都需要运行一次上述命令

roslaunch turtlebot3_gazebo turtlebot3_world.launch

运行结果:在这里插入图片描述
在这里插入图片描述

2.新建终端并启动键盘遥控节点

代码如下(示例):

export TURTLEBOT3_MODEL=burger 
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch --screen

结果:可以很清晰的看到键盘遥控小车的方法,W/X 代表线 速度,A/D 代表角速度。


运行结果:在这里插入图片描述

3.新建终端并运行 gmapping(可跳过)

export TURTLEBOT3_MODEL=burger roslaunch turtlebot3_slam turtlebot3_gmapping.launch

用以查看机器人的状态更新

4.新建终端并开启 rviz 观察建图过程

export TURTLEBOT3_MODEL=burger roslaunch turtlebot3_navigation turtlebot3_navigation.launch`

运行结果:
在这里插入图片描述

5.使用 RVIZ 来进行小车的自动寻路导航(略)

三、实验二步骤

1.发送 cmd_vel 话题能够控制车子的前后左右移动

(1)首先查看 ros 节点


rostopic list

运行结果:能够看到 cmd_vel 话题
在这里插入图片描述

(2)查看话题类型并发送 cmd_vel 消息控制小车的移动 rostopic pub -r 10 /cmd_vel (按几下 tab 键会自动补全命令) 。
输入命令,在Gazebo 中能够看到小车的移动。(略)

2. 利用 move_base 控制小车往一个目的地运动

(1)让机器人前进一米

rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped \ '{ header: { frame_id: "base_link" }, pose: { position: { x: 1.0, y: 0, z: 0 }, orientation: { x: 0, y: 0, z: 0, w: 1 } } }' 

(2)让机器人后退一米,回到原来的位置 rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped \ '{ header: { frame_id: "map" }, pose: { position: { x: 0, y: 0, z: 0 }, orientation: { x: 0, y: 0, z: 0, w: 1 } } }'
在 RVIZ 中可以看到小车在寻路,如下图:
在这里插入图片描述

3. 让机器人自动在几个目标点之间来回循环 一个更简单的例子,在机器人前方 1m 处设定目标点

(1)创 建 用 于 发 布 目 标 点 的 package , 包 名 称 为 simple_navigation_goals 命令为:

catkin_create_pkg simple_navigation_goals move_base_msgs actionlib roscpp

(2)代码编写参考: https://blog.csdn.net/heyijia0327/article/details/43565227?loc ationNum=9
(3)然后需要对包的 CMakelists 文件进行修改:
在CMakeList.txt文件最后加上以下两行代码:

`add_executable(send_goal src/send_goal.cpp)
target_link_libraries(send_goal ${catkin_LIBRARIES})`

接着可以进行编译:

$ cd ~/catkin_ws
$ catkin_make

然后运行:

rostopic list | grep move_base/goal 

如果有节点出现则成功 最后运行下列命令即可: ./bin/simple_navigation_goals
想要更进一步控制小车移动可以参考下列网址,可以使得小 车按照正方形轨迹移动: https://www.guyuehome.com/270

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
movebase多目标点导航是一种机器人导航算法,用于在给定的地图中规划机器人的运动轨迹,使其依次经过多个目标点。 多目标点导航可以应用于各种场景,如自动仓储系统中的自动马达车辆、机器人巡逻任务等。通过设置多个目标点,机器人可以按照预先设定的顺序完成任务,提高运输效率。 在movebase多目标点导航中,首先需要利用SLAM算法构建地图,包括环境的物体、障碍物等信息。然后,设定机器人的起始位置和目标点,并使用路径规划算法生成机器人的路径。 路径规划算法可以根据地图信息和目标点的位置,选择合适的路径。常用的算法有A*、Dijkstra等。这些算法会考虑地图上的障碍物,避免机器人与障碍物发生碰撞。 一旦路径规划完成,导航控制器会根据机器人的运动能力和速度限制,将路径转换为控制命令发送给机器人的动作控制单元,控制机器人在地图中移动。 在机器人移动的过程中,导航系统会实时监测机器人的实际位置,与预定路径进行比对,以纠正路径的偏差。当机器人接近目标点时,导航控制器会触发到达目标点的事件,并切换到下一个目标点进行导航。 综上所述,movebase多目标点导航通过地图构建、路径规划和导航控制,实现了机器人在给定地图中按照设定顺序依次经过多个目标点的导航功能。它可以提高机器人的任务执行效率,广泛应用于自动化领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂就问吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值