前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS编译 Python 文件(详细说明)

ROS编译 Python 文件(详细说明)

作者头像
全栈程序员站长
发布2021-04-07 11:02:28
2.2K0
发布2021-04-07 11:02:28
举报
文章被收录于专栏:全栈程序员必看

参考自: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

代码语言:javascript
复制
cd ~/catkin_ws/src
代码语言:javascript
复制
catkin_create_pkg my_pkg message_generation rospy

2.建立你的Python包

代码语言:javascript
复制
cd ~/catkin_ws/src/my_pkg
代码语言:javascript
复制
mkdir bin
代码语言:javascript
复制
mkdir src
代码语言:javascript
复制
mkdir src/tutorial_package
代码语言:javascript
复制
touch src/tutorial_package/__init__.py

src目录用来放你的源码,也就是你自己写的各种封装好的包,是以.py结尾的文件

bin目录用来放你的执行文件,木有文件名后缀

在src/turorial_package目录下创建hello.py文件,

里面写:

代码语言:javascript
复制
def say(name):
    print('Hello ' + name)

在bin目录下创建hello文件,

里面写:

代码语言:javascript
复制
#! /usr/bin/env python
 
import tutorial_package.hello
 
 
if __name__ == '__main__':
    tutorial_package.hello.say('my friend!')

第一句很重要,用来表明这个可执行文件的解释器。

然后给这个文件加上可执行权限

代码语言:javascript
复制
chmod u+x bin/hello

最后还有一个问题,bin目录下的Python文件如何找到(import)src下的Python,一种方法是改Python路径,显然很麻烦。

另一种是在根目录下建立setup.py文件。

里面写:

代码语言:javascript
复制
## ! 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 首先把里面

代码语言:javascript
复制
catkin_python_setup()

的注释去掉,保证在catkin_make时install Python包

3.2

代码语言:javascript
复制
install(PROGRAMS bin/hello
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

找到这一句,去掉注释,在program后面加上你的可执行文件的路径名, 去掉destination注释。

4.编译

代码语言:javascript
复制
cd ~/catkin_ws
代码语言:javascript
复制
catkin_make -DCATKIN_WHITELIST_PACKAGES="my_pkg"
代码语言:javascript
复制
source ~/.bashrc
#或者运行下面一行
#source ~/devel/setup.bash
代码语言:javascript
复制
rosrun my_pkg hello 

5.附上上述源码地址。

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

发布者:全栈程序员栈长,转转请注明出处:https://javaforall.cn/2171.html原文链接:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月8日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.在工作区间建立一个package
  • 2.建立你的Python包
  • 3.修改CMakelists.txt
  • 4.编译
  • 5.附上上述源码地址。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档