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

2023-05-16

Python写ROS程序常用数据结构

  • std_msgs
    • Float64MultiArray
  • geometry_msgs
    • Vector3
    • Twist
    • Wrench
    • Point
    • Quaternion
    • Pose
    • Pose2D
    • _Stamped
  • sensor_msgs
    • JointState
    • Imu

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python写ROS程序常用数据结构std_msgs、geometry_msgs、sensor_msgs 的相关文章

随机推荐

  • linux小知识:修改/etc/profile全局变量文件出错,导致服务命令全部失效解决方案

    现象 xff1a 由于修改profile文件时改错了 xff0c 导致所有的命令都失效了 赶紧解决赶紧解决 1 在当前窗口执行以下命令 export PATH 61 usr local sbin usr local bin sbin bin
  • docker容器如何迁移

    docker容器如何迁移 xff1f 前言 xff1a 迁移容器涉及到备份和恢复 xff0c 可以将任何一个docker容器从一台机器迁移到另一台机器 在迁移过程中 xff0c 首先将把容器备份为Docker镜像快照 然后 xff0c 该D
  • 缓存IO和直接IO的区别

    1 缓存IO 缓存I O又被称作标准I O xff0c 大多数文件系统的默认I O操作都是缓存I O 在Linux的缓存I O机制中 xff0c 数据先从磁盘复制到内核空间的缓冲区 xff0c 然后从内核空间缓冲区复制到应用程序的地址空间
  • 修改svn的配置文件并对密码加密

    svn管理 公司项目进出新人 xff0c 需要对代码管理工具进行增删 由于对linux不是很了解 对svn的配置有没有进行过交接 所有的操作都是自己在centos服务器上进行尝试 对于普通的svn的账号密码管理有了基本了解 但是在服务器上看
  • deepin安装微信qq

    在网页上下载最新微信或者qq env WINEPREFIX 61 deepinwine Deepin WeChat deepin wine WeChatSetup exe 该命令运行在WeChatSetup exe所在文件夹 xff0c 最
  • 在Java中,执行SQL查询到数据后,存储在哪里了?

    前言 xff1a 我们项目运行过程中 xff0c 肯定会有查询数据库这步操作 xff0c 无论你是MySQL还是Oracle 那么这种情况就必须搞清楚 xff0c 从数据库里查询得到的数据默认存储到哪了 xff0c 为什么一次查询过多的数据
  • Java小知识:摆脱BeanUtil.copyProperties!! 最优的替代方案 -Bean Converter插件使用方式来了~

    前言 xff1a 开发中为什么不推荐使用BeanUtil copyProperties xff1f 使用BeanUtil copyProperties会有哪些严重后果 xff1f 这些就不在这里眼神了哈 xff0c 大家可以自行查阅一下即可
  • Vue小知识: $ is not defined错误解决

    错误原因 xff1a 该错误是未安装JQuery依赖包导致 解决方案 xff1a 安装依赖包 1 执行安装jquery依赖包命令 cnpm install jquery save 2 webpack配置 xff08 1 xff09 在项目根
  • JVM小知识:linux 命令查看jvm堆内存信息

    1 查看当前java进程的pid pgrep lf java 2 查看java堆的详细信息 jmap heap PID 3 查看java堆中对象的相关信息 xff0c 包含数量以及占用的空间大小 jmap histo PID 4 查看监控
  • IDEA小知识:查看内存使用情况的步骤

    1 展示idea自带的内存指标 xff0c 如图 1 图 2 点击File gt 选择Setting gt 进入APPearance gt 勾选Show memory indicator 图 xff08 1 xff09 图 xff08 2
  • 【无标题】

    CMake Error at xxaipkg CMakeLists txt 50 add message files Unknown CMake command add message files Configuring incomplet
  • npm安装淘宝镜像报错

    npm install g cnpm registry 61 https registry npm taobao org 执行命令报错 无法安装cnpm 解决方案 xff1a 用管理员方式打开命令行 xff0c 就可以安装成功了
  • Leetcode——贪心算法(c++和java实现)

    本来有一段时间没有刷题了 xff0c 但是突然发现了这本书LeetCode 101 A LeetCode Grinding Guide C 43 43 Version xff0c 感觉真不错 xff0c 思路简单清晰 xff0c 没有过多的
  • 树莓派3B+安装c++版本opencv3.4.1,配置开发环境以及注意事项

    树莓派3B 43 安装c 43 43 版本opencv3 4 1 xff0c 配置开发环境以及注意事项 树莓派3B 43 ubuntu mate系统的安装 树莓派 xff0c Raspberry Pi xff0c 是一个只有信用卡大小的微型
  • 由frankmocap得到的.pkl文件转为.bvh或者.fbx

    需求 由Frankmocap所得到的 pkl文件转为blender里的 bvh或者Maya里的 fbx Frankmocap github项目地址 2D转3D转 bvh可以看VideoTo3dPoseAndBvh xff0c bvh转3D相
  • centos 安装docker

    查看系统内核版本 docker需要内核版本在3 8以上 centos7 版本是3 10 安装支持aufs CentOS7 默认不支持aufs文件系统 需要自己安装支持aufs的内核 进入repo目录 cd etc yum repo d 下载
  • echarts框架下大数据量展示的解决方案

    echarts 43 大数据量 这是个无解的问题 xff01 大数据量 xff0c 什么样的数据才算大呢 xff1f 在echart 4 5 0版本中 xff0c 画折线图 xff0c 数据线一共1001000条 xff0c 每条数据500
  • Open vSwitch介绍

    Open vSwitch介绍 1 vSwitch功能2 OvS架构3 OvS报文处理3 1 传统OvS方式3 2 OvS 43 DPDK处理方式 4 OvS补充说明4 1 基本概念4 2 匹配项与规则4 2 1 匹配项4 2 2 动作 本节
  • Python写ROS话题

    Python写ROS话题 导入ROS模块发送话题接收话题第一种方式 xff1a rospy Subscriber第二种方式 xff1a rospy wait for message完整程序 多线程处理同时接受多个话题 导入ROS模块 用py
  • Python写ROS程序常用数据结构std_msgs、geometry_msgs、sensor_msgs

    Python写ROS程序常用数据结构 std msgsFloat64MultiArray geometry msgsVector3TwistWrenchPointQuaternionPosePose2D Stamped sensor msg