在数字化转型中,选择合适的跨平台开发框架不仅能提高效率,还有助于确保数据安全与合规性。
638
2022-09-27
第十七课 导航实践(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 如何配置在真实的机器人上的文件
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~