Python写ROS程序常用数据结构std_msgs、geometry_msgs、sensor_msgs


ROS中有很多中数据结构,其中常用的有std_msgs、geometry_msgs、sensor_msgs,此外还有一些其他数据类型,如果想使用一些特定的数据,也可以采用自定义方式实现。

std_msgs

在Python中,可以通过下列方法导入该数据结构某个具体结构

from std_msgs.msg import Float64MultiArray

通过查看__init__.py文件,可以知道其所包含的数据结构,当我们要使用某个结构时,按上述方式,去掉_Float64MultiArray中"_",其代表的就是某个具体结构。

from ._Char import *
from ._ColorRGBA import *
from ._Duration import *
from ._Empty import *
from ._Float32 import *
from ._Float32MultiArray import *
from ._Float64 import *
from ._Float64MultiArray import *
from ._Header import *
from ._Int16 import *
from ._Int16MultiArray import *
from ._Int32 import *
from ._Int32MultiArray import *
from ._Int64 import *
from ._Int64MultiArray import *
from ._Int8 import *
from ._Int8MultiArray import *
from ._MultiArrayDimension import *
from ._MultiArrayLayout import *
from ._String import *
from ._Time import *
from ._UInt16 import *
from ._UInt16MultiArray import *
from ._UInt32 import *
from ._UInt32MultiArray import *
from ._UInt64 import *
from ._UInt64MultiArray import *
from ._UInt8 import *
from ._UInt8MultiArray import *

如何参看某个具体结构的数据结构呢?在PyCharm中,可以直接点击该结构查看其定义,如Float64MultiArray,进入_Float64MultiArray.py文件后可以看到具体内容,下面是其中的一段截取。

# This Python file uses the following encoding: utf-8
"""autogenerated by genpy from std_msgs/Float64MultiArray.msg. Do not edit."""
import sys
python3 = True if sys.hexversion > 0x03000000 else False
import genpy
import struct

import std_msgs.msg

class Float64MultiArray(genpy.Message):
  _md5sum = "4b7d974086d4060e7db4613a7e6c3ba4"
  _type = "std_msgs/Float64MultiArray"
  _has_header = False #flag to mark the presence of a Header object
  _full_text = """# Please look at the MultiArrayLayout message definition for
# documentation on all multiarrays.

MultiArrayLayout  layout        # specification of data layout
float64[]         data          # array of data

Float64MultiArray

多维数组:
MultiArrayLayout layout # specification of data layout
float64[] data # array of data

geometry_msgs

geometry_msgs主要是一些几何信息相关的数据结构,导入方式

from geometry_msgs.msg import TwistStamped

查看__init__.py文件

from ._Accel import *
from ._AccelStamped import *
from ._AccelWithCovariance import *
from ._AccelWithCovarianceStamped import *
from ._Inertia import *
from ._InertiaStamped import *
from ._Point import *
from ._Point32 import *
from ._PointStamped import *
from ._Polygon import *
from ._PolygonStamped import *
from ._Pose import *
from ._Pose2D import *
from ._PoseArray import *
from ._PoseStamped import *
from ._PoseWithCovariance import *
from ._PoseWithCovarianceStamped import *
from ._Quaternion import *
from ._QuaternionStamped import *
from ._Transform import *
from ._TransformStamped import *
from ._Twist import *
from ._TwistStamped import *
from ._TwistWithCovariance import *
from ._TwistWithCovarianceStamped import *
from ._Vector3 import *
from ._Vector3Stamped import *
from ._Wrench import *
from ._WrenchStamped import *

其中常有几个几个比较常用

Vector3

空间向量,需要用v.x、v.y、v.z来获取或修改其存储的信息
float64 x
float64 y
float64 z

Twist

六维速度(速度螺旋),由线速度和角速度组成,用两个vector3构成:
Vector3 linear # x, y, z
Vector3 angular # angular.x, angular.y, angular.z

Wrench

六维力(力螺旋),由力和力矩组成,用两个vector3构成
Vector3 force
Vector3 torque

Point

空间点信息,
float64 x
float64 y
float64 z

Quaternion

四元数, q = w + xi + yj + zk,表示旋转量
float64 x
float64 y
float64 z
float64 w

Pose

位姿,由位置和姿态组成,用来确定一个坐标系在另一个坐标系中的表示:
Point position #三维点
Quaternion orientation #四元素

Pose2D

平面位姿,由2维点和一个转角决定
float64 x
float64 y
float64 theta

_Stamped

时间戳,与时间有关的变量,例如TwistStamped
Header header #时间戳
Twist twist #速度螺旋

sensor_msgs

sensor_msgs主要包括一些传看器反馈信息的数据结构,可以通过下面方式导入某个具体数据类

from sensor_msgs.msg import JointState

查看__init__.py文件

from ._BatteryState import *
from ._CameraInfo import *
from ._ChannelFloat32 import *
from ._CompressedImage import *
from ._FluidPressure import *
from ._Illuminance import *
from ._Image import *
from ._Imu import *
from ._JointState import *
from ._Joy import *
from ._JoyFeedback import *
from ._JoyFeedbackArray import *
from ._LaserEcho import *
from ._LaserScan import *
from ._MagneticField import *
from ._MultiDOFJointState import *
from ._MultiEchoLaserScan import *
from ._NavSatFix import *
from ._NavSatStatus import *
from ._PointCloud import *
from ._PointCloud2 import *
from ._PointField import *
from ._Range import *
from ._RegionOfInterest import *
from ._RelativeHumidity import *
from ._Temperature import *
from ._TimeReference import *

JointState

关节状态,用于反馈关节的信息,机械臂的关节状态反馈常用该结构类。
Header header
string[] name
float64[] position
float64[] velocity
float64[] effort

Imu

Imu传感器反馈结构类型
Header header
geometry_msgs/Quaternion orientation
float64[9] orientation_covariance # Row major about x, y, z axes
geometry_msgs/Vector3 angular_velocity
float64[9] angular_velocity_covariance # Row major about x, y, z axes
geometry_msgs/Vector3 linear_acceleration
float64[9] linear_acceleration_covariance # Row major x, y z

  • 12
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值