**

引言:本小节是在已经安装好仿真环境的情况下进行。仿真环境的安装可以参考视频讲解:链接如下

**

环境安装和定点飞行代码详解

视频从小海龟例程开始,详细阐述了话题的订阅和发布,后续分析了本小节代码
视频:代码详解

1、进入到Firmware文件夹下,启动gazebo仿真环境:

 make px4_sitl_default gazebo


2、启动MAVROS仿真

 `roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"`


3、启动飞行节点

rosrun offboard_node offboard_node


4、代码注释:

//相关头文件包含
#include <ros/ros.h>
#include <geometry_msgs/PoseStamped.h>
#include <mavros_msgs/CommandBool.h>
#include <mavros_msgs/SetMode.h>
#include <mavros_msgs/State.h>mavros_msgs::State current_state;//回调函数
void state_cb(const mavros_msgs::State::ConstPtr& msg){current_state = *msg;
}int main(int argc, char **argv)
{//初始化节点ros::init(argc, argv, "offb_node");//创建节点句柄ros::NodeHandle nh;//创建订阅者,订阅话题mavros/stateros::Subscriber state_sub = nh.subscribe<mavros_msgs::State>("mavros/state", 10, state_cb);//创建一个发布者,发布"mavros/setpoint_position/local"话题ros::Publisher local_pos_pub = nh.advertise<geometry_msgs::PoseStamped>("mavros/setpoint_position/local", 10);//创建一个客户端,该客户端用来请求PX4无人机的解锁         ros::ServiceClient arming_client = nh.serviceClient<mavros_msgs::CommandBool>("mavros/cmd/arming");//创建一个客户端,该客户端用来请求进入offboard模式ros::ServiceClient set_mode_client = nh.serviceClient<mavros_msgs::SetMode>("mavros/set_mode");//搭配rate.sleep()函数,实现20Hz频率的循环;ros::Rate rate(20.0);// 等待飞控连接while(ros::ok() && !current_state.connected){ros::spinOnce();rate.sleep();}//创建一个变量,该变量是无人机即将起飞到的位置,相对于无人机上电时刻作为起始点geometry_msgs::PoseStamped pose;pose.pose.position.x = 0;pose.pose.position.y = 0;pose.pose.position.z = 2;//预发布期望位置信息,给无人机目标点//send a few setpoints before startingfor(int i = 100; ros::ok() && i > 0; --i){local_pos_pub.publish(pose);ros::spinOnce();rate.sleep();}//设置客户端请求无人机进入“OFFBOARD”模式mavros_msgs::SetMode offb_set_mode;offb_set_mode.request.custom_mode = "OFFBOARD";//设置客户请无人机解锁mavros_msgs::CommandBool arm_cmd;arm_cmd.request.value = true;//获取时间戳ros::Time last_request = ros::Time::now();while(ros::ok()){//if语句循环请求进入OFFBOARD模式,进入以后则会进入else语句请求对无人机解锁。if( current_state.mode != "OFFBOARD" &&(ros::Time::now() - last_request > ros::Duration(5.0))){if( set_mode_client.call(offb_set_mode) &&offb_set_mode.response.mode_sent){ROS_INFO("Offboard enabled");}last_request = ros::Time::now();} else {if( !current_state.armed &&(ros::Time::now() - last_request > ros::Duration(5.0))){if( arming_client.call(arm_cmd) &&arm_cmd.response.success){ROS_INFO("Vehicle armed");}last_request = ros::Time::now();}}//循环发布期望位置信息,20Hz频率local_pos_pub.publish(pose);ros::spinOnce();rate.sleep();}return 0;
}

2.1、ROS+PX4仿真---定点飞行控制相关推荐

  1. ROS robotiq仿真开闭控制的几种方法

    robotiq二指手抓在实验室和工厂广泛使用,比较普遍的就是UR机器人结合robotiq手抓. 由于手头没有实体手抓,所以都是在ROS中仿真使用的.在网上找资料的时候,也尝试了多种控制手抓开闭的方式, ...

  2. 基于ROS的PX4+Gazebo仿真——PX4一键起飞及飞行控制

    一键起飞 参考及引用 1. CSDN博主「战争果子」的原创文章,遵循CC 4.0 BY-SA版权协议. 原文:https://blog.csdn.net/EnthusiasmZing/article/ ...

  3. PX4无人机ROS下仿真开发

    PX4无人机ROS下仿真开发 Overview Simulation Px4_control Slam Map Image_process Planning Volans 项目地址volans 注:有 ...

  4. ROS+Gazebo仿真差速小车并实现控制

    本工程的功能包有两个,分别用于gazebo仿真与键盘控制运动 功能包原文件如下: diff_wheeled_robot_control : https://huffie.lanzouw.com/iXi ...

  5. 基于paddledetection在ROS中搭建红绿灯检测控制车模运动(3)—— 使用训练结果在ros中仿真红绿灯控制小车运动

    前言 第一节: 基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)-- 环境搭建准备以及软件安装 第二节: 基于paddledetection在ROS中搭建红绿灯检测控制车模 ...

  6. PX4+Offboard模式+代码控制无人机起飞(Gazebo)

    参考PX4自动驾驶用户指南 https://docs.px4.io/main/zh/ros/mavros_offboard_cpp.html 我的另一篇博客写了 键盘控制PX4无人机飞行 PX4无人机 ...

  7. 【openMV与机器视觉】四旋翼飞行控制背景下的PID控制与摄像头算法简介

    文章目录 声明 1.四旋翼飞行控制简介 2.飞行控制算法 2.1.接收机PWM生成 2.2.PID算法 位置PID 速度PID 3.摄像头算法 3.1.图像处理 3.2.霍夫曼变换 3.3.巡线算法 ...

  8. MATLAB与ROS联合仿真(慕羽)虚拟机镜像文件使用方法

       前段时间进行了为期两个月的MATLAB与ROS联合仿真探索开发,现将仿真时,我搭建的虚拟机镜像的具体情况,及使用方法进行介绍说明    一.该虚拟机镜像的具体情况    大家,拿到手后是一个名为 ...

  9. Turtlebot+ROS Stage仿真环境实现MPC轨迹跟踪

    在无人车系统(十一):轨迹跟踪模型预测控制(MPC)原理与python实现[40行代码]中介绍了MPC方法在无人车轨迹跟踪中的应用.以Udacity中的例子作为引子,详细介绍了MPC的原理,无人车的运 ...

  10. 为期两个月的MATLAB与ROS联合仿真探索总结——因为热爱,所以无所畏惧

       2021年的9月底收到老师的委托之后,开始着手使用MATLAB探索开发一些实验,控制对象为ROS中的仿真小车    为什么要用MATLAB呢?因为这个实验是面向机器人专业的全体学生的,而不是个别 ...

最新文章

  1. jenkins部署net core初探
  2. 山海经鸿蒙手游iOS 版本,山海经鸿蒙异兽iOS版
  3. vs2012 error c4996: 'fopen': This function or variable may be unsafe
  4. 用yacc编写的算术运算计算器_Linux里隐藏的计算器,你知道它的奥秘吗?
  5. C#属性详解及属性与函数间的对比
  6. 关于python中self
  7. php不能header跳转页面,PHP问题:php header方法跳转页面问题
  8. 红黑树与平衡二叉树_大佬用这近百张图来给我解释红黑树,看完直接跪了!
  9. 小米4 win10 刷回android,小米4怎么从win10刷回MIUI 小米4 win10刷回MIUI系统详细教程...
  10. 华为2019届校招笔试题及解法
  11. 一键把Android手机投屏到电脑上,非常简单
  12. 【windows环境 PKCS11库Demo 用于劫持PKCS11库并打印参数】
  13. Cadence Vitruoso Layout绘制版图
  14. 苹果手机用什么蓝牙耳机好?适合苹果的音乐蓝牙耳机推荐
  15. [BUUCTF-pwn] hackcon2018_elegent
  16. 程序员们该活动活动了 ,北京的同行们给你们推荐点北京好玩的地方
  17. 储能变电站互动系统通讯协议 (征求意见稿)
  18. 手机上MEID和IMEI1和IMEI2是什么意思
  19. 详细讲解一下Linux内核系统结构(图例解析)
  20. 基于stm32f103c8t6与jdy23蓝牙模块实现手机app点亮灯

热门文章

  1. 阅读分享-超抵抗力最大的路径走
  2. maya餐具图片_有哪些价格低但是逼格高很文艺又实用的物品呢?
  3. 7z的压缩包linux下如何解压软件,7z(p7zip)压缩软件在Linux下的安装和使用
  4. mysql safe file priv_解决MySQL导入数据时遇到secure-file-priv的问题
  5. 论文阅读——Aspect Sentiment Quad Prediction as Paraphrase Generation
  6. php 每日一句名人名言,每日一句名人名言
  7. MySQL判断是否在同一天
  8. 金蝶系统服务器名称填什么,金蝶怎样输入服务器地址
  9. 动手学深度学习-加载数据集时报错(d2l.load_data)
  10. 神威太湖之光之超级计算机,中国研发的“神威·太湖之光”,超级计算机能给我们带来什么?...