创建、编译ros package

使用catkin创建新的package

Catkin是ROS的一个官方的编译构建系统,使用catkin可以创建和编译ros包。

一个catkin package必须包含以下几个内容:

Package.xml 提供包的属性信息;

CmakeLists.txt 包含相关性样板文件;

拥有自己独立的文件夹(工作空间)。

创建一个文件夹作为工作空间:  mkdir  ~/catkin_ws

在工作空间中创建一个文件夹存放源文件: mkdir src

当工作空间中包含多个包的时候,形成的文件结构如下:

workspace_folder/        -- WORKSPACE
  src/                   -- SOURCE SPACE
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
    ...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

创建一个catkin package语法格式:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

例如:catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

在工作空间中编译catkin package

$ cd ~/catkin_ws     

#有时候单独执行这个无效
$ catkin_make

#或者单独只编译一个包
catkin_make -DCATKIN_WHITELIST_PACKAGES="pack_name"

#这时需要编译全部功能包,
catkin_make -DCATKIN_WHITELIST_PACKAGES=""

#或者在双引号内加入你需要编译的包
catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name1;package_name2"

将工作空间添加至ROS环境

source devel/setup.bash  

避免每次打开terminal都要重新source,可以修改~/.bashrc文件,将上述语句添加至最后一行即可。

查看包的直接依赖关系

rospack depends1 package     将得到再创建时添加的直接依赖关系。

查看包的所有依赖关系(包括直接以来和间接依赖)

rospack depends package

详解package.xml 文件

<?xml version="1.0"?>
<package>
<name>beginner_tutorials</name>
<version>0.1.0</version>
<description>The beginner_tutorials package</description>
 <maintainer email="you@yourdomain.tld">Your Name</maintainer>
 <license>BSD</license>
<url type="website">http://wiki.ros.org/beginner_tutorials</url>
<author email="you@yourdomain.tld">Jane Doe</author>
 <buildtool_depend>catkin</buildtool_depend>  <build_depend>roscpp</build_depend>   <build_depend>rospy</build_depend>  <build_depend>std_msgs</build_depend>   <run_depend>roscpp</run_depend>
 <run_depend>rospy</run_depend>   <run_depend>std_msgs</run_depend>
</package>

详解CMakeLists.txt文件(除去注释后的内容)

cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)
 
## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs genmsg)
 
## Declare ROS messages and services
add_message_files(DIRECTORY msg FILES Num.msg)
add_service_files(DIRECTORY srv FILES AddTwoInts.srv)
 
## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)
 
## Declare a catkin package
catkin_package()

这里的catkin_package() 一定要注意

catkin_package(
# INCLUDE_DIRS include
# LIBRARIES ros_bridge
# CATKIN_DEPENDS roscpp rospy std_msgs
# DEPENDS system_lib
)

看起来像是没什么用,里面都被注释掉了,但是如果没有这个,包将不会被添加到catkin环境中去

在包中添加添加新的节点

在catkin_ws/src中新建节点文件夹test_node,并在test_node下新建src文件夹存放源码文件test_node.cpp,内容暂且不管。

修改CMakeList.txt文件,末尾添加

include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(test_node src/test_node.cpp)
target_link_libraries(test_node ${catkin_LIBRARIES})

一般来说find_package,include_directories,target_link_libraries是一起出现的。例如catkin。

同理,我们在添加其他包的时候,也要注意是否需要三个一起添加。

find

调用该节点

rosrun 【packname】 【nodename】

rosrun beginner_tutorials test_node

安装ROS依赖项

rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

它的作用是安装ROS依赖项。具体来说,它会从src文件夹中安装所有依赖项,忽略src文件夹中已经存在的依赖项,并且使用kinetic版本的ROS。最后的-y选项表示自动确认安装。

在执行这句话的时候会报一些错误,表示依赖有问题,需要手动执行安装。

有以下几种解决办法:

1. 下载源码到src文件夹,并重新执行

编译出现的错误:

Could not find a package configuration file provided by "×××" with any of the following names

这个也是缺少依赖导致的,下载源码到src文件夹,并重新执行

或者

使用sudo apt-get install ros-noetic-×××(noetic根据具体的ros版本而定)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 编译ROS2的工程可以按照以下步骤进行: 1. 首先,需要安装ROS2的开发环境。具体安装方法可以参考ROS2官方文档。 2. 打开终端,进入ROS2的工作空间目录。 3. 运行以下命令,使用colcon工具编译工程: ``` colcon build --symlink-install ``` 这个命令会在当前工作空间目录下创建build和install两个目录,并在build目录下编译源代码,并将编译后的可执行文件和库文件安装到install目录下。 4. 如果编译成功,可以使用以下命令运行工程: ``` . install/setup.bash ros2 run package_name executable_name ``` 其中,package_name是工程的名,executable_name是要运行的可执行文件名。 注意:编译ROS2工程需要安装ROS2的开发环境,并且需要保证工程的依赖项已经安装。如果编译出现错误,可以根据错误信息进行排查和修复。 ### 回答2: 编译ROS 2的工程可以按照以下步骤进行: 1. 安装ROS 2:首先,您需要在您的计算机上安装ROS 2。您可以访问ROS 2官方网站,按照指导下载适合您操作系统版本的ROS 2安装,并按照安装说明进行安装。 2. 创建工作空间:在您的计算机上创建一个ROS 2工作空间,以便用于编译和管理ROS 2工程。可以使用以下命令创建一个的工作空间: ``` mkdir -p ~/ros2_ws/src cd ~/ros2_ws ``` 3. 下载ROS 2:在src目录下使用git clone或者其他方式下载所需的ROS 2软件,这些将构成最终工程。您可以访问ROS 2官方仓库或其他可用的第三方仓库来获取您需要的软件。 4. 安装依赖项:在编译ROS 2工程之前,您需要确保您的系统已安装所有所需的依赖项。可以使用以下命令安装ROS 2运行时和开发工具的依赖项: ``` sudo apt install -y python3-rosdep2 rosdep update rosdep install --from-path src --ignore-src -y ``` 5. 构建工程:一旦所有依赖项都被安装,您可以使用以下命令构建ROS 2工程: ``` source /opt/ros/dashing/setup.bash colcon build --symlink-install ``` 6. 激活工程:构建完成后,在的终端窗口中,可以使用以下命令激活ROS 2工程以便使用: ``` source ~/ros2_ws/install/setup.bash ``` 7. 运行工程:现在您可以编写和运行ROS 2节点和。通过使用ROS 2命令行工具或编程语言的API,您可以启动、订阅和发布消息,以及与其他节点进行通信。 请注意,以上步骤提供了一个基本的示例,实际情况可能因ROS 2的版本、工程需求和操作系统的不同而有所变化。在开始编译ROS 2工程之前,建议仔细阅读官方文档并遵循其中的具体说明。 ### 回答3: 编译ROS 2工程需要以下步骤: 1. 安装ROS 2:首先,您需要按照ROS 2的官方指南进行安装。根据您的操作系统,选择合适的安装方法,并正确设置环境变量。 2. 创建ROS 2工程:使用ROS 2提供的命令行工具创建一个ROS 2工程。例如,可以使用`ros2 pkg create`命令创建一个,并在其中编写源代码。 3. 编写源代码:在工程的中,您可以创建您的源代码文件。ROS 2支持C++和Python。您可以编写节点、服务、发布器和订阅器等等。 4. 编写CMakeLists.txt文件:在工程的根目录中,创建一个名为`CMakeLists.txt`的文件。在其中,您需要指定编译工程所需的依赖项、源文件和其他编译选项。 5. 配置编译环境:使用ROS 2提供的命令行工具,选择要编译的工程并配置编译环境。例如,可以使用`colcon build`命令配置编译环境。 6. 编译工程:运行编译命令开始编译工程。ROS 2使用colcon作为默认的构建系统。例如,可以使用`colcon build`命令编译工程。 7. 运行工程:完成编译后,可以使用ROS 2的命令行工具运行您的工程。使用`ros2 run`命令运行节点,`ros2 service call`命令调用服务等等。 请注意,以上步骤仅为一般的编译ROS 2工程的过程。具体步骤和命令可能会因为您的使用情境而有所变化。建议您参考ROS 2的官方文档和教程以获取更详细的信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHAO_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值