SBG Ellipse系列传感器Ubuntu下进行ROS节点配置

2023-10-25 13:20

本文主要是介绍SBG Ellipse系列传感器Ubuntu下进行ROS节点配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SBG ROS 节点配置

  • 1. 概述
  • 2. SBG Driver
  • 3. SBG ROS Driver
  • 4. SBG Topic
    • 4.1 SBG自定义消息
    • 4.2 ROS标准消息
  • 5. 问题及解决
    • 5.1 找不到设备
      • 5.1.1 错误信息
      • 5.1.2 解决办法
    • 5.2 接收超时
      • 5.2.1 错误信息
      • 5.2.2 解决办法
    • 5.3 总结
  • 6. 参考链接
  • 7. 延伸阅读
    • 传感器配置
    • 节点程序分析
    • 经典SLAM

1. 概述

主要介绍Ubuntu下SBG公司Ellipse N系列传感器驱动安装以及ROS下的节点配置。

2. SBG Driver

使用bash命令可以直接安装SBG公司驱动,如下,melodic注意换成自己Ubuntu的版本代号,我的是kinetic。

$ sudo apt-get install ros-melodic-sbg-driver

3. SBG ROS Driver

1
现在还需要安装ROS下使用的SBG Driver,在catkin工作空间的src文件夹使用命令

$ git clone https://github.com/SBG-Systems/sbg_ros_driver

然后重新在catkin工作空间文件夹使用catkin_make命令,无报错信息。

$ catkin_make

2
现在可以启动SBG节点了,但是注意启动顺序
新窗口a下

$ roscore

另一个窗口b下,首先cd到自己的catkin工作空间,然后使用

$ source ./devel/setup.bash

同时在窗口b下使用roslaunch命令可以看到已经预先设定好的launch文件,可以用于不同的型号、磁场矫正,具体信息可以自己手动查看。
在这里插入图片描述

4. SBG Topic

SBG节点发布的消息有两种定义方式一种是SBG公司自己定义的,一种是ROS下标准的消息类型。

4.1 SBG自定义消息

/sbg/air_data SbgAirData/sbg/ekf_euler SbgEkfEuler/sbg/ekf_nav SbgEkfNav/sbg/ekf_quat SbgEkfQuat/sbg/ekf_event{A,B,C,D,E} SbgEvent/sbg/gps_hdt SbgGpsHdt/sbg/gps_pos SbgGpsPos/sbg/gps_raw SbgGpsRaw/sbg/gps_vel SbgGpsVel/sbg/imu_data SbgImuData/sbg/imu_short SbgImuShort/sbg/mag SbgMag/sbg/mag_calib SbgMagCalib/sbg/odo_vel SbgOdoVel/sbg/ship_motion SbgShipMotion/sbg/utc_time SbgUtcTime

4.2 ROS标准消息

具体可以看到,ROS下的消息和SBG自定义消息的联系,例如

/imu/data = /sbg/imu_data + /sbg/ekf_quat

全部信息如下

/imu/data, IMU dara, requires /sbg/imu_data and /sbg/ekf_quat/imu/temp, IMU temperature, requires /sbg/imu_data/imu/velocity, IMU velocity data, requires /sbg/imu_data/imu/mag, IMU magnetic field, requires /sbg/mag/imu/pres, IMU pressure data, requires /sbg/air_data/imu/pos_ecef, Earth-Centered Earth_Fixed position, requires /sbg/ekf_nav/imu/utc_ref, UTC time reference, requires /sbg/utc_time/imu/nav_sat_fix, Navigation satellite, requires /sbg/gps_pos

5. 问题及解决

5.1 找不到设备

5.1.1 错误信息

SBG节点如果找不到传感器设备,会提示Unable to initialize the interface,未能初始化接口设备。

[ INFO] [1594611759.659713077]: SBG DRIVER - Init node, load params and connect to the device.
sbgInterfaceSerialCreate: tcgetattr fails.
[ERROR] [1594611759.696153539]: SBG_DRIVER - SBG_DRIVER - [Init] Unable to initialize the interface - SBG_ERROR

5.1.2 解决办法

SBG节点默认查找设备为/dev/sb,在对应参数文件中有定义,我使用的命令是

roslaunch sbg_driver sbg_device.launch 

所对应的参数文件为/config/sbg_device_uart_default.yaml,设备为

  # Port NameportName: "/dev/sbg"

但我的设备实际为/dev/ttyUSB0,因此可以直接修改为

  # Port NameportName: "/dev/ttyUSB0"

也可以给根据设备ID号绑定一个新的昵称,具体可参考。

5.2 接收超时

5.2.1 错误信息

SBG查找到接口设备之后会默认使用收发数据来获取设备的信息,如果未收到信息,会显示错误SBG_TIME_OUT
源代码

void SbgDevice::readDeviceInfo(void)
{SbgEComDeviceInfo device_info;SbgErrorCode      error_code; error_code = sbgEComCmdGetInfo(&m_com_handle_, &device_info);if (error_code != SBG_NO_ERROR){ROS_ERROR("Unable to get the device Info : %s", sbgErrorCodeToString(error_code));}ROS_INFO("SBG_DRIVER - productCode = %s", device_info.productCode);ROS_INFO("SBG_DRIVER - serialNumber = %u", device_info.serialNumber);ROS_INFO("SBG_DRIVER - calibationRev = %s", getVersionAsString(device_info.calibationRev).c_str());ROS_INFO("SBG_DRIVER - calibrationDate = %u / %u / %u", device_info.calibrationDay, device_info.calibrationMonth, device_info.calibrationYear);ROS_INFO("SBG_DRIVER - hardwareRev = %s", getVersionAsString(device_info.hardwareRev).c_str());ROS_INFO("SBG_DRIVER - firmwareRev = %s", getVersionAsString(device_info.firmwareRev).c_str()); 
}

如果未收到设备信息会显示错误Unable to get the device Info : SBG_TIME_OUT,也可以看到设备的所有信息都是不规则的,没有含义,例如calibrationDate = 169 / 160 / 58842,这不是一个正常的日期

[ERROR] [1594615707.526290314]: Unable to get the device Info : SBG_TIME_OUT
[ INFO] [1594615707.526437913]: SBG_DRIVER - productCode = ???=?
[ INFO] [1594615707.526485254]: SBG_DRIVER - serialNumber = 1040110480
[ INFO] [1594615707.526527230]: SBG_DRIVER - calibationRev = 0.0.127.253
[ INFO] [1594615707.526557748]: SBG_DRIVER - calibrationDate = 169 / 160 / 58842
[ INFO] [1594615707.526602807]: SBG_DRIVER - hardwareRev = 0.0.85.136
[ INFO] [1594615707.526642624]: SBG_DRIVER - firmwareRev = 61.254.229.184

5.2.2 解决办法

在对应参数文件中修改波特率,我使用的命令是

roslaunch sbg_driver sbg_device.launch 

所对应的参数文件为/config/sbg_device_uart_default.yaml,打开修改波特率,默认是115200,如果不对,可以使用试试其他的波特率,我的正确波特率为921600修改参数文件不需要重新catkin_make,直接重新启动节点就可以了。

  # Baude rate (4800 ,9600 ,19200 ,38400 ,115200 [default],230400 ,460800 ,921600)baudRate: 115200

正确的设备信息应该为下面所示,和之前的明显不一样,例如日期calibrationDate = 0 / 0 / 2000

[ INFO] [1594616055.673520805]: SBG_DRIVER - productCode = ELLIPSE2-N-G4A3-B1
[ INFO] [1594616055.673552042]: SBG_DRIVER - serialNumber = 45004137
[ INFO] [1594616055.673572702]: SBG_DRIVER - calibationRev = 1.1.0.0
[ INFO] [1594616055.673582870]: SBG_DRIVER - calibrationDate = 0 / 0 / 2000
[ INFO] [1594616055.673592075]: SBG_DRIVER - hardwareRev = 1.1.0.0
[ INFO] [1594616055.673599876]: SBG_DRIVER - firmwareRev = 1.5.240-stable
[ INFO] [1594616055.673609132]: SBG DRIVER - Initialize device for receiving data

5.3 总结

设备目录波特率要设置正确。

6. 参考链接

1.SBG_Driver

7. 延伸阅读

传感器配置

设备绑定串口名称 Ubuntu
Xsens MTi传感器 ROS下配置
SBG Ellipse系列传感器Ubuntu下进行ROS节点配置
Nooploop UWB LinkTrack ROS下配置
MTI Ellipse VLP16 LinkTrack Topic msg整理

节点程序分析

Xsens ROS 节点 时间戳以及话题
Velodyne ROS 节点 时间戳以及话题
SBG ROS 节点 时间戳 话题
NoopLoop ROS 节点 时间戳以及话题

经典SLAM

GMapping安装与配置
Hector SLAM 安装与配置
Gmapping 原理之目标分布与提议分布
LOAM SLAM安装与配置

这篇关于SBG Ellipse系列传感器Ubuntu下进行ROS节点配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q