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

news2024/12/28 3:02:23

【声呐仿真】学习记录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.coloradmin.cn/o/1664773.html

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

相关文章

[初阶数据结构】单链表

前言 &#x1f4da;作者简介&#xff1a;爱编程的小马&#xff0c;正在学习C/C&#xff0c;Linux及MySQL。 &#x1f4da;本文收录于初阶数据结构系列&#xff0c;本专栏主要是针对时间、空间复杂度&#xff0c;顺序表和链表、栈和队列、二叉树以及各类排序算法&#xff0c;持…

【Python系列】字节串与字典字节串

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【高校科研前沿】北师大陈晋教授团队在遥感顶刊发表最新成果:ClearSCD模型:在高空间分辨率遥感影像中综合利用语义和变化关系进行语义变化检测

01文章简介 论文名称&#xff1a;The ClearSCD model: Comprehensively leveraging semantics and change relationships for semantic change detection in high spatial resolution remote sensing imagery&#xff08;ClearSCD模型&#xff1a;在高空间分辨率遥感影像中综合…

Nextcloud私有云盘-重新定义云存储体验

Nextcloud私有云盘-重新定义云存储体验 1. 什么是Nextcloud ​ Nextcloud是一个开源的云存储和协作平台&#xff0c;旨在为个人用户、企业和团队提供安全、隐私保护的数据存储和共享解决方案。它允许您在不同设备之间同步、共享文件&#xff0c;提供了强大的协作工具和应用生…

VSCode:设置顶部文件标签页滚动条的宽度

使用VSCode打开多个文件后&#xff0c;顶部的文件标签可以通过滚动条进行滚动&#xff0c;但是缺点是该滚动条太窄了&#xff0c;不好选择。 可以通过如下方法修改改滚动条的宽度&#xff1a; 1.点击设置 2.选择工作台->编辑管理->Title Scrollbar Sizing->Large 3.可…

MSP430环境搭建

1.下载ccs编译器 注意&#xff1a;安装路径和工作路径不能出现中文&#xff01; 没有说明的步骤就点next即可&#xff01; 1.1下载适合自己电脑的压缩包。 下载好压缩包后解压&#xff0c;点击有图标进行安装。 1.2创建一个文件夹用于安装编译器位置 选择安装地址&#xff0…

FFmpeg常用API与示例(四)——过滤器实战

1.filter 在多媒体处理中&#xff0c;filter 的意思是被编码到输出文件之前用来修改输入文件内容的一个软件工具。如&#xff1a;视频翻转&#xff0c;旋转&#xff0c;缩放等。 语法&#xff1a;[input_link_label1]… filter_nameparameters [output_link_label1]… 1、视…

Mybatis操作数据库的两种方式:原生API

mybatis操作数据的两种方式&#xff1a;原生api和mapper代理对象 1.mybatis的api提供的方法 insert() 增加 delete() 删除 update() 更新 selectOne() 返回一个数据 selectList() 返回多个数据&#xff0c;结果类型为List selectMap() 返回多个数据&…

YOLOv5-7.0改进(四)添加EMA注意力机制

前言 关于网络中注意力机制的改进有很多种&#xff0c;本篇内容从EMA注意力机制开始&#xff01; 往期回顾 YOLOv5-7.0改进&#xff08;一&#xff09;MobileNetv3替换主干网络 YOLOv5-7.0改进&#xff08;二&#xff09;BiFPN替换Neck网络 YOLOv5-7.0改进&#xff08;三&…

net 7部署到Linux并开启https

1.修改代码设置后台服务运行 安装nuget包 Install-Package Microsoft.Extensions.Hosting.WindowsServices Install-Package Microsoft.Extensions.Hosting.Systemd在Program代码中设置服务后台运行 var builder WebApplication.CreateBuilder(args);if (System.OperatingS…

x6.js bug记录-流程图json数据导入进来之后拖拽节点,节点直接飞走了

添加josn数据进来之后虽然能正常渲染&#xff0c;但是只要一拖拽&#xff0c;则节点就直接飞走了&#xff0c;看不到了。 找了一下午的问题&#xff0c;最后发现。保存的json坐标位置是字符串类型&#xff0c;而这边的位置必须是数字类型。如下&#xff1a; {position: { x: &…

词令蚂蚁新村今日答案:微信小程序怎么查看蚂蚁新村今天问题的正确答案?

微信小程序怎么查看蚂蚁新村今天问题的正确答案&#xff1f; 1、打开微信&#xff0c;点击搜索框&#xff1b; 2、打开搜索页面&#xff0c;选择小程序搜索&#xff1b; 3、在搜索框&#xff0c;输入词令搜索点击进入词令微信小程序&#xff1b; 4、打开词令微信小程序关键词口…

基于Matplotlib的模型性能可视化工作

一、项目简介 本项目是科技考古墓葬识别工作的中间过程&#xff0c;因为需要大量复用所以另起一章好了。 主要涉及到数据读取、数据可视化和少量的数据处理过程。 二、相关知识 PandasMatplotlib 三、实验过程 1. 数据探索性分析 1.1 准备工作–导入模块 import pandas…

考研入门55问---基础知识篇

考研入门55问---基础知识篇 01 &#xff1e;什么是研究生入学考试&#xff1f; 研究生是指大专和本科之后的深造课程。以研究生为最高学历, 研究生毕业后&#xff0c;也可称研究生&#xff0c;含义为研究生学历的人。在中国大陆地区&#xff0c;普通民众一般也将硕士毕业生称…

JavaSE基础小知识Ⅱ(很容易错!!!)

1. 变量被final修饰后不能再指向其他对象&#xff0c;但可以重写 如果是引用变量被final修饰&#xff0c;那么的确如此&#xff1b; 基本变量不能重写 2. 下列代码的输出结果是&#xff1f; public class Test {static {int x 5; }static int x,y; public static void ma…

conan2 基础入门(01)-介绍

conan2 基础入门(01)-介绍 文章目录 conan2 基础入门(01)-介绍⭐什么是conan官网Why use Conan? ⭐使用现状版本情况个人知名开源企业 ⭐ConanCenter包中心github ⭐说明文档END ⭐什么是conan 官网 官网&#xff1a;Conan 2.0: C and C Open Source Package Manager 一句话来…

【Linux:lesson1】的基本指令

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f697;打开Xshell&#xff0c;登陆root…

个人网站快速搭建手册:低成本,高效率,轻松发布

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;React篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来-快速构建个人站|博客|系统,低成本发布上线 目录 前言 博主主页搭建案例 虚拟主机|服务器|域名 使用免费二级…

python实现九宫格图片切割

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.分析 一.前言 朋友圈九宫格是一种在社交媒体上展示图片或内容的常见布局方式,特别是在微信朋友圈中非常流行。这种布局由九个相同大小的格子组成,通常用于展示一组相关的图片或内容。&…

线程知识点

一、线程 1.定义 线程&#xff1a;是一个进程并发执行多种任务的机制。 串行&#xff1a;多个任务有序执行&#xff0c;一个任务执行完毕后&#xff0c;再去执行下一个任务 并发&#xff1a;多个任务在单个CPU上运行&#xff0c;同一个时间片上只能运行一个任务&#xff0c;c…