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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java获取服务器路径_JAVA获取服务器路径的方法「建议收藏」

    java获取服务器路径_JAVA获取服务器路径的方法「建议收藏」1、在JSF环境中获取到ServletContext:2、servlet中获得项目绝对路径根目录所对应的绝对路径request.getServletPath();文件的绝对路径request.getSession().getServletContext().getRealPath(request.getRequestURI())当前web应用的绝对路径servletConfig.getServle…

    2022年7月11日
    41
  • vc++可以编辑c语言吗?_vc6.0使用教程详解

    vc++可以编辑c语言吗?_vc6.0使用教程详解如何编写自己的VCL控件    用过Delphi的朋友们,大概对Delphi的最喜欢Delphi的不是他的强类型的pascal语法,而是强大的VCL控件,本人就是一位VCL控件的爱好者。    VCL控件的开源,给我们带来了享之不尽的优点。不像曾经的ole控件以及ActiveX,你全然能够重写Delphhi标准控件,并且网上这方面的资源非常多。    关于怎样编写VCL控…

    2022年9月25日
    3
  • 0xffffffff颜色值是怎么读的「建议收藏」

    0xffffffff颜色值是怎么读的「建议收藏」平常看到的大多数是十六进制的,#f5f5f5。但是在自定义控件的时候,有些地方使用了像0xffffffff,这些设置颜色,在百度给的也不太明确,后来查找发现,原来是在C语言中十六进制数必需以0x开头,以0x开头的数即表明它是一个十六进制的数,真正的数是0x后的值,所以,这种颜色值,0x不用管,接着的两位数ff是表示透明度,再接着的六位数就是平常看的#ffffff了。

    2022年5月17日
    48
  • Mac上的抓包工具Charles

    Mac上的抓包工具Charles今天就来看一下Mac上如何进行抓包,之前有一篇文章介绍了使用Fidder进行抓包http://blog.csdn.net/jiangwei0910410003/article/details/19806999不过可惜的是,Fidder使用C#开发的,所以就不能在Mac上使用了,不过还有另外一个抓包神器,就是Charles,它是Java开发的,所以跨平台,不仅可以在Mac上使

    2022年5月9日
    52
  • Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)…

    Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)…

    2021年8月24日
    48
  • PHP常见面试题_php面试常问面试题

    PHP常见面试题_php面试常问面试题一.基本知识点1.1HTTP协议中几个状态码的含义:503500401403404200301302。。。200:请求成功,请求的数据随之返回。301:永久性重定向。302:暂时行重定向。401:当前请求需要用户验证。403:服务器拒绝执行请求,即没有权限。404:请求失败,请求的数据在服务器上未发现。500:服务器错误

    2022年8月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号