Offboard例程的python版本

2023-05-16

因为python的库很丰富,有现成的解方程库,比如sympy。
自己写了一份python版本的自动起飞2m的程序。
假设自定义的包名为offb,在offb下新建scripts文件夹,将py文件放在这个文件夹下,文件名为take_off.py。
python代码为:

#!/usr/bin/env python

import rospy
from mavros_msgs.msg import State, PositionTarget
from geometry_msgs.msg import PoseStamped
from mavros_msgs.srv import CommandBool
from mavros_msgs.srv import SetMode

def Intarget_local():
    set_target_local = PositionTarget()
    set_target_local.type_mask=0b100111111000
    set_target_local.coordinate_frame=1
    set_target_local.position.x=0
    set_target_local.position.y=0
    set_target_local.position.z=2
    return set_target_local

current_state = State()
def state_cb(msg):
    global current_state
    current_state = msg

current_pos= PoseStamped()
def  pos_cb(msg):
    global current_pos 
    current_pos = msg

if __name__ == "__main__":
    rospy.init_node("multi_uav")
    rospy.Subscriber("/mavros/state", State, state_cb, queue_size=10)
    rospy.Subscriber("/mavros/local_position/pose", PoseStamped, pos_cb,queue_size=10)
    armServer = rospy.ServiceProxy('/mavros/cmd/arming', CommandBool)
    setModeServer = rospy.ServiceProxy('/mavros/set_mode', SetMode)
    local_target_pub = rospy.Publisher('/mavros/setpoint_raw/local', PositionTarget, queue_size=10)

    rate = rospy.Rate(20.0)

    Position_Target = PositionTarget()
    Position_Target = Intarget_local()
    
    while not rospy.is_shutdown():
        if current_state.mode != "OFFBOARD" :
            setModeServer(custom_mode='OFFBOARD')
            local_target_pub.publish(Position_Target)
            print("Offboard enabled")
        else:
            if not current_state.armed:
                armServer(True) 
                print("Vehicle armed")
            else:
                local_target_pub.publish(Position_Target)
                print("x:%f,y:%f,z:%f" %(current_pos.pose.position.x,current_pos.pose.position.y,current_pos.pose.position.z))
        
        rate.sleep()        

同时修改Cmakelists文件

## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
catkin_install_python(PROGRAMS
  scripts/take_off.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

修改py文件的可执行性

chmod +x *.py

运行节点

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

Offboard例程的python版本 的相关文章

  • 当包含非 ASCII 字符时,无法使用 lambda S3 事件给出的密钥

    我有一个 Python lambda 脚本 可以在图像上传到 S3 时缩小图像 当上传的文件名包含非 ASCII 字符 在我的例子中是希伯来语 时 我无法获取该对象 禁止 就好像该文件不存在一样 这是我的 一些 代码 s3 client b
  • pexpect 和 ssh:如何在 su - root -c 之后格式化一串命令

    我正在尝试迭代服务器和密码列表来更改一组服务器上的 sshd 配置 以便我可以使用无密码 SSH 密钥通过 root 登录 运行命令 我可以在 bash 中轻松完成此操作 但我正在尝试学习 Python 并且 显然 希望放弃手动输入密码 这
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • 按位置对 MultiIndex pandas DataFrame 进行切片

    我目前正在尝试按位置对具有三个级别的多索引数据帧进行切片 我正在使用熊猫 19 1 Level0 Level1 Level2 Value 03 00368 A Item111 6 9 03 00368 A Item333 19 2 03 0
  • 确定非空列表条目是否“连续”的 Pythonic 方法

    我正在寻找一种方法来轻松确定列表中所有非 None 项目是否出现在单个连续切片中 我将使用整数作为非 None 项目的示例 例如 列表 None None 1 2 3 None None 满足我对连续整数条目的要求 相比之下 1 2 Non
  • 我如何在 ruby​​ 中执行范围正则表达式,例如 awk /start/,/stop/

    我想做一个 AWK 风格的范围正则表达式 如下所示 awk hoststatus file 在 AWK 中 这将打印文件中两个模式之间的所有行 hoststatus host name myhost modified attributes
  • 计算具有不同 x 值的 y 值的平均值

    我试图计算平均值y来自不同的数组 例如np mean axis 1 但与不同的x values 生产x and y数组 我使用的代码如下 x1 np arange 10 x2 np arange 10 1 x3 np arange 10 2
  • 字典损坏了键的名称 [Python]

    我的问题是 当我输入带重音的输入时 字典会存储不同的键名 它会用字符代码替换重音字符 我是新来的 我接受一切帮助 感谢您的帮助 usr bin python coding utf 8 products try prodNum int raw
  • 使用 Pyinstaller 制作 exe 文件时出现问题(使用 tkinter 和 Custom tkinter 制作的文件)

    我正在尝试使用 tkinter 和自定义 tkinter 制作一个用于数据输入的小型应用程序 代码在 python 中运行良好 我使用它制作了 exe 文件 pyinstaller onefile noconsole try45 py 但在
  • 快速NLTK解析成语法树

    我正在尝试将数百个句子解析为语法树 我需要快速完成 问题是如果我使用 NLTK 那么我需要定义一个语法 而我不知道我只知道它会是英语 我尝试使用this https github com emilmont pyStatParser统计解析器
  • matplotlib 绘图,然后等待原始输入

    我正在尝试打开一系列 png 图 我希望能够在屏幕上查看绘图 然后收到提示 等待我 按 Enter 按回车键后 应显示下一个图 我见过很多类似的问题 Matplotlib 强制绘图显示然后返回主代码 https stackoverflow
  • 屏幕截图中低分辨率文本的 OCR

    我正在编写一个 OCR 应用程序来从屏幕截图图像中读取字符 目前 我只关注数字 我的方法部分基于这篇博文 http blog damiles com 2008 11 basic ocr in opencv http blog damiles
  • 我从 clojure 和 python 中得到的 hmac 签名略有不同

    我从 python 实现和 clojure 实现中获得的 HMAC SHA1 签名略有不同 我很困惑什么会导致这种情况 Python实现 import hashlib import hmac print hmac new my key my
  • 如何在 Pandas 中叠加“一天”内的数据进行绘图

    我有一个数据框 里面有一些 更有意义 数据格式如下 In 67 df Out 67 latency timestamp 2016 09 15 00 00 00 000000 0 042731 2016 09 15 00 16 24 3769
  • 使用 NumPy 查找元组列表第二个元素的中位数

    假设我有一个元组列表 如下所示 list a 1 b 3 c 5 我的目标是使用元组的第二个元素来获取元组列表中位数的第一个元素 在上面的情况下 我想要 b 的输出 因为中位数是 3 我尝试使用 NumPy 和以下代码 但无济于事 impo
  • 维基百科与 Python

    我有这个非常简单的 python 代码来读取 wikipedia api 的 xml import urllib from xml dom import minidom usock urllib urlopen http en wikipe
  • 如何在matplotlib_venn中将维恩图保存为PNG图

    使用以下代码我尝试创建维恩图 然后另存为文件 import matplotlib from matplotlib venn import venn2 set1 set A B C D set2 set B C D E plt venn2 s
  • 在ubuntu 18.04上安装python 2.7

    有没有办法在 Ubuntu 18 04 上安装 Python 2 7 我尝试了这个命令 但它不起作用 sudo apt install python minimal 有没有办法手动安装 我尝试使用 python 2 7 作为不支持 pyth
  • 在python中求Legendre多项式的根

    我正在编写一个程序 通过勒让德 高斯求积求解积分 n 阶求积算法需要在某一时刻找到 n 阶勒让德多项式 Pn x 的根 并将它们分配给数组 Absc 表示 横坐标 Pn 是一个 n 阶多项式 在区间 1 1 上有 n 个独立的实根 我希望能
  • 与 IPython 内核分离而不终止它

    有人可以告诉我如何在不终止 IPython 内核的情况下分离它吗 我在文档中看到quit 有一个参数keep kernel 但不幸的是quit keep kernel True 行不通的 如果您通过 IPython 控制台客户端连接到内核并

随机推荐

  • opencv基础-印度小哥

    基础课程 第一章 读取图片 视频和摄像头 Chapter 1 Read Images Videos and Webcams 图片放在程序所在文件夹下的Resources test png 1 1 opencv读取一张图片并显示 xff1a
  • 为ubuntu配置WiFi

    1 前提条件 ubuntu不论什么版本 xff0c 如果想要正常使用wifi xff0c 必须在电脑的bios中把secure boot设定为disable 2 快捷指令 xff08 WiFi相关的常用命令行指令 xff09 2 1查看电脑
  • 嵌入式C语言自我修养:从芯片、编译器到操作系统-习题、笔记

    前沿 C语言测试 1 基本概念考查 什么是标识符 关键字和预定义标识符 三者有何区别 标识符 xff08 Identifier xff09 由程序员定义 xff0c 用来表示变量 xff0c 包括了变量名 函数名 宏名 结构体名等 标识符的
  • smile@smile-X3-S:~/app_install/mapx/build$ sudo make

    smile 64 smile X3 S app install mapx build span class token function sudo span span class token function make span span
  • 两台ubuntu之间文件互传方法

    1 查找本机ip地址 终端输入 xff08 不是自己的电脑 xff0c 是服务其的IP xff09 xff1a ifconfig span class token operator span a 查看inet 192打头的地址 2 查找本机
  • 单片机通过串口发送浮点类型数据

    单片机通过串口向串口助手或者其他器件发送数据时是不能直接发送浮点类型数据的 xff0c 通过printf 34 f 34 1 28 发送浮点数据 在串口助手看似是小数 xff0c 其实是字符串类型 xff0c 它们是各符号对应的ASSCII
  • 制作系统启动盘和制作windows+Ubuntu双系统启动盘

    制作windows 43 Ubuntu双系统启动盘 前言1 准备软件和工具 xff1a 开始1 软件和系统镜像自行在网上下载 2 下载好系统镜像之后 xff0c 开始制作ubuntu系统盘 xff1a 3 制作好ubuntu启动盘之后 xf
  • 虚拟机分配的硬盘太大怎么办?

    虚拟机分配的硬盘太大怎么办 xff1f 虚拟机分配的硬盘太大怎么办 xff1f 文章来源说明 xff1a 开始1 首先需要将虚拟机中多余的硬盘空间删除 xff0c 在此电脑中右键管理 xff0c 然后在磁盘管理中右键有多余空间的磁盘进行压缩
  • QT界面窗口的显示和隐藏,关闭

    这里写目录标题 QT窗口的显示和隐藏 xff1a 1 隐藏窗口1 1 介绍 xff1a 2 显示窗口2 1 介绍 xff1a 3 关闭窗口常用函数有 xff1a QT窗口的显示和隐藏 xff1a 1 隐藏窗口 span class toke
  • QT的中文显示乱码问题解决

    QT的中文显示乱码问题解决 QT的中文显示乱码问题解决 xff1a 1 查看源文件的编码格式 xff0c 有必要的话转换源文件的编码格式再重新编译运行尝试汉字能否正常显示 2 在代码里面解决 xff1a 3 用法 xff1a QT的中文显示
  • 0.9 - GPIO寄存器的C语言映射与STM32库函数雏形构建思路

    首先 xff0c 从参考手册可知 xff0c 程序存储器 xff08 flash xff09 数据存储器 SRAM 寄存器 外设控制 和输入输出端口被组织在同一个4GB的线性地址空间内 数据字节以小端格式存放在存储器中 一个字里的最低地址字
  • Linux文件/文件夹建立软硬链接

    建立软连接 xff1a sudo ln s home spike Downloads redis src redis server usr local bin redis server 源文件 链接到 目标文件 xff0c 这两个文件目录都
  • Linux中记录终端(Terminal)输出到文本文件四种方法

    Linux中记录终端 xff08 Terminal xff09 输出到文本文件 Linux中记录终端 xff08 Terminal xff09 输出到文本文件 一 xff0c 如何把命令运行的结果保存到文件当中 二 command gt f
  • C++ 标准库头文件汇集:

    C 43 43 标准库头文件汇集 xff1a C 43 43 标准库的接口由下列头文件的汇集定义 C 43 43 标准库头文件汇集 xff1a 概念库协程库工具库动态内存管理数值极限错误处理字符串库容器库迭代器库范围库算法库数值库本地化库输
  • C++开源库列表总结记录

    开源 C 43 43 库列表 前言包管理器库音频 音频指纹格式标签CD 性能测试 通信 并发 配置 XMLJSONYAMLTOMLHOCONCSS容器 密码学 数据库 嵌入语言绑定 嵌入式 实时 文件元数据 金融计算 游戏引擎架构 通用多媒
  • C++转义序列和操作符优先级

    C 43 43 转义序列和操作符优先级 1 转义序列 xff1a 2 C 43 43 运算符优先级注解 1 转义序列 xff1a 转义序列 描述 表示 简单转义序列 39 单引号 ASCII 编码中为字节 0x27 34 双引号 ASCII
  • PX4:Policy “CMP0097“ is not known to this version of CMake.

    make px4 fmu v3 时报的错 CMake版本的问题 由https blog csdn net zhizhengguan article details 118380965推测 xff0c 删除cmake policy也没事 ma
  • 安装Anaconda3后再安装ROS(用于PX4)

    记录一下安装anaconda后再安装ROS xff0c 方便未来找错误 出现no module wstool 仔细观察报错信息发现调用的库都在anaconda3 lib python3 7里面了 随后按照https www cnblogs
  • Offboard仿真时出现CMD: Unexpected command 176, result 0

    在用PX4 43 gazebo 43 ROS仿真offboard例程时 xff0c 如果出现以下问题 xff1a 运行以下命令 xff1a roslaunch mavros px4 launch fcu url span class tok
  • Offboard例程的python版本

    因为python的库很丰富 xff0c 有现成的解方程库 xff0c 比如sympy 自己写了一份python版本的自动起飞2m的程序 假设自定义的包名为offb xff0c 在offb下新建scripts文件夹 xff0c 将py文件放在