ros实验三:创建动作节点

步骤 1: 创建ROS动作文件

1.打开终端。

2.进入你的ROS包的目录

cd ~/catkin_ws/src/your_package_name

3.在该目录下创建一个名为 action 的文件夹

mkdir action

4.进入 action 文件夹

cd action

5.创建一个名为 DetectParts.action 的文件,并使用文本编辑器打开它:

touch DetectParts.action
gedit DetectParts.action

6.在编辑器中添加以下内容作为 DetectParts.action 文件的内容:

float32 progress
---
---

步骤 2: 编写服务端代码

创建一个服务端节点,用于接收动作请求并模拟检测零件的过程。 

#!/usr/bin/env python

import rospy
import actionlib
from your_package_name.msg import DetectPartsAction, DetectPartsGoal, DetectPartsResult

class DetectPartsServer:
    def __init__(self):
        self.server = actionlib.SimpleActionServer('detect_parts', DetectPartsAction, self.execute, False)
        self.server.start()

    def execute(self, goal):
        rate = rospy.Rate(1)  # 1 Hz
        progress = 0.0

        for i in range(40):
            progress += 2.5
            rospy.loginfo('Detecting part %d' % (i + 1))
            feedback = DetectPartsFeedback()
            feedback.progress = progress
            self.server.publish_feedback(feedback)
            rate.sleep()

        result = DetectPartsResult()
        self.server.set_succeeded(result)

if __name__ == '__main__':
    rospy.init_node('detect_parts_server')
    server = DetectPartsServer()
    rospy.spin()

解决文件限权问题:

chmod +x detect_parts_server.py

步骤 3: 编写客户端代码

创建一个客户端节点,用于发送动作请求并接收动作反馈

#!/usr/bin/env python

import rospy
import actionlib
from your_package_name.msg import DetectPartsAction, DetectPartsGoal, DetectPartsFeedback

def feedback_callback(feedback):
    rospy.loginfo('Progress: %.1f%%' % feedback.progress)

def detect_parts_client():
    client = actionlib.SimpleActionClient('detect_parts', DetectPartsAction)
    client.wait_for_server()

    goal = DetectPartsGoal()
    client.send_goal(goal, feedback_cb=feedback_callback)

    client.wait_for_result()

    rospy.loginfo('Detection completed.')

if __name__ == '__main__':
    rospy.init_node('detect_parts_client')
    detect_parts_client()

解决文件限权问题:

chmod +x detect_parts_client.py

步骤 4: 编译和运行代码

确保ROS包已经编译,然后分别启动服务端和客户端节点:

catkin_make
roscore
rosrun your_package_name detect_parts_server.py
rosrun your_package_name detect_parts_client.py

结果体现:

补充说明:

1.动作消息文件(DetectParts.action): 定义了动作的请求、反馈和结果。

2.服务端节点(detect_parts_server.py): 创建了一个接收动作请求的简单动作服务器,并模拟检测40个零件的过程。每隔1秒钟发布一次检测进度反馈。

3.客户端节点(detect_parts_client.py): 创建了一个简单的动作客户端,发送动作请求,并在检测完成时打印消息。同时,订阅了动作反馈,实时打印检测进度。

设置环境变量

要设置环境变量,你可以编辑你的shell配置文件,通常是 .bashrc(对于Bash shell)或 .zshrc(对于Zsh shell)。以下是设置环境变量的一般步骤:

1.打开终端。

使用文本编辑器打开你的shell配置文件。如果你使用的是Bash shell,可以运行以下命令:

gedit ~/.bashrc

如果你使用的是Zsh shell,可以运行以下命令:

gedit ~/.zshrc

在打开的文件中,找到一个适合设置环境变量的地方。通常,你可以在文件的末尾添加新的环境变量设置。

添加你想要设置的环境变量。例如,如果你想要将 ROS_MASTER_URI 设置为 http://localhost:11311,则可以在文件中添加以下行:

export ROS_MASTER_URI=http://localhost:11311

确保替换 http://localhost:11311 为你实际想要设置的值。

保存文件并退出编辑器。

重新启动终端,或者运行以下命令来使你的shell配置文件生效:

source ~/.bashrc   # 如果你使用的是Bash shell

source ~/.zshrc    # 如果你使用的是Zsh shell

现在,你设置的环境变量就会在终端会话中生效了。

请注意,在设置环境变量之后,记得在终端中运行 echo $ROS_MASTER_URI(假设你设置的是 ROS_MASTER_URI)来验证该环境变量是否已经成功设置。

安装缺失rospkg模块

方法一:使用apt安装:

sudo apt-get update

sudo apt-get install python-rospkg

方法二:使用pip安装:

pip install rospkg

下面是完成这个实验所需的依赖包:

rospy:ROS Python 客户端库

actionlib:ROS 动作库,用于创建和处理动作消息

std_msgs:ROS 标准消息包,包含常用的消息类型

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值