ROS代码实现及基本操作
ROS代码实现及基本操作
1.环境搭建
1.1创建工作空间并初始化
$ mkidr -p 自定义空间名称/src
$ cd 自定义空间名称
$ catkin_make
上述命令,首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make 命令编译。
执行之后,主目录下出现如下三个文件
1.2进入 src 创建 ros 包并添加依赖
$ cd src
$ catkin_create_pkg 自定义包名 roscpp rospy std_msgs
上述命令会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中 roscpp 是使用 C++ 实现的库,而 rospy 是使用 python 实现的库, std_msgs 是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。
我在这里自定义包名为 helloworld
代码执行后
2.Hello world实现
ROS 中,虽然实现同一功能时,C++ 和 Python 可以互换,但是具体选择哪种语言,视需求而定,因为两种语言相较而言:C++ 运行效率高但编码效率低,Python 则反之,基于两者互补的特点,ROS设计者分别设计了 roscpp 与rospy 库,前者旨在成为 ROS 高性能库,而后者一般用于对性能无要求的场景,旨在提高开发效率。以下是两种语言的执行代码体验版。
2.1C++版
2.1.1进入 ros 包的 src 目录编辑源文件
$ cd 自定义的包
在定义包 helloworld 下的 src 文件夹中,右键选择新建文档,文档命名为 helloworld_c.cpp 如下图所示:
如果说没法新建文档,去主目录的模板文件夹空白处打开终端,输入指令:sudo gedit 文本文件 ,然后出现文件管理器保存,再次去scripts文件夹里右击就可以看到新建文档了。
C++源码实现如下:
#include "ros/ros.h"
int main(int argc, char *argv[])
{
//执行 ros 节点初始化
ros::init(argc,argv,"hello");
//创建 ros 节点句柄(非必须)
ros::NodeHandle n;
//控制台输出 hello world
ROS_INFO("hello world!");
return 0;
}
退出之前别忘记保存啦!!!
2.1.2编辑 ros 包下的 CMakeList.txt 文件
在 CMakeList.txt 文件中拼命寻找以下代码并取消它们前面的注释
add_executable(步骤3的源文件名
src/步骤3的源文件名.cpp
)
target_link_libraries(步骤3的源文件名
${catkin_LIBRARIES}
)
我在这里定义源文件名为 hello 如下图所示:
2.1.3进入工作空间目录并编译
$ cd 自定义空间名称
$ catkin_make
从而生成 build devel …
2.1.4执行
先启动命令行1:需要ctrl+alt+t新打开一个终端窗口
$ roscore
在启动命令行2:
$ cd 工作空间
$ source ./devel/setup.bash
$ rosrun 自定义的包名 C++节点
执行结果如下图所示:
到这里我们就把C++体验版拿下了!
2.2Python版
2.2.1进入 ros 包添加 scripts 目录并编辑 Python 文件
$ cd ros包
$ mkdir scripts
执行得到:
在 scripts 文件下右键新建文档,命名为 helloworld_p.py
Python源码实现如下:
#! /usr/bin/env python
"""
Python 版 HelloWorld
"""
import rospy
if __name__ == "__main__":
rospy.init_node("Hello")
rospy.loginfo("Hello World!!!!")
2.2.2为 Python 文件添加可执行权限
$ chmod +x 自定义文件名.py
执行如下:
2.2.3编辑 ros 包下的 CMakeList.txt 文件
catkin_install_python(PROGRAMS scripts/自定义文件名.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
执行如下:
2.2.4进入工作空间目录并编译
$ cd 自定义空间名称
$ catkin_make
2.2.5进入工作空间目录并执行
先启动命令行1:需要ctrl+alt+t打开新的终端
$ roscore
再启动命令行2:
$ cd 工作空间
$ source ./devel/setup.bash
$ rosrun 包名 自定义文件名.py
执行结果如下图所示:
到这里拿下Python体验版了。
主笔:Kyuno_wh
修正:dym踏雪寻梅,@famgke