较为简单的离线方法请参考:https://blog.csdn.net/xiekaikaibing/article/details/80320822(2018.05.15更新) cartographer建图时保存的地图格式默认为.pbstream。而机器人的navigation需要标准的ROS格式地图(.pgm+.yaml)。在此采用一种讨巧的方法,在保存.pbstream格式的地图后同时将其另存为
这部分内容其实和水下目标跟踪的软件框架没啥联系,但既然上一篇文章提到了水下环境的仿真,结合近期的一点小尝试,也谈谈对水下slam仿真可行性的一些构想。 在水下光学传感器基本上效果非常差。声学设备一方面专业性比较强(换句话说就是很小众),另一方面传感器价格非常高,更雪上加霜的是进行一次数据采集所需耗费的时间人力物力成本很大,然而不能保证能得到理想的数据。 最后各个
项目地址:https://github.com/cabinx/cabin_auv_simulation 鉴于水下机器人调试的复杂性,在仿真环境中对水下机器人进行先期调试能降低调试难度,节约大量的时间成本,提高开发效率。 对于前文构建的软件框架,如果能在仿真环境中先行验证可行性,大致确定各项参数,然后再进行实际下水测试对参数进行微调,无疑将省事很多。同理,若有新的想法
最近想试试ros2,将系统升级成了ubuntu20.04,引发了一大堆新版本的第三方库与旧项目的冲突,果然升级还是要慎重。ros版本也升级为noetic,gozebo也相应地由9.0升级为了11.0,包括gazebo相关的第三方库也随之升级。重新使用uuv_simulator进行仿真时无法工作。重新到github下载源码重新编译。在此简要记录一下遇到的问题。 一、gazebo11与sdforma
模块十分简单,可以介绍的内容很少。包括两个部分:计算目标物中心距图片中心的偏差,对应cabin_vision/object_deviation;PID跟踪控制,对应cabin_behaviors/pid_tracking。 一、偏差计算 输入输出: 监听topic:/darknet_ros/bounding_bo
在目标跟踪时,摄像头提供实时的图片信息,我们需要识别出图片目标,且输出目标在图片中的位置,为后续的控制提供条件。在demo中,我是借助darknet_ros实现这一目标。当然这一模块可以替换成性能更优秀的识别算法。 darknet_ros为yolov3在ros下的一个工具包(https://github.com/leggedrobotics/darknet_ros)。需要对yolov
在目标跟踪时,摄像头提供实时的图片信息,我们需要识别出图片目标,且输出目标在图片中的位置,为后续的控制提供条件。在demo中,我是借助darknet_ros实现这一目标。当然,这一模块可以替换成性能更优秀的识别算法。 darknet_ros为yolov3在ros下的一个工具包(https://github.com/leggedrobotics/darknet_ros)。需
模块对应cabin_controllers/serial_to_mcu。模块实现的功能为监听网络中PWM矩阵信息,将其转换成十六进制数据通过串口下发至MCU,实现对推进器电机的控制。模块数据的串口通信借助了ros的serial工具包(sudo apt-get install ros-melodic-serial),网上比较多使用方法,在此就不做介绍了。当然我还是推荐源码安装(http://wiki
本文介绍手柄控制模块的代码。模块对应cabin_teleop。结合前几篇关于基础运动模块代码的解析,显然我们只需要操控手柄发布力和力矩的信息[Fx,Fy,Fz,Mx,My,Mz]即可实现对机器人的控制。如发布[10,0,0,0,0,0]即表示对机器人施加x轴方向10N的力,机器人x轴方向前进;发布[0,0,0,0,0,10]即表示对机器人施加z轴方向10N*m的力矩,机器人偏航方向逆时针转动。
这部分内容相当简单,基本上读懂推进器电机模型文件就很容易能读懂程序。可以查阅之前撰写的关于电机模型文件的文章(链接)。程序对应cabin_controllers/pwm_controller。实际上就是编程实现模型文件中推进器推力与pwm波间的关系的函数。 一、输入输出 监听topic: (1)/command/thrust,格式:
现在开始介绍demo的基础控制模块程序。基础控制模块包含推力分配模块、PWM波计算模块,数据串口下发模块。每个模块的主要功能可以回头看软件框架简介的那一篇文章,在此不做介绍,后续主要介绍的是程序中的一些关键点。 本文主要介绍的推力分配模块的几个关键函数。对应程序中的cabin_controllers/thruster_controller。这块可能写得杂且乱。 &n
水下平台,如ROV,AUV等的机械结构通常会随着配件的变化而变化。比如,改变推进器的布局,添加重量比较大的传感器等。机械结构的变化反过来会影响运动控制。因此,在设计软件架构时,将机械参数在程序中写死是非常不合理的。根据机械模型设计配置文件,供程序加载是比较理想方案。 机械模型反应推进器布局等,是根据机器人运动需求进行推力分配的关键。在具体解析的基础控制框架的程序之前,我们
Demo测试时需要岸上PC与树莓派在同一局域网下运行,二者能进行通信。下水测试时总的设备连接大致如下图。 Fathom-X Interface实际上就是Fathom-X通信板通过网线与一个USB转换器相连,其通过与PC连接后即解决了供电问题,也解决了网络通信问题。Bluerov本体里Fathom-X通信板通过网线与树莓派连接。零浮力缆将两块Fa
做工程时需要在树莓派进行串口通信。具体为接收到某个ROS的topic数据后,向串口下发数据。代码编写有两种方法。 方法一:借助serial库 1、运行环境为ubuntu,首先安装serial库: sudo apt-get install serial 2、配置编写的package中的CMakeLists.txt 在find_pack
准备工具:需要备份的SD卡,读卡器,PC(Linux) 1、安装必备工具软件: sudo apt-get install dosfstools dump parted kpartx 2、将装载sd卡的读卡器插入PC,查看sd卡使用的空间 df -h 如图,此次sd卡对应的设备名为/dev/sde,其中sde1为boot文件,sde2为/根目录文件。可见,sd卡使用了7
本文主要介绍ROV水下目标跟踪的简易demo软件实现的思路。 一、视觉模块 视觉模块的任务为:通过单目相机识别目标,并计算目标中心位置与图像中心位置的偏差,通过PID控制器得到控制量。demo中得到的控制量可以理解为竖直方向的推力,以及偏航(yaw)方向的转矩。分别实现在图像坐标下y方向和x方向的目标跟踪。 1、单目相机驱动 单目相机接在树莓
当前,水下领域比较小众,开源的资料比较少。Bluerov作为成熟的产品,结合其开源的优势,经历了多年的技术迭代,在市场上受到极大欢迎。刚接触水下领域时,希望能找到一个比较方便的实验平台,开源的Bluerov基本上算是唯一的选择。 Bluerov本身的软件架构,Pixhawk(ardusub)—— Raspberry Pi 3B(不能升级)——QGroundControl,
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信