一、基于xtdrone的仿真无人机学习:定点飞行 (用ego_planner

这篇具有很好参考价值的文章主要介绍了一、基于xtdrone的仿真无人机学习:定点飞行 (用ego_planner。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 参考三维运动规划 · 语雀

零·基础知识

MAVROS(MAVLink to ROS)是一个ROS(Robot Operating System)节点,用于在ROS系统中与PX4飞控系统进行通信。
它通过将MAVLink消息转换为ROS消息,实现了ROS系统与无人机之间的数据交换和控制。

PX4 SITL(Software-in-the-Loop)仿真环境中,无人机模型通过PX4飞控软件进行仿真。
通过在仿真环境中运行PX4 SITL,可以在计算机上模拟无人机的飞行和姿态控制。


在这个launch文件中,MAVROS节点和PX4 SITL仿真环境中的无人机扮演着以下角色:
1、
MAVROS节点:负责接收来自无人机的传感器数据(如GPS、IMU等)和状态信息,并将其转换为ROS消息。同时,它也负责接收来自ROS系统的控制指令,并将其转发给无人机。
2、
PX4 SITL仿真环境中的无人机:由PX4飞控软件仿真的无人机模型。它接收来自MAVROS节点的控制指令,并根据指令模拟无人机的飞行和姿态控制。同时,它还将传感器数据和状态信息发送给MAVROS节点,以便在ROS系统中进行处理和显示。


"/xtdrone/iris_0/cmd" 这个话题是用来向 ROS 中连接的无人机发送控制指令的。在 ROS 中,所有的通信都是通过发布者(publisher)和订阅者(subscriber)之间的消息传递来完成的。

一个发布者节点会将无人机的控制指令发布到 "/xtdrone/iris_0/cmd" 这个话题上,并且无人机上运行的订阅者节点将监听该话题以接收并执行这些指令。这通常涉及到无人机的移动、悬停、转向等操作,具体取决于发布到该话题上的指令。

ego-planner仿真,无人机,学习

键盘控制
该节点通过接收键盘输入来控制飞行器的前进、后退、左移、右移、上升、下降以及旋转等动作
按下"w"键会增加飞行器的前进速度,按下"x"键会减小飞行器的前进速度。其他按键也有类似的功能。


查看该话题   无人机的姿态(速度和角度)
rostopic echo /xtdrone/iris_cmd_vel_flu 

ego_planner
ego_planner需要输入深度图+相机位姿或是点云,这里以深度图+相机位姿的组合为例进行仿真
相机位姿由VINS-Fusion计算得到。

这是一些ROS话题,用于机器人的控制和状态估计。

/xtdrone/iris_0/cmd
/xtdrone/iris_0/cmd_accel_enu
/xtdrone/iris_0/cmd_accel_flu
/xtdrone/iris_0/cmd_pose_enu
/xtdrone/iris_0/cmd_pose_flu
/xtdrone/iris_0/cmd_vel_enu
/xtdrone/iris_0/cmd_vel_flu
/xtdrone/iris_0/planning/bspline
/xtdrone/iris_0/planning/data_display
/xtdrone/iris_0/planning/pos_cmd
/xtdrone/iris_0/vins_estimator/odometry
/xtdrone/leader/cmd
/xtdrone/leader/cmd_vel_flu

具体说明如下:

/xtdrone/iris_0/planning/bspline:该话题用于发布来自路径规划器的B样条曲线路径信息,用于控制机器人的运动。

/xtdrone/iris_0/planning/data_display:该话题用于在RViz中显示机器人的路径规划器数据信息,以便进行调试和验证。

/xtdrone/iris_0/planning/pos_cmd:该话题用于发布机器人的位置控制指令,通过订阅该话题,机器人可以按照指定的位置移动到目标点。

/xtdrone/iris_0/vins_estimator/odometry:该话题用于发布机器人的运动状态信息,包括机器人的位置、速度和姿态等数据,通过订阅该话题,用户可以获取机器人的实时状态信息。

ego_planner 可以读取几个全局目标点然后规划路径,目的是无人机每到达一个目标点后旋转九十度,然后执行完所有目标点后回家(家里坐标(0,0,0))

一、定点飞行

思路:将ego_planner一条轨迹拆成多个轨迹,编写脚本分段执行任务

ego-planner仿真,无人机,学习拆分成三段

二、旋转

用键盘控制无人机飞行
在一个终端运行(启动gazebo,出现了场景和飞机)

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch



Gazebo启动后,在另一个终端运行(启动通信脚本,iris代表子机型,0代表飞机的编号,与0号iris建立通信)

cd ~/XTDrone/communication/
python multirotor_communication.py iris 0



与0号iris建立通信后,在另一个终端运行(启动键盘控制脚本,iris代表机型,1代表飞机的个数,vel代表速度控制)

cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel

通过查看键盘控制无人机的话题消息 可知

root@d10fba288ba3:/# rostopic info /xtdrone/iris_0/cmd_vel_flu
Type: geometry_msgs/Twist

Publishers: 
 * /iris_multirotor_keyboard_control (http://d10fba288ba3:35643/)

Subscribers: 
 * /iris_0_communication (http://d10fba288ba3:38861/)


因此
/xtdrone/iris_0/cmd_vel_flu 话题使用的消息类型是 geometry_msgs/Twist。

在终端中执行以下命令,将指定的消息内容发布到该话题:

rostopic pub /xtdrone/iris_0/cmd_vel_flu geometry_msgs/Twist "linear:
  x: 0.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.33"

但是该消息内容只会执行一次,所以要编写个py脚本循环发布旋转消息
 

xuanzhuan.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from geometry_msgs.msg import Twist

def main():
    rospy.init_node('command_publisher')

    # 创建一个发布者,指定要发布的话题和消息类型
    pub = rospy.Publisher('/xtdrone/iris_0/cmd_vel_flu', Twist, queue_size=10)

    # 创建一个 Twist 对象,用于填充指令消息的内容
    cmd_vel = Twist()
    cmd_vel.angular.z = 1.57  # 设置角速度

    rate = rospy.Rate(220)  # 设置发布频率为 250Hz
    count = 0  # 计数器

    while not rospy.is_shutdown()and count<240:
        pub.publish(cmd_vel)  # 发布指令消息
        rate.sleep()
        count+=1

if __name__ == '__main__':
    try:
        main()
    except rospy.ROSInterruptException:
        pass

三、执行任务

现在只需要将这些任务用脚本依次执行就行了

先依照三维运动规划 · 语雀

启动仿真

然后执行脚本

echo "Start a Tmux session!"

# 创建一个名为 "ego_planner" 的 Tmux 会话
tmux new -d -s ego_planner

echo "Start ego_planner_1!"

# 向 Tmux 会话发送命令,并输入一个回车以启动 "roslaunch" 命令
tmux send-keys -t ego_planner "roslaunch ego_planner single_uav.launch" ENTER 

sleep 22

echo "Start Rotating!"
tmux send-keys -t ego_planner "C-c" ENTER
sleep 2
tmux send-keys -t ego_planner "python xuanzhuan.py" ENTER 
sleep 6

echo "Start ego_planner_2!"
# 向 Tmux 会话发送命令,并输入一个回车以启动 "roslaunch" 命令
tmux send-keys -t ego_planner "roslaunch ego_planner single_uav_2.launch" ENTER 
sleep 15

echo "Start Rotating!"
tmux send-keys -t ego_planner "C-c" ENTER
sleep 2
tmux send-keys -t ego_planner "python xuanzhuan.py" ENTER 
sleep 6

echo "Start GOhome!!"
# 向 Tmux 会话发送命令,并输入一个回车以启动 "roslaunch" 命令
tmux send-keys -t ego_planner "roslaunch ego_planner single_uav_3.launch" ENTER 



完成任务

ego-planner仿真,无人机,学习文章来源地址https://www.toymoban.com/news/detail-845093.html

到了这里,关于一、基于xtdrone的仿真无人机学习:定点飞行 (用ego_planner的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于simulink的无人机姿态飞行控制仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB         无人机是无人驾驶飞机的简称(Unmanned Aerial Vehicle),是利用无线电遥控设备和自备的程序控制装置的不载人飞机,包括无人直升机、固定翼机、多旋翼飞行器、无人飞艇、无人伞翼机。广义地看也包括临近

    2024年02月02日
    浏览(63)
  • 【无人机三维路径规划】基于蚁群算法ACO实现复杂地形无人机三维航迹规划附Matlab仿真

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月03日
    浏览(67)
  • 2023五一杯数学建模A题思路 - 无人机定点投放问题

    A题:无人机定点投放问题 随着科学技术的不断发展,无人机在许多领域都有着广泛的应用。对于空中执行定点投放任务的无人机,其投放精度不仅依赖于无人机的操作技术,而且还与无人机执行任务时所处状态和环境有关,例如在接近投放点时无人机的高度、速度,无人机

    2024年02月04日
    浏览(41)
  • 【无人机三维路径规划Matlab仿真】基于萤火虫算法实现复杂环境下无人机避障三维航迹规划

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月03日
    浏览(78)
  • 【无人机三维路径规划matlab仿真】基于蜣螂优化算法DBO求解复杂山地环境下无人机三维路径规划研究

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月04日
    浏览(86)
  • 基于EKF的四旋翼无人机姿态估计matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB        卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全包含噪声的测量中,估计动态系统的状态。这种滤波方法以它的发明者鲁道夫·E·卡尔曼(Rudolf E. Kalman)命名。卡尔曼最初提

    2023年04月23日
    浏览(90)
  • 2023五一杯数学建模A题思路解析 - 无人机定点投放问题

    # 1 赛题 A题:无人机定点投放问题 随着科学技术的不断发展,无人机在许多领域都有着广泛的应用。对于空中执行定点投放任务的无人机,其投放精度不仅依赖于无人机的操作技术,而且还与无人机执行任务时所处状态和环境有关,例如在接近投放点时无人机的高度、速度,

    2024年02月04日
    浏览(62)
  • Webots实现大疆Mavic2pro无人机定点飞行

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 由于项目要求,现在需要做一个能够实现无人机根据事先给定的点位实现定点飞行,这里由于webots的跨平台性,考虑使用webots进行仿真 由于无人机有pitch、yaw、roll三个属性,分别对应前后运动、左右偏

    2024年02月03日
    浏览(67)
  • (无人机方向)ros学习之路ROS 机器人系统仿真_导航仿真概述

    一:导航仿真概述 导航是机器人系统中最重要的模块之一,比如现在较为流行的服务型室内机器人,就是依赖于机器人导航来实现室内自主移动的,本章主要就是介绍仿真环境下的导航实现,主要内容有: 导航相关概念 导航实现:机器人建图(SLAM)、地图服务、定位、路径规划…

    2024年02月02日
    浏览(58)
  • ROS-基于PX4的无人机SLAM建图(Cartographer)仿真

    首先在电脑上安装好Ubuntu系统和ROS系统,我安装的是Ubuntu18.04和ROS Melodic,不同的Ubuntu版本对应不同的ROS版本 ROS发布日期 ROS版本 停止支持日期 对应Ubuntu版本 2018年5月23日 ROS Melodic Morenia 2023年5月 Ubuntu 18.04 2016年5月23日 ROS Kinetic Kame 2021年4月 Ubuntu 16.04 (Xenial) Ubuntu 15.10 (Wily) 201

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包