# 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,以便通过函数调用和回调请求目标(在客户机端)或执行目标(在服务器端)。 ![Image text](https://gitee.com/gongjie7788/actionlib/raw/master/image/client_server_interaction.png) #### 软件架构 软件架构说明 为了让客户机和服务器通信,我们需要定义一些它们通信的消息。这是一个动作规范。这定义了客户机和服务器与之通信的目标、反馈和结果消息: `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/)