ROS入门(八) make_plan的Server连接
在move_base里面,将起始点和终点规划路径并且离散化。
主要是一个叫做make_plan的Service。
#include <ros/ros.h> #include <nav_msgs/GetPlan.h> #include <move_base_msgs/MoveBaseActionGoal.h> #include <geometry_msgs/PoseStamped.h> #include <geometry_msgs/PointStamped.h> #include <boost/foreach.hpp> #define forEach BOOST_FOREACHnav_msgs::GetPlan srv; ros::Publisher goal_pub; ros::ServiceClient plan_client;void callPlanningService(ros::ServiceClient plan_client, nav_msgs::GetPlan &srv) {if(plan_client.call(srv)){if(!srv.response.plan.poses.empty()){forEach(const geometry_msgs::PoseStamped &p, srv.response.plan.poses){ROS_INFO("x = %f, y =%f",p.pose.position.x, p.pose.position.y);}}else{ROS_INFO("EMPTY PLAN.");}}else{ROS_ERROR("Failed to call service.");} }void clicked_point(const geometry_msgs::PointStamped& msg) {//ROS_INFO("Got clicked point:[%f,%f,%f]", msg.pose.x, msg.pose.y, msg.pose.z); nav_msgs::GetPlan srv;move_base_msgs::MoveBaseActionGoal goal;geometry_msgs::PoseStamped goalPos;goalPos.header.frame_id = "map";goalPos.header.stamp = ros::Time::now();goalPos.pose.position.x = 1.63;goalPos.pose.position.y = 2.9;goalPos.pose.position.z = 0;goalPos.pose.orientation.x = 0;goalPos.pose.orientation.y = 0;goalPos.pose.orientation.z = 0.115;goalPos.pose.orientation.w = 0.99;srv.request.start.header.stamp = ros::Time::now();srv.request.start.header.frame_id = "map";srv.request.start.pose.position.x = msg.point.x;srv.request.start.pose.position.y = msg.point.y;srv.request.start.pose.position.z = 0;srv.request.start.pose.orientation.x = 0;srv.request.start.pose.orientation.y = 0;srv.request.start.pose.orientation.z = 0;srv.request.start.pose.orientation.w = 1;//srv.request.goal.header.frame_id = "map";srv.request.goal = goalPos;srv.request.tolerance = 0.5;goal.goal.target_pose = goalPos;goal_pub.publish(goal);callPlanningService(plan_client, srv); }int main(int argc, char** argv) {ros::init(argc, argv, "send_goal");ros::NodeHandle n;goal_pub=n.advertise<move_base_msgs::MoveBaseActionGoal>("/goal",10);plan_client=n.serviceClient<nav_msgs::GetPlan>("/move_base/make_plan");ros::Subscriber clickedpoint=n.subscribe("/clicked_point", 100, clicked_point);ros::spin();return 0; }
参考资料:
Nav_msgs docs:
http://docs.ros.org/api/nav_msgs/html/srv/GetPlan.html
csdn的make_plan资料:
http://blog.csdn.net/yiranhaiziqi/article/details/52891312
转载于:https://www.cnblogs.com/TIANHUAHUA/p/8516431.html
ROS入门(八) make_plan的Server连接相关推荐
- ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)
所用的学习链接: [奥特学园]ROS机器人入门课程<ROS理论与实践>零基础教程P278-288 [以上视频笔记见http://www.autolabor.com.cn/book/ROST ...
- ROS入门-12.服务端Server的编程实现
实现服务通讯的服务端Server的编程实现 主要给海龟发送速度指令,通过topic发,Service实现:Client发布request来控制Server是不是给海龟发指令让其动起来,Client相当 ...
- ROS入门(九)——机器人自动导航(介绍、地图、定位和路径规划)
所用的学习链接: [奥特学园]ROS机器人入门课程<ROS理论与实践>零基础教程P289-314 [以上视频笔记见http://www.autolabor.com.cn/book/ROST ...
- ROS入门(一)——ROS安装(vmware16+ubuntu20.04+ROS-Noetic)
嵌套:ROS可以在Ubuntu上运行,Ubuntu在虚拟机Vmware中安装. 从 虚拟机vmware安装→ubuntu安装→ros安装,逐步介绍安装ROS环境的过程.整个过程是我一步步跟着各种博客安 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
转自即时通讯网:http://www.52im.net/ 本文原作者:"水晶虾饺",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说" ...
- SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所 ...
- ROS入门笔记(十二):动作编程 (C++)
ROS入门笔记(十二):动作编程 (C++) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建action(动作) 3.1 自定义action 3.2 在package.xml中添加功能 ...
- ROS入门笔记(六): ROS系统架构
ROS入门笔记(六): ROS系统架构 文章目录 1 ROS系统架构 1.1 文件系统(重点) 1.2 计算图 1.3 开源社区 1 ROS系统架构 1.1 文件系统(重点) 文件系统:主要指在硬盘里 ...
- 古月居ROS入门21讲笔记
ROS入门21讲笔记--古月居 1 C++&Python极简基础 1.1 安装编译/解析器 1.2 for循环 1.3 while循环 1.4 面向对象 2. ROS基础 2.1 ROS概念 ...
最新文章
- 路由器NAT网络地址转换
- python管理系统pyqt_pyqt5图书管理系统(源码+安装说明+数据库)
- 【正一专栏】评深圳西乡砍人案——不要无辜的底层伤害
- 天然富硒科技成果转化-李喜贵:成立联合体谋定农业大健康
- 正则提取的url中的域名以及替换域名的方法 preg_match()和preg_replace()
- python与sap_Python结合SAP GUI Script操作sap的简易教程
- 详述 hosts 文件的作用及修改 hosts 文件的方法
- php 禁止ajax 重复请求,js ajax请求防止重复提交
- 一文了解.Net Core 3.1 Web API基础知识
- vscode中java打包exe
- 我的爷爷(知识渊博的下乡知青)
- 罗马数字转换python_Python实现将罗马数字转换成普通阿拉伯数字的方法
- vs code 突然不能粘贴和复制
- 查看服务器的并发访问量以及访问的IP地址
- Kafka 2.8.0 正式发布,增加了哪些新特性?
- 计算机平均数据传输速率怎么算,如何计算总线数据传输速率
- Web学习(二)CSS
- 湍流退化图像复原如何使用matlab,一种基于相关最大性的湍流退化图像复原方法与流程...
- 团队协作三、OnlyOffice 实现文件在线预览和编辑
- 使用frp内网穿透,用windows远程桌面连接
热门文章
- LINUX 下mysql主从安装与同步
- [django]list_display 中包含外键内的字段
- Ajax(从json中提取数据)
- python如何统计累计每日的人数‘’_每日一练 | Data Scientist amp; Business Analyst amp; Leetcode 面试题 902...
- LSTM block和cell区别
- Python输出当前时间
- Delphi中Messagedlg用法
- 尼日利亚年轻人推动该国登上比特币谷歌搜索排名榜首
- SAP License:ERP是什么
- SAP License:赛锐信息访谈启示录(五)