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)
上一篇 2020年11月8日 下午9:33
下一篇 2020年11月8日 下午9:33


相关推荐

  • OpenClaw 安装器内部机制

    OpenClaw 安装器内部机制

    2026年3月14日
    2
  • 磁盘在磁盘管理中显示没有初始化找回文件方案「建议收藏」

    磁盘在磁盘管理中显示没有初始化找回文件方案「建议收藏」磁盘没有初始化是因为0号扇区损坏,导致机械硬盘分区表读取不出来,从而机械硬盘出现磁盘没有初始化。工具/软件:极限数据恢复软件步骤1:程序打开后,直接双击需要恢复数据的物理盘。步骤2:等待程序扫描完毕大概需要几分钟到半个小时,稍微耐心等下即可。步骤3:软件扫描到资料后,软件会将扫描到的分区列出来。步骤4:勾上所有需要恢复的资料,右击选择《复制勾选的文件》,…

    2026年2月10日
    4
  • STM32 定时器的几种基本使用

    STM32 定时器的几种基本使用title STM32 外设 Timer 定时器 date 2020 05 2014 43 52tags categories STM32 学习记录对定时器的基本认识先来看看这种 MCU 有多少定时器 定时器分为 3 类 基本定时器的功能最少 只能充当基本的时基 甚至都没有外部引脚 通用定时器拥有基本定时器的全部功能 同时有输入捕获模式 用以接收外部的 PWM 脉冲之类的信息 也有高级定时器又有通用定时器的全部功能 又有互补输出模式 功能最为强大先具体看一下夹在中间的通用定时器的官方文

    2026年2月23日
    2
  • JavaScript事件循环机制

    JavaScript事件循环机制众所周知 JS 是一门单线程执行环境的语言 对于同步任务而言 同一时刻只能执行一个任务 后续的任务都要在当前执行的任务后面排队 这种模式在遇到一些执行时间较长的任务的时候就会出问题 会导致页面失去响应 所以这些时间较长的任务我们在编写的时候一般会把他们用异步的方式去调用 并指定任务完成时对结果进行后续处理的回调函数 而 JS 的事件循环机制就是负责对这些同步任务和异步任务的执行顺序进行调度的 Ja

    2026年3月17日
    2
  • 空降OpenAI 智能体榜单第一名的FM Agent什么来头,有哪些信息值得关注?

    空降OpenAI 智能体榜单第一名的FM Agent什么来头,有哪些信息值得关注?

    2026年3月16日
    3
  • SQL函数大全汇总

    SQL函数大全汇总SQL 中包含以下七种类型的函数 一 聚合函数聚合函数 返回汇总值 它对其应用的每个行集返回一个值 AVG 表达式 返回表达式中所有的平均值 仅用于数字列并自动忽略 NULL 值 COUNT 表达式 返回表达式中非 NULL 值的数量 可用于数字和字符列 COUNT 返回表中的行数 包括有 NULL 值的列 MAX 表达式 返回表达式中的最大值 忽略 NULL 值 可用于数字 字符和日期时间列 MIN 表达式 返回表达式中的最小值 忽略 NULL 值 可用于数字 字符和日期

    2026年3月19日
    2

发表回复

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

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