代码改变世界

ROS 找C++算法源码

2022-04-05 15:43  jym蒟蒻  阅读(99)  评论(0编辑  收藏  举报

在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