目录
一、主要代码
主要代码参考以下博客:
【运动规划算法项目实战】如何使用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;
}
二、launch文件
最关键的是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>
三、ctrl+C无法终止终端到命令行
以rosrun的方式启动程序时,ctrl+c可以终止程序,但是返回不到命令行状态。但是以roslaunch的方式启动时可以,可以返回到命令行,比较慢。
解决方法:手动增加信号量就好了,没有向其他博客那样加mySigintHandler函数执行语句就可以退出了,不知道怎么回事。
注意包含头文件。
#include <signal.h>
void mySigintHandler(int sig)
{
ros::shutdown();
}