赞
踩
目录
主要代码参考以下博客:
【运动规划算法项目实战】如何使用Pure Pursuit算法进行路径跟踪(附ROS C++代码)
算法封装为class PurePursuit,还需要在此基础上编写一个主函数运行算法。
- int main(int argc, char *argv[])
- {
- ros::init(argc, argv, "purepursuit");
- ros::NodeHandle nh;
- PurePursuit PurePursuit1(nh);
- ros::spin();
- return 0;
- }
最关键的是ros::spin();没有这一行的话无法循环ROS。
可以封装一个roslaunch文件便于修改参数。
- <launch>
- <node pkg="purepursuit" type="purepursuit" name="purepursuit_cpp" output="screen"/>
- <param name="output_vel" value="/cmd_vel"/>
- <param name="input_path" value="/splinepoints"/>
- <param name="rate" value="10"/>
- <param name="target_vel" value="0.5"/>
- </launch>
以rosrun的方式启动程序时,ctrl+c可以终止程序,但是返回不到命令行状态。但是以roslaunch的方式启动时可以,可以返回到命令行,比较慢。
解决方法:手动增加信号量就好了,没有向其他博客那样加mySigintHandler函数执行语句就可以退出了,不知道怎么回事。
注意包含头文件。
- #include <signal.h>
-
- void mySigintHandler(int sig)
- {
- ros::shutdown();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。