目的
在ROS中学习智能车的路径规划时用到很多种导航算法,随着论文进行,需要对ROS中的路径规划算法源码进行修改从而实现算法优化。
本文将详细介绍算法包的获取,覆盖,修改,运行。以最开始的ROS提供官方教程turtlesim为例。本文将用到ROS的overlaying机制。
参考链接:https://heyijia.blog.csdn.net/article/details/45841317
https://blog.csdn.net/weixin_42099082/article/details/102717905
感谢两位博主。
一、overlaying机制
根据ROS官方文档解释,overlaying能够将ROS自带的算法包保存的情况下,创建新的package供你修改和使用,通过source不同的路径调用。
官方教程如下:
http://wiki.ros.org/catkin/Tutorials/workspace_overlaying
一、安装ros-tutorials官方教程
我用的melodic版本,根据自己的ROS版本进行修改
sudo apt-get install ros-melodic-ros-tutorials
安装完成后查看该教程的路径
roscd rospy_tutorials
pwd
显示路径如下
/opt/ros/melodic/share/rospy_tutorials
注:如果roscd命令"not found",可能是一开始安装ROS时你没有source 环境,输入该命令或进入.bashrc添加路径即可
source /opt/ros/melodic/setup.bash
二、创建工作空间用于overlaying
mkdir -p ~/overlay_ros_tutorials/src
cd ~/overlay_ros_tutorials
将ros_tutorial的package添加到src文件夹下
cd ~/overlay_ros_tutorials/src
git clone https://github.com/ros/ros_tutorials.git
如果clone失败,将https改成git即可
官方推荐使用rosinstall_generator 和vcstool管理工作空间,后续学习后会考虑发一篇如何使用的文章
三、source环境
按照正常步骤,此时应进行工作空间编译,但为了覆盖(overlaying)原来的ros_tutorials的功能包,需要source原始功能包的路径。
source /opt/ros/melodic/setup.bash
此步骤非必要,因为在安装ROS时已经source该路径
注:如果你想覆盖的不是该路径下的package,那应该source该package所在的路径再进行修改和编译
编译
cd ~/overlay_ros_tutorials/
catkin_make
编译完成后source,查看路径
source ~/overlay_ros_tutorials/devel/setup.bash
roscd rospy_tutorials
pwd
rospy_tutorial教程在该文件夹下
如果没有source 你的覆盖package路径,就会如下图
四、运行测试
在overlaying_ros_tutorials打开新的终端
source路径后打开roscore
Ctrl+shift+T另开终端,记得再次source
如果新终端不进行source会打开原始的功能包内节点
通过如下对比进行验证
新终端未source
此时是蓝色背景,以及500*500的框架
source新终端
首先在工作空间搜索 turtle_frame.cpp文件,打开
修改其图框尺寸为长方形500*600,背景颜色DEFAULT_BG_R/G/B
此处修改数字可改变背景颜色
修改完保存,关闭所有终端,再次进入工作空间,重新编译,不然修改不生效
打开roscore,另开终端source路径,运行turtlesim_node
修改后的如下,说明source该路径则使用该修改过的package,否则使用原始的package
总结
1、建立新的工作空间,克隆源代码
2、source环境调用PACKAGE
3、修改代码后再编译
注:一定要先source才能使用
下一步:如何默认使用修改后的package,不用source
在导航算法中直接调用该功能包?