• 第十七课 导航实践(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
    如何配置在真实的机器人上的文件

  • 相关阅读:
    java设计模式之组合模式
    java设计模式之建造者
    设计模式之单例
    oracle 中update select 和连接字符串配合使用
    策略模式之使用场景
    javascript面向对象学习笔记——创建对象(转)
    grunt自动化工具
    【grunt整合版】30分钟学会使用grunt打包前端代码
    浅谈Hybrid技术的设计与实现
    WEB服务器、应用程序服务器、HTTP服务器区别(转)
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6774816.html
Copyright © 2020-2023  润新知