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

相关文章

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po