ros 编译 Python 文件

参考自:http://wiki.ros.org/rospy_tutorials/Tutorials/Makefile

系统:Ubuntu14.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
rosrun my_pkg hello 


5.附上上述源码地址。

https://github.com/lightjiang/my_pkg.git








  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值