ROS入门教程(三)—— 用C++或Python实现Hello world

上篇文章我们介绍了ROS的版本选择与安装,本文将继上文介绍安装完ROS Melodic Morenia后,如何用C++或Python编写我们的第一个程序。

目录

前言

Hello world实现流程

Python实现Hello world


前言

ROS中主要涉及到的编程语言有C++和Python,本教程主要以C++为主,主要有以下两点理由:

1.C++运行效率高,ROS的设计者设计的roscpp库;

2.Python旨在提高开发效率,适用于无性能要求的场景。

读者可根据自身情况选择C++或者Python等编程语言


Hello world实现流程

无论是C++还是Python其他编程语言,实现流程都是大同小异:

创建工作空间 → 创建功能包 → 编辑源文件 → 编辑配置文件 → 编译并执行

step1.创建工作空间

Ctrl+Alt+T打开终端分别输入:【在主目录下创建工作空间】

mkdir -p helloworld_ws/src
cd helloworld_ws
catkin_make

其中helloworld_ws为我们命名的工作空间名称,catkin_make是一个编译命令,该编译命令会帮我们创建好我们所需的文件并输出若干日志,成功结果如下:

ROS入门教程(三)—— 用C++或Python实现Hello world_第1张图片

step2.创建功能包

继续在该终端输入:【在工作空间的src文件中创建功能包】

cd src
catkin_create_pkg helloworld roscpp rospy std_msgs

其中helloworld为我们的功能包名称,roscpp 、rospy和std_msgs为添加的依赖,这些依赖是我们在ROS中运行程序最基本的一些依赖,成功结果如下:【低版本的ROS中message依赖可能为ros_msgs】

ROS入门教程(三)—— 用C++或Python实现Hello world_第2张图片

step3.编辑源文件

继续在终端输入:【在功能包中创建源文件】

cd helloworld/src
gedit helloworld_c.cpp

在空白文档中输入:【Hello world!】

#include //包含ros头文件

/******主函数******/
int main(int argc,char *argv[]){
	ros::init(argc,argv,"hello_node");//初始化节点
	ROS_INFO("Hello world!");//输出日志

	return 0;
}

step4.编辑配置文件

打开helloworld功能包中的CMakeLists.txt【helloworld_ws/src/helloword/CMakeLists.txt】

将136行与149行更改为如下结果:【在文编编辑器的首选项中打开显示行号功能】

ROS入门教程(三)—— 用C++或Python实现Hello world_第3张图片

其中hello为映射变量名称,helloworld_c.cpp为源代码文件名称。

step5.编译并执行

重新打开一个输入:【启动ros核心】

roscore

再重新打开另一个终端输入:【在工作空间中编译并执行】

cd ~/helloworld_ws
catkin_make
source ./devel/setup.bash
rosrun helloworld hello

其中,source命令为修改环境变量,helloworld为功能包名称,hello为映射变量名称,成功结果如下:

ROS入门教程(三)—— 用C++或Python实现Hello world_第4张图片


Python实现Hello world

在ROS中编写Python程序与编写C++程序大同小异。

step1.创建工作空间

Ctrl+Alt+T打开终端分别输入:【在主目录下创建工作空间】

mkdir -p helloworld_ws/src
cd helloworld_ws
catkin_make

其中helloworld_ws为我们命名的工作空间名称,catkin_make是一个编译命令,该编译命令会帮我们创建好我们所需的文件并输出若干日志,成功结果如下:

ROS入门教程(三)—— 用C++或Python实现Hello world_第5张图片

step2.创建功能包

继续在该终端输入:【在工作空间的src文件中创建功能包】

cd src
catkin_create_pkg helloworld roscpp rospy std_msgs

其中helloworld为我们的功能包名称,roscpp 、rospy和std_msgs为添加的依赖,这些依赖是我们在ROS中运行程序最基本的一些依赖,成功结果如下:【低版本的ROS中message依赖可能为ros_msgs】

ROS入门教程(三)—— 用C++或Python实现Hello world_第6张图片

step3.编辑源文件

 在功能包中新建名称为【scripts】的文件夹与【src】文件夹同级

ROS入门教程(三)—— 用C++或Python实现Hello world_第7张图片

在终端中输入:【创建源文件】

cd ~/helloworld_ws/src/helloworld/scripts
gedit helloworld_p.py

在空白文档中输入:【Hello world!】

#! /usr/bin/env python
# coding=

import rospy

if __name__ == "__main__":

	rospy.init_node("HelloNode.")
	rospy.loginfo("HelloWorld!")

由于.py文件的特殊性需要给他升级权限故继续在该终端中输入:

chmod +x helloworld_p.py

step4.编辑配置文件

打开helloworld功能包中的CMakeLists.txt【helloworld_ws/src/helloword/CMakeLists.txt】

将149行和162行更改为如下结果:【在文编编辑器的首选项中打开显示行号功能】

ROS入门教程(三)—— 用C++或Python实现Hello world_第8张图片

 其中helloworld_p.py为源文件名称为了选择恰当的解释器。

step5.编译并执行

重新打开一个输入:【启动ros核心】

roscore

再重新打开一个终端输入:【在工作空间中编译并执行】

cd ~/helloworld_ws
catkin_make
source ./devel/setup.bash
rosrun helloworld helloworld_p.py

其中,source命令为修改环境变量,helloworld为功能包名称,helloworld_p.py为源文件名称,成功结果如下:

ROS入门教程(三)—— 用C++或Python实现Hello world_第9张图片

到这里,恭喜你终于完成了你的ROS中的第一个程序。


文章预告:ROS入门教程(四)—— URDF与RViz

资料来源:奥特学院(Autolabor)

商业转载请联系官方授权,非商业转载请注明出处

你可能感兴趣的:(ROS入门教程,ubuntu,c++,python)