目录
3、进入ROS包添加scripts目录并编辑python文件
ROS中涉及的编程语言以C++和Python为主,ROS中的大多数程序两者都可以实现,这里简述下用C++和Python两种方案演示。
ROS中的程序即便使用不同的编程语言,实现流程也大致类似,以当前的HelloWorld程序为例,实现流程大致如下:
- 先创建一个工作空间
- 再创建一个功能包
- 编辑源文件
- 编辑配置文件
- 编译并执行
上述流程中,C++和Python只是在步骤3和步骤4的实现细节上有差异,其他流程基本一致。
1、创建工作空间并初始化
mkdir -p 自定义工作空间名称/src
cd 自定义工作空间名称
catkin_make
2、进入src创建ROS包并添加依赖
cd src
catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs
上述命令,会在工作空间下生成一个功能包,该功能包依赖于roscpp、rospy、std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖于这三个库实现。
注意:在ROS中,虽然实现同意功能时,C++和Python可以互换,但是具体选择哪种语言,需要视需求而定,因为两种语言各有特点,C++运行效率高但是编码效率低,而Python则反之,基于二者互补的特点,ROS设计者分别设计了roscpp和rospy库, 前者旨在成为ROS的高性能库,而后者一般用于对性能无要求的场景,旨在提高开发效率。
HelloWorld(C++版)
3、进入ROS包的 src目录编辑源文件
cd 自定义的包
C++源码实现(文件名自定义)
#include "ros/ros.h"
int main(int argc,char *argv[])
{
//执行ros节点初始化
ros::init(argc,argv,"hello")//hello是节点名称
//创建ros节点句柄(非必须)
ros::NodeHandle n;
//控制台输出,hello world
ROS_INFO("hello world");
return 0;
}
4、编辑ROS包下的Cmakelist.txt文件
add_executable(步骤3的源文件名 src/步骤3的源文件名.cpp ) target_link_libraries(步骤3的源文件名 ${catkin_LIBRARIES} )
5、进入工作空间目录并编译
cd 自定义的工作空间
catkin_make
生成build devel
6、执行
先启动命令行1
roscore
在启动命令行2:
cd 工作空间
source ./devel/setup.bash
rosrun 自定义包名 C++节点
命令行输出:hello world
PS:source ~/工作空间/devel/setup.bash可以添加进.bashrc文件,使用上更方便,可以在任何终端使用
添加方式1:直接使用gedit或vim编辑.bashrc文件,该文件是隐藏文件,使用crtl+h会出现,最后添加该内容
添加方式2:echo “source ~/工作空间/devel/setup.bash”>>~/.bashrc
也可以不添加,就是每次在新的一个终端都要执行source ./devel/setup.bash
HelloWorld(Python版)
这里也是在前面工作空间和包创建好之后的工作:
3、进入ROS包添加scripts目录并编辑python文件
cd ros包名
mkdir scripts
新建python文件:文件名自定义
#! /usr/bin/env python
#指定python解释器
import rospy
#导入包
if __name__ == "__main__":
#初始化节点
rospy.init_node("Hello")
rospy.loginfo("Hello World!!!")
4、为Python文件添加可执行权限
chmod +x 自定义文件名.py
5、编辑ROS包下的CmakeList.txt
PS:这里noetic版本之前的可以不用配置
catkin_install_python(PROGRAMS scripts/自定义文件名.py
DESTINATION $(CATKIN_PACKAGE_BIN_DESTINATION)
)
6、进入工作空间目录并编译
cd 自定义工作空间
catkin_make
7、进入工作空间目录并执行
先启动命令行1
roscore
在启动命令行2
cd 工作空间
source ./devel/setup.bash
rosrun 包名 自定义文件名.py
输出结果:hello world
PS:这里可以看出,这样用记事本的方式编辑代码,效率低下,且易出错,后面会介绍安装IDE工具来编写代码,提高编写代码效率,最常用的IDE就是VScode.