参考自:http://wiki.ros.org/rospy_tutorials/Tutorials/Makefile
说明:
观看 古月君的 ROS入门-21讲,里面没有涉及python程序的运行
请参照本文,直接复制粘贴即可,不用更改内容。如果出现错误,请检查自己的运行环境是否正确
系统: Ubuntu16.04 ros indigo
.py并不是可编译的脚本文件,但是为了适应ros统一的编译体系,使ros识别出你写的Python node,所以也加入了Python的编译流程,主要目的就是让ros和系统找到你的Python程序在哪。
1.在工作区间建立一个package
cd ~/catkin_ws/src
catkin_create_pkg my_pkg message_generation rospy
2.建立你的Python包
cd ~/catkin_ws/src/my_pkg
mkdir bin
mkdir src
mkdir src/tutorial_package
touch src/tutorial_package/__init__.py
src目录用来放你的源码,也就是你自己写的各种封装好的包,是以.py结尾的文件
bin目录用来放你的执行文件,木有文件名后缀
在src/turorial_package目录下创建hello.py文件,
里面写:
def say(name):
print('Hello ' + name)
在bin目录下创建hello文件,
里面写:
#! /usr/bin/env python
import tutorial_package.hello
if __name__ == '__main__':
tutorial_package.hello.say('my friend!')
第一句很重要,用来表明这个可执行文件的解释器。
然后给这个文件加上可执行权限
chmod u+x bin/hello
最后还有一个问题,bin目录下的Python文件如何找到(import)src下的Python,一种方法是改Python路径,显然很麻烦。
另一种是在根目录下建立setup.py文件。
里面写:
## ! DO NOT MANUALLY INVOKE THIS setup.py, USE CATKIN INSTEAD
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
# fetch values from package.xml
setup_args = generate_distutils_setup(
packages=['tutorial_package'],
package_dir={'': 'src'},
)
setup(**setup_args)
里面要改的就是package和package_dir
到此为止python方面的流程已经说完
3.修改CMakelists.txt
3.1 首先把里面
catkin_python_setup()
的注释去掉,保证在catkin_make时install Python包
3.2
install(PROGRAMS bin/hello
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
找到这一句,去掉注释,在program后面加上你的可执行文件的路径名, 去掉destination注释。
4.编译
cd ~/catkin_ws
catkin_make -DCATKIN_WHITELIST_PACKAGES="my_pkg"
source ~/.bashrc
#或者运行下面一行
#source ~/devel/setup.bash
rosrun my_pkg hello
5.附上上述源码地址。
https://github.com/lightjiang/my_pkg.git
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2171.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...