学习工作记录,供自己学习记录和大家探讨
之前安装了ros系统,开始学ros编程,今天学习最基础的helloworld编程。
创建工作空间
先创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译
mkdir -p helloworld/src
cd helloworld
catkin_make
出现问题:
Invoking "cmake" failed
原因:
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
Unable to find either executable 'empy' or Python module 'em'... try
installing the package 'python3-empy'
也就是ROS用的是python2,然而安装的anaconda是python3,所以要ros兼容python3。
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
基本上就没问题了,有其他问题可以看看别人帖子,再继续catkin_make
进入 src 创建 ros 包并添加依赖
cd src
catkin_create_pkg helloworld_pkg roscpp rospy std_msgs
创建一个ros包helloworld_pkg,依赖于roscpp,rospy,std_msgs这些文件。其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库。
创建helloworld文件
进入 ros 包添加 scripts 目录并进入scripts 创建编辑 python 文件
cd helloworld_pkg
mkdir scripts
cd scripts
gedit hello.py
#! /usr/bin/env python
# - coding: utf-8 -*-
"""
Python 版 HelloWorld
"""
import rospy
if __name__ == "__main__":
rospy.init_node("Hello")
rospy.loginfo("Hello World!!!!")
为 python 文件添加可执行权限
chmod +x hello.py
返回ros包,打开编辑 ros 包下的 CMakeLists.txt 文件
cd ..
gedit CMakeLists.txt
将下面一段执代码放进CMakeLists.txt文件中,为了将我们编写的文件添加为执行文件,这样编写的文件就可以编译了
catkin_install_python(PROGRAMS scripts/hello.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
编译运行python 文件
进入工作空间helloworld并编译
cd ../..
catkin_make
运行
先新打开一个运行终端运行roscore
roscore
在原来的运行终端设置空间环境变量,其实对
source ./devel/setup.bash
运行程序
rosrun helloworld_pkg hello.py
其中helloworld_pkg是ros包,hello.py是ros文件,此时运行终端会出现Hello World!!!!