ROS中Navigation发布方式(3种)

这篇具有很好参考价值的文章主要介绍了ROS中Navigation发布方式(3种)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在ROS中发布导航命令有三种方式(但其实本质上都是话题发送)

一、使用Rviz进行导航

  最常见的导航是在Rviz中实现的导航,通过2D Nav Goal可以设置导航目标点,但实际上2D Nav Goal会操作三个话题均有输出:
  /move_base/current_goal
  /move_base/goal
  /move_base_simple/goal

  Rviz中导航操作的主要话题:/move_base_simple/goal
  Rviz中初始位姿操作的主要话题:/initialpose

二、使用终端发布导航命令

  向/move_base_simple中发数据

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

  向/move_base/current_goal中发数据

rostopic pub /move_base/current_goal  geometry_msgs/PoseStamped  '{header: {frame_id: "map"},pe: {position:{x: 1.8,y: 0,z: 0},orientation: {x: 0,y: 0,z: 0,w: 1}}}'

三、使用功能包代码发布

  源代码模板如下(这里只提供了.cpp,还要配套的CMakeLists.txt和package.xml):

#include <move_base_msgs/MoveBaseAction.h> 
#include <actionlib/client/simple_action_client.h>
typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBaseClient;

int main() {
	MoveBaseClient ac("move_base", true);
	// waitForResult()会阻塞当前线程,直到有结果才会退出(一前/一后导航会先前,执行完了再后)
	ac.waitForServer(ros::Duration(60));
	move_base_msgs::MoveBaseGoal goal;
	// 对goal进行填充
	ac.sendGoal(goal);
	ac.waitForResult(); 
	if (ac.getState() == actionlib::SimpleClientGoalState::SUCCEEDED) 		
		ROS_INFO("You have reached the goal!"); 
	else 
		ROS_INFO("The base failed for some reason"); return 0;
}

  ac.sendGoal是有三个回调的:ac.sendGoal(goal, &doneCb, &activeCb, &feedbackCb);
参考http://wiki.ros.org/cn/actionlib_tutorials/Tutorials/Writing%20a%20Callback%20Based%20Simple%20Action%20Client

SimpleClientGoalState状态如下:
ROS中Navigation发布方式(3种),ROS,ros
ROS中Navigation发布方式(3种),ROS,ros

参考:
  https://docs.ros.org/en/api/actionlib/html/classactionlib_1_1SimpleClientGoalState.html
  https://blog.csdn.net/abcwoabcwo/article/details/103536376文章来源地址https://www.toymoban.com/news/detail-682800.html

到了这里,关于ROS中Navigation发布方式(3种)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ROS2 Navigation 进阶教程学习笔记 第一章

    Nav2提供了新的拱你和工具,使创建机器人应用程序变得更容易 在本单元中,将学习 1. 通过simple Commander API进行基本Nav2操作 2. 通过followwaypoints使用waypoint follower和task executor插件 3. 禁区和限速区简介 然后您将基于Nav2创建一个基本的自主机器人demo。您将经常在一个仿真仓库中

    2024年02月08日
    浏览(47)
  • 【ROS2】【机器人导航navigation2】参数调整分析

    一、概述 在之前的笔记分析了nav2的启动文件,发现所有实际控制机器人的节点都需要 params_file 文件,也就是 /opt/ros/humble/share/nav2_bringup/params/ nav2_params.yaml 所以要实际控制机器人导航需要修改 params_file 文件 二、参数文件总览 比较重要的是这几个节点 planner_server节点的参数,

    2024年02月07日
    浏览(38)
  • 【ROS】使用vscode浏览navigation2源码时,提示:没有那个文件或目录

    使用vscode浏览navigation2源码时,头文件下面有波浪线,并提示:没有那个文件或目录。比如没有:geometry_msgs/msg/polygon.h 错误信息: 无法打开源文件 “geometry_msgs/msg/polygon.h” (dependency of “nav2_controller/controller_server.hpp”)C/C++(1696) 无法打开 源 文件 \\\"rclcpp/rclcpp.hpp\\\"C/C++(1696) 1)是否

    2024年02月07日
    浏览(41)
  • 【ROS】ROS 发布和订阅压缩图像消息 CompressedImage

    参考 cv_bridge 文档 其中 “jpg” 表示将图像压缩的目标格式,还有很多其他参数可选,如下所示 但亲测 “jpg” 压缩比最大,图像传输占用的带宽最少 其中 “bgr8” 表示将图像解析为 “bgr8” 格式,也是 opencv 默认的图像格式 参考 rospy wiki 教程 参考 opencv 中 imencode 与 imdecod

    2024年04月16日
    浏览(38)
  • ROS学习笔记(二):ROS话题的发布与订阅

    第十讲  发布者Publisher的编程 1. 创建功能包 learning_topic  $ cd ~/test1/src  $ catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs turtlesim 2.执行C++文件程序如下:放在创建的功能包的/learning_topic/src里 程序名为velocity_publisher.cpp 2.如何实现一个发布者(发布到ros自带节点 ) (1)初

    2024年02月04日
    浏览(79)
  • ros机器人在navigation下导航costmap_2d动态层(障碍物层)障碍物无法及时消除的情况解决办法

    设备 杉川-3a激光雷达 win10笔记本电脑 ubuntu18.04 ros-melodic 问题 ros机器人在move_base下导航,有静态图层与动态图层,静态图层显示之前已经建立好的地图,而动态层显示现在激光雷达实时扫描到的障碍物。 假设机器人雷达最大范围为8m,在某一时刻,以机器人为原点,在机器人

    2024年02月06日
    浏览(43)
  • 【ROS】ROS1人机界面开发:第一个最简ROS+QtGui程序(按钮启动发布者)

    1)新建工程:Other Project -- ROS Workspace 2)设置工程名称、路径 3)可以通过点击“Browse”来创建目录 注意:使用自带ros插件的qtcreator-ros,无法创建目录、也不能选择目录,这是个bug,因此需要在终端手动创建目录,并将目录路径手动输入“Workspace Path”中 4)如果是作为子工

    2024年02月16日
    浏览(69)
  • 基于ROS发布里程计信息

    参考文档: navigationTutorialsRobotSetupOdom 参考博客: (1)ROS机器人里程计模型 (2)ROS里程计消息nav_msgs/Odometry的可视化方法 1 常用坐标系系统模型 世界坐标系是描述机器人全局信息的坐标系;机器人坐标系是描述机器人自身信息的坐标系;传感器坐标系是描述传感器信息的坐

    2024年02月08日
    浏览(42)
  • [ros][ubuntu]ros在ubuntu18.04上工作空间创建和发布一个话题

    构建catkin工作空间  mkdir -p ~/catkin_ws/src    cd ~/catkin_ws/src  catkin_init_workspace  cd ~/catkin_ws/  catkin_make 配置环境变量  echo \\\"source ~/catkin_ws/devel/setup.bash\\\"  ~/.bashrc  source ~/.bashrc 检查环境变量  echo $ROS_PACKAGE_PATH 遇到错误:上面操作不需要用sudo 进行操作,但是由于初学者可能存在

    2024年02月10日
    浏览(47)
  • 随手笔记——将ROS图像话题转为OpenCV图像格式处理后再转为ROS图像话题发布(C++版)

    将ROS图像话题转为OpenCV图像格式处理后再转为ROS图像话题发布,主要通过cv_bridge的toImageMsg()和toCvCopy()函数(C++版)。 ​ 代码来自wiki

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包