ubuntu16.04下利用ROS启动LPMS-CURS、CURS2等型号IMU;用imu控制turtlesim--教程
发布日期:2022-01-20 01:07:40 浏览次数:2 分类:技术文章

本文共 3486 字,大约阅读时间需要 11 分钟。

文章目录

IMU型号及协议

实验室购买的IMU型号为LPMS-CURSLPMS-CURS2

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

第一步 下载安装 LPsensor library

下载链接:

在这里插入图片描述

这里我们选用的是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.debdpkg -L liblpsensor

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

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

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

catkin_init_workspace为初始化工作空间命令!

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

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

下载资源来自github

链接为:
链接为:
下载命令为:

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

编译命令为:

cd ~/catkin_wssource devel/setup.bashcatkin_make

此时会显示编译成功

若此处有问题,可参考下面遇到的问题或者百度
在这里插入图片描述

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

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

ls /dev/ttyUSB*

在这里插入图片描述

首先把将当前工作空间设置在ROS工作环境的最顶层,命令为:

cd ~/catkin_ws/source devel/setup.bash

其余命令:

启动ROS

roscorerosrun rqt_plot rqt_plotsource 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就可以,不用非要升最高
升级教程:

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插件

安装库:

参考教程:
在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
#include
#include
#include
#include
#include
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
("/turtle1/cmd_vel",1); sub = n.subscribe
("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

编译运行

roslaunch imu_turtlesim imu_turtlesim.launch

在这里插入图片描述

参考书籍:Learning ROS for Robotics Programming Second Edition

参考教程:

[1]官方链接:

ubuntu下截图小工具链接教程:

ctrl+A即可截图,爽歪歪!!!!

转载地址:https://blog.csdn.net/answerMack/article/details/88530410 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ROS学习----依据ROS入门教程,整理的ROS命令
下一篇:更新gcc版本之后,编译cpp文件提示std:C++11等问题,gcc添加链接

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月10日 16时27分53秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章