在gmapping的launch文件中看到,type=“slam_gmapping”,这里的slam_gmapping是c++编译后的可执行文件。
如果想要修改gmapping算法,就需要找到slam_gmapping的c++源码。
但是这是用apt下载的包,是二进制类型的,没有下载出来源码。
如果想要找源码该怎么办?
<!-- Gmapping --> <node pkg="gmapping" type="slam_gmapping" name="gmapping" output="screen"> <param name="base_frame" value="$(arg set_base_frame)"/> <param name="odom_frame" value="$(arg set_odom_frame)"/> <param name="map_frame" value="$(arg set_map_frame)"/>
可以先通过下面的方法找到gmapping的xml文件
@ubuntu:~$ roscd gmapping @ubuntu:/opt/ros/melodic/share/gmapping$ ls cmake nodelet_plugins.xml package.xml @ubuntu:/opt/ros/melodic/share/gmapping$ cat package.xml
<package> <name>gmapping</name> <version>1.4.1</version> <description>This package contains a ROS wrapper for OpenSlam's Gmapping. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot. </description> <author>Brian Gerkey</author> <maintainer email="ros-orphaned-packages@googlegroups.com">ROS Orphaned Package Maintainers</maintainer> <license>BSD</license> <license>Apache 2.0</license> <url>http://ros.org/wiki/gmapping</url> <buildtool_depend version_gte="0.5.68">catkin</buildtool_depend> <build_depend>nav_msgs</build_depend> <build_depend>openslam_gmapping</build_depend> <build_depend>roscpp</build_depend> <build_depend>rostest</build_depend> <build_depend>tf</build_depend> <build_depend>nodelet</build_depend> <run_depend>nav_msgs</run_depend> <run_depend>openslam_gmapping</run_depend> <run_depend>roscpp</run_depend> <run_depend>tf</run_depend> <run_depend>nodelet</run_depend> <export> <nodelet plugin="${prefix}/nodelet_plugins.xml" /> </export> </package>
可以看到里面有一个url指向wiki地址。
<url>http://ros.org/wiki/gmapping</url>
打开链接选择melodic版本。
里面会有参数的说明。打开下面的github链接。
然后下载,就可以在src文件目录下找到c++源码,进行算法研究和修改。
二进制包和源码之间的切换: 之前改过一个opencv-apps的:过程如下。 sudo apt remove ros-melodic-opencv-apps 把apt安装的包删了. 再通过roscd验证是否已删除 roscd opencv-apps/ 然后进到catkin_ws/src目录。 git clone https://github.com/ros-perception/opencv_apps.git 然后清除之前编译的内容—删除工作空间下的build和devel文件。 然后catkin_make 限制编译的进程数:j几就是几线程 catkin_make -j1 单线程编译好处是占用较少资源,缺点是编译时间长。 roscd opencv_apps/ ls