【声呐仿真】学习记录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的箭头可以看到运动: