ROS学习(二)---利用Python订阅小乌龟pose话题

本文详细介绍了在ROS环境中,如何利用C++的高效性和Python的易用性,通过五个步骤创建一个功能包,包括创建工作空间、功能包、源文件、配置文件和编译测试,以实现在ROS中使用Python订阅并处理消息的过程。
摘要由CSDN通过智能技术生成

ROS环境中主要涉及C++和python两种语言环境,C++运行效率高但是编码效率低,而Python则反之,基于二者互补的特点,各有各的好处,搭配使用可以提高开发效率,但无论如何在ROS中实现都需要进行五个步骤。首先在桌面上打开一个终端。

1.创建工作空间

mkdir -p catkin_ws/src
cd catkin_ws
catkin_make

上述命令,首先会创建一个名为catkin_ws工作空间以及一个 src 子目录,然后再进入catkin_ws工作空间打开终端调用 catkin_make命令编译,这一步过后src里面回会多出两个文件:

2.创建功能包

cd src
catkin_create_pkg turtle_pose roscpp rospy std_msgs

上述命令,会在工作空间下生成一个名为turtle_pose(此名可由自定义)的功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。

3.创建源文件

ROS中py文件需要放置在scripts中,所以我们需要创建一个这样的文件。

cd turtle_pose
mkdir scripts
cd scripts
touch turtle_pose.py

 粘贴至turtle_pose.py下列代码:

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


# 该例程将订阅/turtle1/pose话题,消息类型turtlesim::Pose

import rospy
from turtlesim.msg import Pose

def poseCallback(msg):
    rospy.loginfo("Turtle pose: x:%0.6f, y:%0.6f", msg.x, msg.y)

def pose_subscriber():
	# ROS节点初始化
    rospy.init_node('pose_subscriber', anonymous=True)

	# 创建一个Subscriber,订阅名为/turtle1/pose的topic,注册回调函数poseCallback

    rospy.Subscriber("/turtle1/pose", Pose, poseCallback)

	# 循环等待回调函数
    rospy.spin()

if __name__ == '__main__':
    pose_subscriber()

 给创建好的py文件加入权限,否则无法直接运行

chmod +x turtle_pose.py

 4.创建配置文件

在刚刚已经创建好的turtle_pose文件夹中找到CmakeList.txt文件,添加配置文件,turtle_pose.py是具体的文件名称,代码如下:

catkin_install_python(PROGRAMS scripts/turtle_pose.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

5.编译执行和测试

桌面任意打开新终端,切换目录到工作空间,并进行编译。

cd catkin_ws
catkin_make

下面开始测试:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
rosrun turtle_pose turtle_pose.py

第二个指令为弹出图形化界面,第三个指令为键盘控制乌龟移动,第四个指令为获取乌龟pose文件指令。(PS:注意:光标必须聚焦在键盘控制窗口,否则无法控制乌龟运动)

        如果无法运行py文件,需注意要调用source指令,在运行py文件前,先cd到工作空间,再进行

source ./devel/setup.bash

PS:source /工作空间/devel/setup.bash可以添加进.bashrc文件,使用上更方便

添加方法

1.打开终端输入 gedit ~/.bashrc 打开文本编辑器

2.套用ps,我的是source /home/ros1/catkin_ws/devel/setup.bash,大家可以参考进行使用。

添加完成后,无需再次进行source指令的调用。

以下为指令运行后结果:

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值