【声呐仿真】学习记录2-运行ROV(带camera、sonar、dvl等传感器)例程

【声呐仿真】学习记录2-运行ROV(带camera、sonar、dvl等传感器)例程

  • 前言
  • 第一阶段-学习Gazebo
  • 第二阶段-学习URDF、xacro
  • 第三阶段-寻找例程
    • 跑一个rexrov示例程序
      • 1.uuvsimulator quick_start
      • 2.能键盘控制的示例程序(失败)
      • 3.能键盘控制且运行成功的示例程序
  • 第四阶段-配置Rviz

前言

本文以博主学习顺序记录

第一阶段-学习Gazebo

进度:目前什么都没学,就配置了环境,跑了例程

目标:想要通过键盘或自定义路径使多波束声呐移动(将声呐挂载到uuv上),获取位姿、点云、声呐图像等数据

思路:学习Gazebo,urdf、xacro相关知识,了解如何将传感器挂载到已有uuv上

ROS,rqt,Rviz和Gazebo的关系_哔哩哔哩_bilibili
70分钟快速入门Gazebo机器人仿真_哔哩哔哩_bilibili
Gazebo仿真环境搭建_哔哩哔哩_bilibili
【Gazebo入门教程】第一讲 Gazebo的安装、UI界面、SDF文件介绍_gazebo教程

在这里插入图片描述

如何在场景中插入物体:先在insert选项卡中选择一个物体,单击一下,然后移动鼠标到场景中放置

电脑太卡了,根本不知道放置成功了没,经常感觉点着没反应,╮(╯▽╰)╭

有可能放置成功了,但是看不到,可以在world选项卡的models找找有没有,有的话点击右键move to即可移动到物体处

第二阶段-学习URDF、xacro

发现了一些好东西,建议学习

用URDF描述机器人|关节式机器人 — Describing robots with URDF | Articulated Robotics
How do we describe a robot? With URDF! | Getting Ready to build Robots with ROS #7 - YouTube

强烈推荐张虚左老师的教程:

002ROS诞生背景_Chapter1-ROS概述与环境搭建_哔哩哔哩_bilibili
6.3.4 URDF练习 · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

第三阶段-寻找例程

进度:Gazebo大体了解了,URDF也简单学习了一点。
如何添加传感器呢?UUV应该有现成的,声呐传感器现在也有现成的,只需要找出来,拼接到一起

目标:找到包含声呐/摄像头/DVL/IMU等传感器的可以用键盘操控的UUV示例程序

跑一个rexrov示例程序

1.uuvsimulator quick_start

快速入门 - 无人水下航行器模拟器文档 — Quick start - Unmanned Underwater Vehicle Simulator Documentation

roslaunch uuv_gazebo_worlds ocean_waves.launch
roslaunch uuv_descriptions upload_rexrov.launch mode:=default x:=0 y:=0 z:=-20 namespace:=rexrov

在这里插入图片描述

竟然有水平和竖直两个声呐吗?需要操纵杆控制运动
刚开始参考文档,以为只能用操纵杆,所以就放弃了这个,去找用键盘控制的例程(参考2)
后来发现是可以用键盘控制的(参考3)

2.能键盘控制的示例程序(失败)

因为没有操纵杆,所以找个能键盘控制的示例:

UUVsimulator仿真_uuv simulator

roslaunch uuv_gazebo start_pid_demo_with_teleop.launch namespace:=rexrov
roslaunch uuv_teleop uuv_keyboard_teleop.launch uuv_name:=rexrov

遇到三个报错,分别解决:

1.RLException: [uuv_keyboard_teleop.launch] is not a launch file name
The traceback for the exception was written to the log file
在这里插入图片描述
少了包名:

roslaunch uuv_teleop uuv_keyboard_teleop.launch uuv_name:=rexrov

2.解决 ERROR: cannot launch node of type [xxx]: can‘t locate node [xxx] in package [xxx]-阿里云开发者社区

3./usr/bin/env: “python”: 没有那个文件或目录——解决办法_caonda自己创的envs下为啥没找到python.py文件

在这里插入图片描述
遇到问题:通过键盘控制时,在cmd_ve中能看到接收到了运动信息,但是在仿真环境中看不到rexrov的运动
在这里插入图片描述
上图是运行键盘控制程序之前,cmd_vel话题的信息
下图是运行之后,可以看到发布者有一个操纵杆一个键盘,但是没有订阅者,所以rov不会动
在这里插入图片描述
在这里插入图片描述

3.能键盘控制且运行成功的示例程序

键盘速度操作 ·问题 #424 ·uuvsimulator/uuv_simulator — keyboard velocity operation · Issue #424 · uuvsimulator/uuv_simulator

roslaunch uuv_gazebo_worlds empty_underwater_world.launch
roslaunch uuv_descriptions upload_rexrov.launch mode:=default x:=0 y:=0 z:=-20 namespace:=rexrov
roslaunch uuv_control_cascaded_pid key_board_velocity.launch uuv_name:=rexrov model_name:=rexrov

在这里插入图片描述

在运行键盘控制程序之前cmd_vel的订阅情况:
在这里插入图片描述

正交声呐的信息:

在这里插入图片描述

打开rviz,显示图像:

在这里插入图片描述

roslaunch uuv_gazebo_worlds ocean_waves.launch
roslaunch eca_a9_gazebo start_demo_teleop.launch joy_id:=0

第四阶段-配置Rviz

进度:成功运行键盘控制uuv例程,而且例程自带好多传感器,甚至有正交声纳,但是例程不自带rviz

目标:打开rviz,查看位姿和点云、声呐图像等数据

思路:复制其他例程的rviz文件,参考其他例程launch文件,修改本例程的launch文件,启动rviz

本例程路径:uuv_ws/src/uuv_simulator/uuv_descriptions
其他例程路径:“uuv_ws/src/uuv_simulator/uuv_gazebo/rviz/controller_demo.rviz”
在这里插入图片描述

1.复制rviz

mkdir /root/a_uuv_ws/src/uuv_simulator/uuv_descriptions/rviz
cp  "/root/a_uuv_ws/src/uuv_simulator/uuv_gazebo/rviz/controller_demo.rviz" "/root/a_uuv_ws/src/uuv_simulator/uuv_descriptions/rviz/controller_demo.rviz"

2.修改launch

vim "/root/a_uuv_ws/src/uuv_simulator/uuv_descriptions/launch/upload_rexrov.launch"
    <!-- Start RViz  --><node name="rviz" pkg="rviz" type="rviz" output="screen" args="-d $(find uuv_descriptions)/rviz/controller_demo.rviz"/>

3.运行

roslaunch uuv_gazebo_worlds empty_underwater_world.launch
roslaunch uuv_descriptions upload_rexrov.launch mode:=default x:=0 y:=0 z:=-20 namespace:=rexrov
roslaunch uuv_control_cascaded_pid key_board_velocity.launch uuv_name:=rexrov model_name:=rexrov

用键盘控制运动(需选定在此终端进行按键),在Rviz中通过Odometry的箭头可以看到运动:
在这里插入图片描述

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

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

相关文章

Excel如何设置密码保护【图文详情】

文章目录 前言一、Excel如何设置密码保护&#xff1f;二、Excel如何取消密码保护&#xff1f;总结 前言 在软件项目开发过程中&#xff0c;会输出很多技术文档&#xff0c;其中也包括保密级别很高的服务器账号Excel文档。为了确保服务器账号相关的Excel文档的安全性&#xff0…

CSS 网格布局一行X个排列

<div class"icon-box"><divv-for"(item,index) in icon" :key"index" class"icon"style"cursor: pointer">{{item}}</div></div>.icon-box{display: grid; /**网格布局*/grid-template-columns: r…

NSS题目练习2

[LitCTF 2023]我Flag呢&#xff1f; 打开题目后查看源码即可发现flag [第五空间 2021]WebFTP 看到提示&#xff0c;首先想到用dirsearch扫描链接&#xff0c;看是否存在git泄露 发现存在git泄露&#xff0c;用githack解决 克隆提示目录为空&#xff0c;说明不正确&#xff0c…

容器监控与日志管理

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、Docker监控工具 二、容器日志工具docker logs 三、第三方日志工具 四、容器日志驱动 五、示例 5.1、查看容器中运行的进程的信息 5.2、查看…

液晶显示模块强光实验类目及太阳光模拟器

科技日新月异&#xff0c;液晶显示模块运用得也越来越广泛&#xff0c;用户在购买和使用时&#xff0c;都希望能买到显示效果好&#xff0c;性价比高的产品。本文主要介绍LCM&#xff0f;LED模块在光学方面主要测试项目类别及实验仪器。 测试项目类别 1. 透过率 透过率是指透…

英语学习笔记7——Are you a teacher?

Are you a teacher? 你是教师吗&#xff1f; 词汇 Vocabulary name /neɪm/ n. 名字&#xff0c;名声 英文名字构成&#xff1a; 名 字 姓      given name family name  也叫做&#xff1a;first name last name      例&#xff1a;Yanyan Gao 例句&#xff1…

学习网络安全现在还有前景吗?行业分析报告

如果你现阶段选择入行网络安全&#xff0c;就相当于10年前学IT&#xff0c;当它发展起来的时候&#xff0c;你刚好遇到行业红利期。 网络安全这个职业完全可以改变很多人的人生轨迹。 因为它是个不需要你有多强大的情商&#xff0c;不需要你去学习更多复杂的职场和人际关系技…

halcon获取Licenses--每月一换

转到https://www.51halcon.com/ 点击授权&#xff0c;根据你的版本选择progress或者steady进行下载 记住每月一换哦

2024年小程序视频如何下载到电脑上

随着2024年的到来&#xff0c;将小程序视频无缝下载到电脑上&#xff0c;从此让精彩内容触手可及&#xff0c;不受时间和网络的限制&#xff0c;随时随地启发你的生活和工作。 小程序视频我已经打包好了&#xff0c;有需要的自己下载 小程序视频下载工具打包链接&#xff1a;…

AI数据中心网络技术选型,InfiniBand与RoCE对比分析

InfiniBand与RoCE对比分析&#xff1a;AI数据中心网络选择指南 随着 AI 技术的蓬勃发展&#xff0c;其对数据中心网络的要求也日益严苛。低延迟、高吞吐量的网络对于处理复杂的数据密集型工作负载至关重要。本文分析了 InfiniBand 和 RoCE 两种数据中心网络技术&#xff0c;帮助…

付费文章合集第二期

☞☞付费文章合集第一期 感谢大家一年来的陪伴与支持&#xff01; 对于感兴趣的文章点标题能跳转原文阅读啦~~ 21、Matlab信号处理——基于LSB和DCB音频水印嵌入提取算法 22、CV小目标识别——AITOD数据集&#xff08;已处理&#xff09; 23、Matlab信号发生器——三角波、…

【Redis】Redis 事务

Redis 的事务的本质是一组命令的批处理。这组命令在执行过程中会被顺序地、一次性 全部执行完毕&#xff0c;只要没有出现语法错误&#xff0c;这组命令在执行期间不会被中断 1.事务特性 仅保证了数据的一致性 这组命令中的某些命令的执行失败不会影响其它命令的执行&#xff…

【JVM】ASM开发

认识ASM ASM是一个Java字节码操纵框架&#xff0c;它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件&#xff0c;也可以在类被加载入虚拟机之前动态改变类行为&#xff0c;ASM从类文件中读入信息后能够改变类行为&#xff0c;分析类信息&#xff…

课程设计 大学生竞赛系统

课程设计 大学生竞赛系统 wx:help-assignment 学生用户&#xff1a; wx:help-assignment 首页&#xff1a;推荐一些竞赛&#xff0c;热门活动等&#xff1b; 广场&#xff1a;用户可以通过广场来发表动态&#xff0c;同时也可以查看别人发布的动态&#xff0c;并且可以 关注…

解决常见的Android问题

常见问题&#xff1a; 1、查杀&#xff1a; 查杀一般分为两个方向一种是内存不足的查杀&#xff0c;一种的是因为温度限频查杀&#xff0c;统称为内存查杀&#xff0c;两个问题的分析思路不同 1、内存不足查杀&#xff1a; 主要是因为当用户出现后台运行多个APP或者是相机等…

汇昌联信科技:拼多多可以做无货源吗?

在探讨电商平台的经营模式时&#xff0c;"无货源"这一概念经常被提及。它指的是卖家在不需要事先囤积大量商品的情况下&#xff0c;通过与供应商的合作&#xff0c;直接将订单信息传递给他们&#xff0c;由供应商完成发货的过程。针对“拼多多可以做无货源吗?”这一…

内网渗透之如何批量PTH获取主机权限?

—— 利用CrakMapExec工具进行全网段批量PTH CrackMapExec&#xff08;CME&#xff09;是一款后渗透利用工具&#xff0c;可帮助自动化大型活动目录(AD)网络安全评估任务。其缔造者byt3bl33d3r称&#xff0c;该工具的生存概念是&#xff0c;“利用AD内置功能/协议达成其功能&…

【练习2】

1.汽水瓶 ps:注意涉及多个输入&#xff0c;我就说怎么老不对&#xff0c;无语~ #include <cmath> #include <iostream> using namespace std;int main() {int n;int num,flag,kp,temp;while (cin>>n) {flag1;num0;temp0;kpn;while (flag1) {if(kp<2){if(…

2024数维杯B题详细思路代码数学建模高质量保姆级

2024年第九届数维杯大学生数学建模挑战赛题目 B 题 生物质和煤共热解问题的研究 &#xff08;1&#xff09;基于附件一&#xff0c;请分析正己烷不溶物(INS)对热解产率&#xff08;主要 考虑焦油产率、水产率、焦渣产率&#xff09;是否产生显著影响&#xff1f;并利用图像 加…

工业机器人应用实践之玻璃涂胶(篇二)

工业机器人 接上篇文章&#xff0c;浅谈一下实践应用&#xff0c;具体以玻璃涂胶为例&#xff1a; 了解工业机器人在玻璃涂胶领域的应用认识工具坐标系的标定方法掌握计时指令的应用掌握人机交互指令的应用掌握等待类指令用法&#xff08;WaitDI、WaitUnitl 等&#xff09;认…