ubuntu16.04下利用ROS启动LPMS-CURS、CURS2等型号IMU;用imu控制turtlesim--教程

2023-05-16

文章目录

  • IMU型号及协议
      • 第一步 下载安装 LPsensor library
      • 第二步 设置ROS和carkin工作空间
      • 第三步 下载编译LPMS IMU的ROS驱动
      • 第四步 启动IMU(可能也会遇到问题)
  • 遇到的问题
      • 1.ubuntu14.04LTS下无法运行IMU的问题
      • 2.出现/dev/ttyUSB0 permission denied等问题
  • IMU开发
    • IMU数据显示及类型
    • IMU rviz显示
      • 安装rviz中imu插件
    • IMU 控制turtlesim小乌龟
      • 新建ros包
      • 新建cpp
        • 代码解释:
      • 修改cmakelists.txt
      • 编写launch文件
      • 编译运行

IMU型号及协议

实验室购买的IMU型号为LPMS-CURSLPMS-CURS2
LPMS公司官方没有提供IMU的驱动程序,此驱动程序是由一个实验室做的: Larics laboratory
并且他们写的驱动已经在github上开源!!!

第一步 下载安装 LPsensor library

下载链接:https://lp-research.com/support/

在这里插入图片描述
这里我们选用的是LpSensor-1.3.5 library (Ubuntu Linux 64-bit binary)
下载完成后:
在这里插入图片描述
直接提取到主文件夹

sudo dpkg -i LpSensor-1.3.5-Linux-x86-64/liblpsensor-1.3.5-Linux.deb
dpkg -L liblpsensor

因为买的IMU没有蓝牙链接功能,所以没有安装libbluetooth-dev

第二步 设置ROS和carkin工作空间

如果catkin_ws下有src工作空间,或者之前学过ROS的初级教程,这一步可以跳过
catkin_init_workspace为初始化工作空间命令!

mkdir -p ~/catkin_ws/src    
cd !:2
catkin_init_workspace

第三步 下载编译LPMS IMU的ROS驱动

下载资源来自github
链接为:https://github.com/larics/timesync_ros.git
链接为: https://github.com/larics/lpms_imu.git
下载命令为:

cd ~/catkin_ws/src
git clone https://github.com/larics/timesync_ros.git
git clone https://github.com/larics/lpms_imu.git

编译命令为:

cd ~/catkin_ws
source devel/setup.bash
catkin_make

此时会显示编译成功
若此处有问题,可参考下面遇到的问题或者百度
在这里插入图片描述

第四步 启动IMU(可能也会遇到问题)

采用USB线连接,查看usb端口号,默认条件下为:/dev/ttyUSB0

 ls /dev/ttyUSB*

在这里插入图片描述
首先把将当前工作空间设置在ROS工作环境的最顶层,命令为:

cd ~/catkin_ws/
source devel/setup.bash 

其余命令:
启动ROS

roscore
rosrun rqt_plot rqt_plot
source devel/setup.bash 
rosrun lpms_imu lpms_imu_node

此处可能容易出问题,比如出现/dev/ttyUSB0 permission denied等问题,参考下面
在这里插入图片描述
在rqt_plot的输入框中填入:

/imu/linear_acceleration

在这里插入图片描述

在这里插入图片描述
IMU在ROS可以启用。后续会更新处理数据等问题。

遇到的问题

1.ubuntu14.04LTS下无法运行IMU的问题

在这里插入图片描述
因为CMakelists.txt文件里面的要求C++版本为14。
然而ubuntu14.04支持的GCC版本为4.8.4,不支持C++14,导致编译不通过。ubuntu16.04的GCC版本为5.4.0,支持C++14.
在这里插入图片描述
解决方法:
1.ubuntu14.04升级系统为ubuntu16.04.
2.ubuntu14.04升级GCC版本—5.4.0就可以,不用非要升最高
升级教程:https://blog.csdn.net/answerMack/article/details/88342876

2.出现/dev/ttyUSB0 permission denied等问题

到最后一步了,可是读取不到IMU的数据。
这个问题的参考链接为https://blog.csdn.net/zbrj12345/article/details/79752221

是因为没有权限去读/dev/ttyUSB0的数据。所以可以按照上述的方法。

sudo chmod 777 /dev/ttyUSB0

修改权限为可读可写可执行,但是这种设置电脑重启后,又会出现这种问题,还要重新设置.因此查询资料,可以用下面这条指令:

  sudo usermod -aG dialout username

其中username是用户名,换成自己电脑的用户名即可.
把此用户名加入dialout用户组,然后注销下电脑,即可.这样下次重启也不用修改权限了

IMU开发

IMU数据显示及类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IMU rviz显示

安装rviz中imu插件

安装库:https://github.com/ccny-ros-pkg/imu_tools/tree/kinetic
参考教程:http://wiki.ros.org/rviz_imu_plugin
在Global Options里面的Fixed Frame中键入/imu:
按下面设置参数,显示imu:
在这里插入图片描述

IMU 控制turtlesim小乌龟

新建ros包

在/home/ma/catkin_ws1/src下:

catkin_create_pkg imu_turtlesim roscpp std_msgs sensor_msgs tf geometry_msgs

xml文件:
在这里插入图片描述

新建cpp

在/home/ma/catkin_ws1/src/imu_turtlesim/src下:新建imu_turtlesim.cpp:

#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
#include<sensor_msgs/Imu.h>
#include<iostream>
#include<tf/LinearMath/Matrix3x3.h>
#include<tf/LinearMath/Quaternion.h>

using namespace std;

class TeleopImu{
public:
  TeleopImu();
private:
  void callBack(const sensor_msgs::Imu::ConstPtr& imu);
  ros::NodeHandle n;
  ros::Publisher pub;
  ros::Subscriber sub;
};



TeleopImu::TeleopImu()
{        
	pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",1);
	sub = n.subscribe<sensor_msgs::Imu>("imu", 10, &TeleopImu::callBack, this);
}



void TeleopImu::callBack(const sensor_msgs::Imu::ConstPtr& imu)
{
	geometry_msgs::Twist vel;
	tf::Quaternion bq(imu->orientation.x,imu->orientation.y,imu->orientation.z,imu->orientation.w);
	double roll,pitch,yaw;
	tf::Matrix3x3(bq).getRPY(roll,pitch,yaw);
	vel.angular.z = roll;
	vel.linear.x = pitch;
	pub.publish(vel);
}

int main(int argc, char** argv)
{
	ros::init(argc, argv, "teleopImu");
	TeleopImu teleop_turtle;
	ros::spin();
}

代码解释:

tf::Quaternion bq(imu->orientation.x,imu->orientation.y,imu->orientation.z,imu->orientation.w);
	double roll,pitch,yaw;
	tf::Matrix3x3(bq).getRPY(roll,pitch,yaw);

命令为四元数转欧拉角

修改cmakelists.txt

添加:

add_executable(imu_turtlesim src/imu_turtlesim.cpp)
target_link_libraries(imu_turtlesim
   ${catkin_LIBRARIES}
 )

编写launch文件

/home/ma/catkin_ws1/src/imu_turtlesim
新建launch文件夹----新建imu_turtlesim.launch

<launch>
	<node pkg="turtlesim" type="turtlesim_node" name="sim"/>
	<node pkg="imu_turtlesim" type="imu_turtlesim" name="imu_turtlesim" />

</launch>

编译运行

roslaunch imu_turtlesim imu_turtlesim.launch

在这里插入图片描述
参考书籍:Learning ROS for Robotics Programming Second Edition

参考教程:
[1]官方链接:https://lp-research.com/ros-and-lp-research-imus-simple/

ubuntu下截图小工具链接教程:https://blog.csdn.net/qq_38880380/article/details/78233687
ctrl+A即可截图,爽歪歪!!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu16.04下利用ROS启动LPMS-CURS、CURS2等型号IMU;用imu控制turtlesim--教程 的相关文章

  • jetbrans rider 格式化代码时,{}不换行

    因为之前是写JAVA的 xff0c 所以对代码的格式优点洁癖 我希望看到的代码格式是这样的 span class hljs keyword private span span class hljs keyword void span spa
  • unity 设置物体不能被穿透

    墙壁box collider Is Trigger不勾选 cube xff0c rigidbody collision detection 设置为continuous dynamic
  • ROS运行gazebo的错误exit code 134解决方案

    出现此错误会导致Gazebo打不开 xff0c 异常退出 解决办法如下 xff1a 在终端下将环境变量设置为0 export SVGA VGPU10 61 0 此解决方案来自于 xff1a https blog csdn net xiaod
  • docker使用——容器不能访问外网

    如果之前一直正常使用 xff0c 然后发生宿主机可访问外网 xff0c 但容器不能的问题 xff0c 可以尝试重启docker服务解决 xff1a gt gt gt sercice docker restart span class hlj
  • iOS开发遇到的问题

    385 scrollView不接受点击事件 xff0c 是因为事件传递失败 MyScrollView m Created by beyond on 15 6 6 Copyright c 2015年 beyond com All rights
  • C++学习推荐书目

    语言入门 有丰富C经验 缺乏C 43 43 经验的 C 43 43 Primer 3RD 有其他语言的丰富经验的 The C 43 43 Programming Language 简称TCPL 对不住纯C的fans了 如果选择薄一点的书 x
  • 2011年个人总结

    2011 年个人总结 花絮 xff1a 我们习惯总结过去的一年 xff0c 但每年都是一样的 xff0c 我们拼命的工作 xff0c 为了生活 xff0c 一成不变 xff0c 却又常常迷茫 而写写总结 xff0c 是为了以后更好的生活 x
  • VNC连接失败:The connection was refused by the host computer

    解决方法 xff1a 1 用Xshell登陆自己的服务器 2 在命令行中输入vncserver 命令行中出现 xff1a Warning optimal6 2 is taken because of tmp X2 lock Remove t
  • 业务层 、服务层、数据层、表现层

    一般说来 xff0c 业务逻辑层中的模块包含了系统所需要的所有功能上的算法和计算过程 xff0c 并与数据访问层和表现层交互 抽象的说 xff0c 业务逻辑层就是处理与业务相关的部分 xff0c 一般来说 xff0c 业务层包含一系列的执行
  • 计算机视觉:传统图像处理方法

    1 图像分割 经典的数字图像分割算法一般是基于灰度值的两个基本特征之一 xff1a 不连续性和相似性 xff08 1 xff09 基于阈值 xff1a 基于图像的灰度特征来计算一个或多个灰度阈值 xff0c 并将图像中每个像素的灰度值与阈值
  • 基于UGUI实现类似Excel表格功能

    曾经有一个类似这种需求 xff0c 想在Unity中实现类似Excel表中的一个功能 xff0c 能在Scene窗口中 新增行 可视化配置 所见所得 单元格合并 等功能 经过我对UGUI的一些深层次了解以及结合Editor编辑器窗口开发 x
  • 电子货架标签应用浅析(ESL)

    关注与分享 xff0c 是对原创最大的鼓励 年底了 xff0c 会断续介绍几个主要的BLE的应用及市场情况 xff0c 这篇文章介绍的是电子货架标签 xff0c ESL Electronic Shelf Label 文章将从应用简介 xff
  • 最详细UWB技术及特点介绍

    关注与分享 xff0c 是对原创最大的鼓励 这篇文章偏技术 xff0c 信息偏深 xff0c 建议大家可以先跳到感兴趣的章节阅读 xff1b 01 UWB简介 UWB是Ultra Wide Band缩写 xff0c 来源于很久之前的脉冲通信
  • 浅聊Matter协议 (原CHIP协议)

    聚焦 xff1a 芯产品 xff0c 芯市场 xff0c 芯资讯 因为Matter协议目前还没有发布 xff0c 标准只针对部分协会成员开放 xff1b 很多朋友可能听过这个名字 xff0c 然后知道是一个 上层 协议 xff0c 更多内容
  • 2021 MCU WiFi竞争新格局,国产MCU WiFi芯片盘点,附录2020/2021 MCU WiFi排行

    关注智联网事 iotthings xff1a 芯产品 xff0c 芯市场 xff0c 芯资讯 缺货 xff0c 是半导体产业2021年最主要的基调 xff0c 有公司拿不到产能 xff0c 有公司新芯片流片周期大幅拉长 xff1b 新冠病情
  • 芯科(Silabs) Matter 全栈解决方案,附录高质量Matter培训资

    关注智联网事 xff1a 芯产品 xff0c 芯市场 xff0c 芯资讯 对芯科的最初印象 xff0c 最早应该是2014 5年左右 xff0c 当时SI44xx系列渗透了很多市场的客户 xff0c 记得一个是低功耗的特性 xff0c 一个
  • WAF技术选型介绍

    WAF目前是企业必不可少的安全设备 xff0c 目前常见的开源技术选型包括 xff1a jxwafopenstarngx lua wafApache APISIXmodsecurity 介绍参考 xff1a https zhuanlan z
  • int 占多少字节

    char 1 int 4 long 8 float 4 double 8 xff08 1 xff09 使用VC xff0c int类型占4个字节 xff08 2 xff09 使用Turbo C xff0c int类型占2个字节 16位编译器
  • 海外LPWAN的王者是我,一文看懂Wi-Sun协议

    聚焦 xff1a 芯产品 xff0c 芯市场 xff0c 芯技术 注 xff1a 欢迎加入文章底部的 lt 物联坊间 gt 微信 刚刚毕业的我 xff0c 有参与城市照明系统的建设 xff0c 包括城市公交系统 xff0c 那个时候困扰我的
  • 22家国产汽车MCU公司及型号盘点

    专注芯片 xff0c 应用系统 xff0c 行销技能的公众号 如果有一家芯片MCU或模拟公司和你说 xff0c 他不做汽车方向芯片 xff0c 你可以内心欣喜的 xff0c 严肃的问一句 xff0c 为什么 xff1b 做汽车芯片 xff0

随机推荐