第十七课 导航实践(2)

路径规划

目标导航:

MoveBaseAction是在MoveBase中定义的一个action文件,

它的目标是

geometry_msgs/PoseStamped target_pose表示目标位置

结果为空

反馈为:

geometry_msgs/PoseStamped base_position表示当前的位置

如下所示

通过实际例子来看一下MoveBaseAction如何使用

首先,创建一个功能包

然后编译一下:

catkin_make

在src中创建一个源文件send_goal.cpp

修改CMakeLists.txt文件

编译之,catkin_make

下面运行,把上节课的navigation_tutorials下launch文件中的move_base_amcl.launch复制到本包里面如下

上面已实现目标导航到某个具体的坐标位置,下面来实现路径规划部分

它需要GetPlan这个服务(service),它的命名空间在move_base节点下

其请求为

geometry_msgs/PoseStamped start起始点

geometry_msgs/PoseStamped goal目标

float32 tolerance

响应为

nav_msgs/Path plan

查看该消息的类型该如何定义nav_msgs/Path

下面用代码来实现:

创建源文件make_plan.cpp

 

//上面文件的内容主要是

首先创建了两个函数,分别用于完成服务的消息request 的定义,以及调用服务,在调用服务的时候,看能够被成功调用,如果成功调用,判断是否为空,如果不为空则输出plan的pose,x,y等的值.

在主函数里面首先初始化,创建一个NodeHandle,注意服务的命名空间是move_base_node/make_plan,然后等待服务,接着创建服务的客户端,看服务的客户端能否被成功创建,如果能够被成功创建,则创建服务,然后调用服务.

修改CMakeLists.txt

add_executable(make_plan src/make_plan.cpp)

target_link_libraries(make_plan ${catkin_LIBRARIES})

运行之:

roscore

rosrun navigation_example make_plan

roslaunch navigation_tutorials move_base_amcl.launch
如何配置在真实的机器人上的文件

 

posted on   gary_123  阅读(704)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示