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

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则