# actionlib
**Repository Path**: src-openeuler/actionlib
## Basic Information
- **Project Name**: actionlib
- **Description**: 本项目已经迁移至 AtomGit || This project has been migrated to AtomGit || Linked: https://atomgit.com/src-openeuler/actionlib
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2020-10-15
- **Last Updated**: 2025-12-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: sig-ROS
## README
# Notice: This project has been migrated to [AtomGit](https://atomgit.com/src-openeuler/actionlib)
# 通知: 本项目已经正式迁移至 [AtomGit](https://atomgit.com/src-openeuler/actionlib) 平台
# actionlib
#### 介绍
在任何基于ROS的大型系统中,都会有这样的情况:有人希望向节点发送一个请求来执行某项任务,同时也会收到对该请求的回复。目前可以通过ROS服务实现。
但是,在某些情况下,如果服务需要很长时间才能执行,用户可能希望能够在执行过程中取消请求,或者获得有关请求进展情况的定期反馈。actionlib包提供了创建服务器的工具,这些服务器执行可以抢占的长期目标。它还提供了一个客户端接口,以便向服务器发送请求。
ActionClient和ActionServer通过建立在ROS消息之上的“ROS操作协议”进行通信。然后,客户机和服务器为用户提供一个简单的API,以便通过函数调用和回调请求目标(在客户机端)或执行目标(在服务器端)。

#### 软件架构
软件架构说明
为了让客户机和服务器通信,我们需要定义一些它们通信的消息。这是一个动作规范。这定义了客户机和服务器与之通信的目标、反馈和结果消息:
`Goal`
为了使用动作完成任务,我们引入了一个目标的概念,这个目标可以由ActionClient发送到ActionServer。在移动基地的情况下,目标将是一个posestamp消息,其中包含有关机器人应该移动到世界上哪里的信息。为了控制倾斜激光扫描仪,目标将包含扫描参数(最小角度、最大角度、速度等)。
`Feedback`
反馈为服务器实现者提供了一种方法来告诉ActionClient目标的增量进度。对于移动基座,这可能是机器人沿路径的当前姿势。为了控制倾斜激光扫描仪,这可能是扫描完成前的剩余时间。
`Result`
完成目标后,结果将从ActionServer发送到ActionClient。这与反馈不同,因为反馈只发送一次。当行动的目的是提供某种信息时,这是非常有用的。对于move-base,结果不是很重要,但它可能包含机器人的最终姿势。为了控制倾斜激光扫描仪,结果可能包含从请求的扫描生成的点云。
文件内容:
```
actionlib/
├── action
├── actionlib
├── CHANGELOG.rst
├── CMakeLists.txt
├── docs
├── include
├── mainpage.dox
├── package.xml
├── setup.py
├── src
└── test
```
#### 安装教程
1. 下载rpm包
aarch64:
wget https://117.78.1.88/build/home:davidhan:branches:openEuler:22.03:LTS/standard_aarch64/aarch64/ros-noetic-ros-actionlib/ros-noetic-ros-actionlib-1.13.2-3.oe2203.aarch64.rpm
x86_64:
wget https://117.78.1.88/build/home:davidhan:branches:openEuler:22.03:LTS/standard_x86_64/x86_64/ros-noetic-ros-actionlib/ros-noetic-ros-actionlib-1.13.2-3.oe2203.x86_64.rpm
2. 安装rpm包
aarch64:
sudo rpm -ivh ros-noetic-ros-actionlib-1.13.2-3.oe2203.aarch64.rpm --nodeps --force
x86_64:
sudo rpm -ivh ros-noetic-ros-actionlib-1.13.2-3.oe2203.x86_64.rpm --nodeps --force
#### 使用说明
依赖环境安装:
sh /opt/ros/noetic/install_dependence.sh
安装完成以后,在/opt/ros/noetic/目录下有如下输出,则表示安装成功
输出:
```
actionlib
├── cmake.lock
├── env.sh
├── include
│ └── actionlib
│ ├── TestActionFeedback.h
│ ├── TestActionGoal.h
│ ├── TestAction.h
│ ├── TestActionResult.h
│ ├── TestFeedback.h
│ ├── TestGoal.h
│ ├── TestRequestActionFeedback.h
│ ├── TestRequestActionGoal.h
│ ├── TestRequestAction.h
│ ├── TestRequestActionResult.h
│ ├── TestRequestFeedback.h
│ ├── TestRequestGoal.h
│ ├── TestRequestResult.h
│ ├── TestResult.h
│ ├── TwoIntsActionFeedback.h
│ ├── TwoIntsActionGoal.h
│ ├── TwoIntsAction.h
│ ├── TwoIntsActionResult.h
│ ├── TwoIntsFeedback.h
│ ├── TwoIntsGoal.h
│ └── TwoIntsResult.h
├── lib
│ ├── actionlib
│ ├── libactionlib.so
│ ├── pkgconfig
│ │ └── actionlib.pc
│ └── python2.7
│ └── dist-packages
├── local_setup.bash
├── local_setup.sh
├── local_setup.zsh
├── setup.bash
├── setup.sh
├── _setup_util.py
├── setup.zsh
└── share
├── actionlib
│ ├── cmake
│ └── msg
├── common-lisp
│ └── ros
├── gennodejs
│ └── ros
└── roseus
└── ros
```
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)