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

2024-05-12 00:04

本文主要是介绍【声呐仿真】学习记录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的箭头可以看到运动:
在这里插入图片描述

这篇关于【声呐仿真】学习记录2-运行ROV(带camera、sonar、dvl等传感器)例程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981037

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项