建立一个python的ROS功能包

介绍

ROS的功能功能包可以用C++来写,也可以用python来写,有的功能通过python实现比较简单,所以就通过python来编写功能包,这里记录一下我编写python版的ROS功能包的方法
参考博客:原文链接

创建功能包

在自己的工作空间下面,创建功能包:

cd catkin_ws/src
catkin_create_pkg pc_connect rospy
cd pc_connect
touch setup.py
mkdir -p src/connect
touch setup.py
cd src/connect
touch __init__.py
touch pc_pub.py pc_sub.py connect.py

我这里就着我做的网路通信上位机这个功能来举例子了,ROS功能包叫pc_connect,在这个功能包下面,其中有订阅ROS话题,有发布ROS话题,有网络通信这几个功能,我把这几个功能模块封装成一个python包,叫做connect

配置__init__.py

在__init__.py中加入:

__all__=['pc_pub.py' 'pc_sub.py' 'connect.py']

这样其他外部模块就可以通过from pc_connect import*来导入这个python包了

配置ROS编译环境

修改pc_connect功能包的CMakeList.txt文件:

cmake_minimum_required(VERSION 3.0.2)
project(py_pkg_1)
 
find_package(catkin REQUIRED COMPONENTS
  rospy
)
catkin_python_setup()

这里其实就是将功能包创建时生成的默认文件中catkin_python_setup()取消注释而已。这一行是告诉catkin编译工具这里面有python的包要安装,这样catkin在编译时就会在这个功能包的根目录下自动寻找setup.py文件并执行了。

编辑setup.py

setup.py文件用于将python包安装到ROS环境,这个setup.py经过了catkin的一层封装变得更为简洁了,其实它的底层调用的是python的distutils包实现安装的。关于使用distutils进行python包的安装及发布可以参考这篇文章

from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
 
d = generate_distutils_setup(
    packages=['connect'],
    package_dir={'': 'src'}
)
 
setup(**d)

packages代表你想要安装的python包
package_dir描述的是python包的存放路径,这个必须得写否则你的python包只能放在setup.py的同级目录
setup(**d)其实就是调用distutils包的setup模块

编译工作空间

catkin_make -j8

建一个可执行的python文件,导入模块

在其中加入:

#!/usr/bin/env python
# coding=utf-8
# -*- coding: utf-8 -*-

import rospy
from pc_connect import*

这样这个pytho程序就可以使用connect中的功能功能了

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值