Ubuntu ROS 创建功能包

本文详细介绍如何在Ubuntu系统中使用ROS创建功能包,包括C++和Python的包结构创建、依赖配置、消息和服务定义等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu ROS 创建功能包

创建包结构

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
catkin config --cmake-args -DCMAKE_CXX_STANDARD=17 -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=YES
cd src
catkin_create_pkg <your-package> std_msgs roscpp rospy genmsg

for C++

vi <your-package>/src/<your-code-file>.cpp

for Python

mkdir <your-package>/bin
mkdir <your-package>/src/<your-subpackage-name>
touch <your-package>/bin/<your-run-code-file-name>
chmod u+x <your-package>/bin/<your-run-code-file-name>
touch <your-package>/src/<your-subpackage-name>/__init__.py
vi <your-package>/src/<your-subpackage-name>/<your-code-file>.py

修改 CMakelists.txt

运行

vi <your-package>/CMakelists.txt

修改为

cmake_minimum_required(VERSION 3.0.2)
project(<your-package>)

#for c++
add_compile_options(-std=c++17)

#find include file
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  genmsg
)

#add srv file
add_service_files(
	FILES
	<your-service-name>.srv
)

#add msg file
add_message_files(
	FILES
	<your-message-name>.msg
)

#for python
#python package setup
catkin_python_setup()

#generate srv code
generate_messages(
	DEPENDENCIES
	<your-.srv-file-depended-msg-namespace>
)

catkin_package()

include_directories(include ${catkin_INCLUDE_DIRS})
 
 #for c++
add_executable(<your-package> src/<your-code-file>.cpp)
target_link_libraries(<your-package> ${catkin_LIBRARIES})

#for python
catkin_install_python(PROGRAMS
  bin/<your-run-code-file-name>
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

运行

vi <your-package>/package.xml

在合适的位置添加

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

for Python

运行

vi <your-package>/setup.py

添加

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

## ! 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=['<your-subpackage-name>'],
    package_dir={'': 'src'},
)

setup(**setup_args)

添加代码引用

for Python

vi <your-package>/bin/<your-run-code-file-name>

通过

import <your-subpackage-name>.<your-code-file>

来实现 python 文件的引用

编译

catkin build <your-package>

尽情享用吧~