厦门模板网站建设亦庄网站开发公司

web/2025/9/27 21:13:16/文章来源:
厦门模板网站建设,亦庄网站开发公司,外包做网站一般多少钱,动漫制作软件文章主要讲述px4 如何利用vins_fusion里程计数据实现在室内定位功能。 文章基于以下软、硬件展开。 硬件软件机载电脑#xff1a; Intel NUC系统#xff1a;Ubuntu 20.04相机#xff1a; Intel Realsense D435iros#xff1a;noetic飞控#xff1a;Pixhawk 2.4.8固件 Intel NUC系统Ubuntu 20.04相机 Intel Realsense D435irosnoetic飞控Pixhawk 2.4.8固件PX4 1.14.0 完整vins_to_mavros 功能包地址 https://github.com/rotorcraftman/px4ctrl 随着slam开源技术的普及px4 要实现室内定位实现方式很多如文章使用的vins-fusion等视觉里程计激光里程计等。 本质上要实现无人机的室内定位有两个方法 1.提供室内位置信息 室外可以用gps提供位置信息实现定位而室内因为gps没有信号所以朴素的想法是只要提供位置信息给飞控就可实现像室外gps定位的效果了。 思路 vio提供里程计—(/mavros/vision_posion/pose)mavros(mavlink)—px4 可以看出mavros起到了连接vio和px4的桥梁作用。 2.offboard 外部计算机遵守照MAVLink 协议提供的位置速度或姿态设定值。 设定值可以由机载计算机上运行的 MAVLink API例如 MAVSDK (opens new window) 或 MAVROS (opens new window)提供通常通过串口或 wifi 连接。 3.光流、UWB等。 接下来详细讲述第一种实现方式vio以vins_fusion为例。 文章叙述展开方式默认已完成了px4飞控的建立、mavros的安装未完成的同志可参考上一篇文章 gazebo11px4联合仿真测试 一、Pixhawk MAVLink Ports配置 配置Pixhawk Telem2作为与机载电脑数据交互的MAVLINK端口 MAV_1_CONFIG TELEM 2 MAV_1_MODE Onboard SER_TEL2_BAUD 921600 8N1 设置前参数里可能只有MAV_1_CONFIG搜不到其他的参数将MAV_1_CONFIG设置为TELEM 2然后把飞控重启后其他参数就有了。 Pixhawk 2.4.8硬件设置为102参数对应关系如下。 详细参数介绍参见https://docs.px4.io/main/en/advanced_config/parameter_reference.html Pixhawk 2.4.8 TELEM1/TELEM2端口设置如下 TELEM1TELEM2MAV_0_CONFIG TELEM 1MAV_1_CONFIG TELEM 2MAV_0_MODE NormalMAV_1_MODE OnboardMAV_0_RATE 1200 Bytes/sMAV_1_RATE 0 (Half maximum)MAV_0_FORWARD TrueMAV_1_FORWARD DisabledSER_TEL1_BAUD 57600SER_TEL2_BAUD 921600 详细端口设置参见https://docs.px4.io/main/en/peripherals/mavlink_peripherals.html 配置好端口后需要做一根连接机载电脑和Pixhawk TELEM 2 端口的线我这边直接用一个USB转TTL模块。 Pixhawk TELEM1 / TELEM2 端口线序图如下 PinSignalVolt1 (red)VCC5V2 (blk)TX (OUT)3.3V3 (blk)RX (IN)3.3V4 (blk)CTS (IN)3.3V5 (blk)RTS (OUT)3.3V6 (blk)GNDGND 其它端口详见https://docs.px4.io/main/en/flight_controller/pixhawk.html#where-to-buy 展示一张做好的端子连接线如下 在qgc上测试通信是否正常。 qgc-Application Settings-通讯连接-添加设置如下。 正常情况下就可通过TELEM 2连上QGC了。 二、在机载电脑上启动MAVROS 我这里用的是nuc的usb设备名称dev/ttyUSB0按照自己实际情况配置。921600是波特率就是前面设置的SER_TEL2_BAUD参数改成设置值就行。 roslaunch mavros px4.launch fcu_url:serial:/dev/ttyUSB0:921600 gcs_url:udp://172.16.7.210gcs_url运行qgc主机的IP地址。 如果不想设置ip可以设置为以下参数自动寻址。 roslaunch mavros px4.launch fcu_url:serial:/dev/ttyUSB0:921600 gcs_url:udp-b://若出现报错 FCU: DeviceError:serial:open: Permission denied 解决方法是给对应的串口权限 sudo chmod 777 /dev/ttyUSB0三、vins_fusion、mavros建立连接 思考vins_fusion的里程计数据如何发布给px4 这也是实现室内定位的关键。实现这一步只需将vins_fusion里程计数据以话题 /mavros/vision_pose/pose 发布mavros 收到/mavros/vision_pose/pose话题后转化成mavlink通过TELEM 2传给飞控。于是就完成了vins_fusion和px4的连接。 接下来创建发布 /mavros/vision_pose/pose 话题的功能包过程了 1.创建工作空间px4ctrl mkdir -p px4ctrl/src/ cd px4ctrl/src/2.创建功能包vins_to_mavros catkin_create_pkg vins_to_mavros roscpp std_msgs geometry_msgs mavros_msgs nav_msgs tf2_eigen tf在px4ctrl/src/vins_to_mavros/src/ 目录下创建一个 vins_to_mavros 节点主要功能 1将 VINS-Fusion 的 body 坐标系在 world 坐标系下为位姿转化为 base_link 在 map 坐标系中的位姿 2将转化后的位姿信息以话题 /mavros/vision_pose/pose 发布。 #include ros/ros.h #include geometry_msgs/PoseStamped.h #include nav_msgs/Odometry.h #include Eigen/EigenEigen::Vector3d p_mav; Eigen::Quaterniond q_mav;void vins_callback(const nav_msgs::Odometry::ConstPtr msg) {if(msg-header.frame_id world){p_mav Eigen::Vector3d(msg-pose.pose.position.y, -msg-pose.pose.position.x, msg-pose.pose.position.z);q_mav Eigen::Quaterniond(msg-pose.pose.orientation.w, msg-pose.pose.orientation.x, msg-pose.pose.orientation.y, msg-pose.pose.orientation.z);Eigen::AngleAxisd roll(M_PI/2,Eigen::Vector3d::UnitX()); // 绕 x 轴旋转 pi / 2Eigen::AngleAxisd pitch(0,Eigen::Vector3d::UnitY());Eigen::AngleAxisd yaw(0,Eigen::Vector3d::UnitZ());Eigen::Quaterniond _q_mav roll * pitch * yaw;q_mav q_mav * _q_mav;} }int main(int argc, char **argv) {ros::init(argc, argv, vins_to_mavros);ros::NodeHandle nh(~);ros::Subscriber slam_sub nh.subscribenav_msgs::Odometry(odom, 100, vins_callback);ros::Publisher vision_pub nh.advertisegeometry_msgs::PoseStamped(vision_pose, 10);// the setpoint publishing rate MUST be faster than 2Hzros::Rate rate(20.0);ros::Time last_request ros::Time::now();while(ros::ok()) {geometry_msgs::PoseStamped vision;vision.pose.position.x p_mav[0];vision.pose.position.y p_mav[1];vision.pose.position.z p_mav[2];vision.pose.orientation.x q_mav.x();vision.pose.orientation.y q_mav.y();vision.pose.orientation.z q_mav.z();vision.pose.orientation.w q_mav.w();vision.header.stamp ros::Time::now();vision_pub.publish(vision);ROS_INFO(\nposition:\n x: %.18f\n y: %.18f\n z: %.18f\norientation:\n x: %.18f\n y: %.18f\n z: %.18f\n w: %.18f, \p_mav[0],p_mav[1],p_mav[2],q_mav.x(),q_mav.y(),q_mav.z(),q_mav.w());ros::spinOnce();rate.sleep();}return 0; } 3.配置 CMakeList.txt 文件 找到相应位置添加 add_executable(vins_to_mavros_node src/vins_to_mavros.cpp) target_link_libraries(vins_to_mavros_node ${catkin_LIBRARIES})4.创建vins_to_mavros节点的launch文件 在目录px4ctrl/src/launch/ 创建vins_to_mavros.launch launchnode pkgvins_to_mavros typevins_to_mavros_node namevins_to_mavros outputscreenremap from~vision_pose to/mavros/vision_pose/pose /remap from~odom to/vins_estimator/odometry //node /launch 5.编译 cd px4ctrl catkin_make source devel/setup.bash6.验证 启动vins_to_mavros节点 roslaunch vins_to_mavros vins_to_mavros.launch查看话题 rostopic list显示如下 PS此处坐标系转化适配的是Realsense D435i相机如其它相机需要根据相机imu坐标系与px4坐标系进行相应的转换。 四、联调测试 联调测试的基础是 1.vins_fusion里程计精度尚可且具有一定的鲁棒性 2.px4飞控在自稳模式下手动可控、达到可飞条件。 关于vins_fusion的相关调试参见系列文章 https://blog.csdn.net/u010196944/article/details/127240169 1.px4飞控设置 将px4定位数据源设置为vinsion参数EKF2_AID_MASK设置为24具体如下 2.在终端依次输入 此时qgc已连上可在qgc作如下验证。 Analyze Tools-MAVlink检测出现了LOCAL_POSITION_NED数据如下 验证 1前后左右移动飞机看看位置是否正确。 2前后移动飞机后放回原位置看位置数据偏差是否大。 验证没问题之后就可以起飞通过qgc或者遥控器切换定位模式了。 完结希望你一切顺利不“炸鸡”。 参考 1.https://blog.csdn.net/u010196944/article/details/127240169 2.https://docs.px4.io/main/en/ 3.https://zhuanlan.zhihu.com/p/364390798 4.https://blog.csdn.net/qq_44998513/article/details/133144421?spm1001.2014.3001.5502

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站关键词怎么优化排名wordpress 引用 格式

原文地址:http://www.oschina.net/p/spring-oauth-server?fromerrvpTctDBF转载于:https://www.cnblogs.com/longshiyVip/p/5052657.html

昆明网站开发wordpress 搜索框 位置

之前写过的相关文章: MQTT协议(转载)——筑梦之路_mqtt url-CSDN博客 k8s 部署mqtt —— 筑梦之路-CSDN博客 CentOS 7 搭建mqtt服务——筑梦之路_腾讯云宝塔搭 centos 7.9.2009 x86_64 建标准mqtt服务器-CSDN博客 mqtt简介 MQTT&#xff…

企业网站四种类型一个人开发游戏难吗

当Windows与Linux作为VPS云主机操作系统的对比时,需要专注于小企业主最相关的因素,一个明显的赢家出现了,现在我们来看看吧。Linux与Windows的比较:任何虚拟主机操作系统都应该快速且稳定,但当企业选择VPS主机时&#…

沈阳市网站建设报价网站流量利用

git tag 以及git 一、先说收获吧 1. git bash 在windows上 类似于linux的bash提供的shell命令行窗口,可以执行很多linux命令,cd pwd ls vim cat touch mkdir,还可以用正则匹配查看标签。相当于在windows上装了一个小的linux。git init myproj…

企业网站开发douyanet一起装修网口碑怎么样

最近和一个1000人规模公司的智能制造部门进行交流,参会人员包括部门领导、技术人员、产品(经理)设计人员等,我介绍了工业信息建设相关理念、钢铁云及其他建设案例、iNeuOS工业互联网系统相关内容,交流期间他们领导说了…

玉溪网络推广 网站建设衣服定制的app有哪些

Docker基础教程 Docker简介 Docker基本操作 Docker应用 Docker自定义镜像 Docker compose 为什么使用DockerDocker简介安装DockerDocker的中央仓库Docker镜像操作Docker容器操作准备一个web项目创建MySQL容器创建Tomcat容器将项目部署到TomcatDocker数据卷DockerfileDock…

网站js代码检测seo网站优化案例

目录 1.进入电脑BIOS,设置电脑第一启动项为U盘启动2.进入微pe系统3.然后点击界面最左下方的Windows图标4.点击windows密码选择对应用户名称修改; 1.进入电脑BIOS,设置电脑第一启动项为U盘启动 把u盘插到要清除密码的电脑,然后开机…

基础网站建设公司兼职网站编辑怎么做

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…

asp简单购物网站源码深圳最好seo

SCP(Secure Copy Protocol)是一种通过加密的方式在本地主机和远程主机之间安全地传输文件的协议。 它是基于SSH协议的扩展,允许用户在不同主机之间进行文件复制和传输,是Linux和Unix系统中常用的工具之一。 在嵌入式Linux软件的…

开发网站步骤广州设计周官方网站

申明:文章中部分内容有涉及官方帮助或者网上资源整合,如有违权,请速与作者联系,谢谢!作者:316191099qq.com培训:Skype for Business Server 2015-项目实战-培训-QQ群:65235615。(学员…

网站策划工具烟台网站建设4038gzs

以下内容源于慕课网的学习整理,如有侵权,请告知删除。 1、栈要素 栈底(不变)、栈顶(随着入栈和出栈而改变) 2、栈机制的实现 (1)栈的相关机制 判断栈的空满;入栈、出栈…

整套网站建设重庆网红打卡点

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid5794 题意:让一个棋子从(1,1)走到(n,m),要求像马一样走日字型并只能往右下角走。里面还有r个障碍点不能经过或者到达&am…

2016网站设计风格wordpress填表式插件

来源:人机与认知实验室【本文是鲁晨光老师发表的一篇关于语义信息论和统计学习的论文写后感,发表在科学网上,特摘录推荐】2019-8-21 01:04 |个人分类:信息的数学和哲学|系统分类:论文交流| 信息论, 语义信息, 机器学习, 归纳, 科学哲学这是我…

公共图书馆门户网站建设总结网站怎样做链接

随着科技的飞速发展,人类社会正以前所未有的速度迈向一个全新的时代。科学技术作为第一生产力,不仅极大地推动了经济和社会的发展,更在不断地改变着我们的生活方式和思维方式。特别是在人工智能、物联网等前沿科技领域,其创新和应…

frontpage如何做网站wordpress更改主题目录

请阅读【芯片设计 RTL 数字逻辑设计扫盲 】 转自:芯片设计基础 – CRG模块 文章目录 CRG模块CRG时钟系统CRG复位系统同步复位同步复位的优点同步复位的缺点 异步复位异步复位的优点异步复位的缺点 异步复位同步释放 CRG模块 CRG是芯片里的时钟和复位生成模块&#…

网站模板做网站良品铺子网站规划和建设

Java SSM4——Spring Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架) Spring的优势 方便解耦,简化开发 Spring就是一个容器,可以将所有对象创建和关系维护交给Spring管理 什么是耦合度?对象之间的关…

哪里可以做宝盈网站网站模板 寻模板

RBAC引入了4个顶级资源对象:Role、ClusterRole:角色,用于指定一组权限;RoleBinding、ClusterRoleBinding:角色绑定,用于将角色(权限)赋予给对象 咱们通过Role可以配置命名空间下资源…

澄迈住房和城乡建设局网站微网站免费注册

目录 1_认识Axios库2_axios发送请求3_axios创建实例4_axios的拦截器5_axios请求封装 1_认识Axios库 功能特点: 在浏览器中发送 XMLHttpRequests 请求在 node.js 中发送 http请求支持 Promise API拦截请求和响应转换请求和响应数据 2_axios发送请求 支持多种请求方式: axios…

泉州建站平台江苏省城乡建设部网站首页

在ASP.Net中对各个WebForm控件引入以前没有的EnableViewState属性。这个属性究竟有什么用。我们知道对于WebForm而言,其代码是在服务器端的,以处理客户端的请求。当用户通过浏览器浏览网页的时候,会对网页进行某些操作,比如打开新…

宁波中科网站建设有限公司如何查看域名以前是做什么网站的

对于一个预算有限的创业者来说,选择合适的办公场地是一个重要的决策。不同的办公场地形式有各自的优缺点,需要根据创业者的具体情况和需求来权衡。 一般来说,有以下几种常见的办公场地形式: - 家庭办公:这是最节省成本…