29.在ROS中,使用C++实现IMU数据获取

作者: 机器人工匠阿杰分类: 野生技能协会 发布时间: 2022-09-05 21:24:23 浏览:18672 次

29.在ROS中,使用C++实现IMU数据获取

是韵风:
您好老师,我想把激光雷达避障以及IMU航向锁定两个功能结合在一起让机器人避障之后还能沿着原来的航向前进,于是我把两个函数放在一起,但我发现imu和激光雷达避障转向会冲突导致还是直线前进撞到障碍物,于是我在lidarcallback函数中添加了语句,只有在前方没有障碍物的时候再执行IMU航向锁定。但又出现了问题,机器人在转向避开障碍物后还没来得及绕开障碍物就被imu强制拉回还是不行,于是我查阅资料又加上了定时器,让机器人在前方没有障碍物后2秒再执行IMU航向锁定,但是现在遇到了问题,在主函数中无法成功订阅Lidarcallback,报错说没有与参数列表匹配的 重载函数 "ros::NodeHandle::subscribe" 实例,于是我把订阅语句ros::Subscriber lidar_sub = n.subscribe("lidar/scan", 100, LidarCallback);通过询问星火大模型改为了 ros::Subscriber lidar_sub = n.subscribe("lidar/scan", 1000,【&】(boost::shared_ptr msg) {LidarCallback;});代码能够成功运行但是在仿真环境中机器人不会移动,只能执行IMU航向锁定,还是没有成功订阅Lidarcallback。老师这该怎么办嘞

沉沉1001:
ROS小白,从第一集看到这,老师讲的真的太好了!我想请教一个问题,获取IMU数据,有没有方法让数据不在屏幕打印,而是生成txt格式或其他文本格式的文件,方便后面整理机器人位姿数据。感谢您的解答!!

【回复】回复 @机器人工匠阿杰 :谢谢老师!!
【回复】可以,直接用c语言的写文件函数就行。ROS还有个rosbag工具可以记录话题消息,需要用的时候重新播放到话题里就能模拟imu发数据了,跟放录像一样
格式之火:
我一打开VScode为什么Cmake tools老是提示我是否配置src这个项目[喜极而泣]

【回复】这个是有点烦,可以把它卸载了,装那个cmake没有tools的插件替代
哐哐叮叮:
老师,我自己接入了一个IMU,不是支持ros的成品,这个imu节点是需要在哪里写呢?

【回复】就直接写个节点,在节点里打开串口,解析imu发来的串口数据。解析完,直接用,或者再构造ROS的imu格式消息包,发送到imu话题中。
碇真只䒤骨AI0:
想请问下up,视频开头的话题发布标准在哪里查询呀

【回复】没事了,查到了在这 https://www.ros.org/reps/rep-0145.html
【回复】回复 @碇真只䒤骨AI0 :[喜极而泣][喜极而泣][支持][支持]
非酋注好运:
这个cmakelist文件中,比之前视频添加了add_dependencies命令,是因为这个使用tf工具吗?那为什么不在创建create pkg的时候在后边添加tf依赖呢?

【回复】add_dependencies()主要是控制一下编译顺序,先编译括号里的项目,再编译add_executeable()的节点。通常在需要使用自定义消息格式、自定义Service和ActionLib的时候需要,这个例子里其实不写也没事。 catkin_create_pkg指令填写的依赖项,在CMakeList.txt里是放在find_package()里,不会放在add_dependencies()。这个find_package()只会在编译这个软件包前检查依赖项是否已经安装,而不会保证具体的编译顺序。
【回复】回复 @机器人工匠阿杰 : 好的,多谢up主啊[热词系列_吹爆]
小可新逍客:
杰哥 我已经按照你那个方法在imu_pkg里面创建了imu_hide.cpp 但在运行rosrun imu_pkg imu_node 时一直出现couldn't find executable named imu_node below 等等 啥原因呐

【回复】回复 @小可新逍客 :1.先编译。2.编译完运行的时候别写.cpp尾缀。以上操作都在视频里有,请按照视频步骤来操作
【回复】文件名错了,是imu_node.cpp
【回复】回复 @机器人工匠阿杰 :啥都没错呀 我也给imu_node.cpp添加了可执行文件 运行rosrun的时候还是找不到对应路径下可执行的imu_node.cpp文件 是啥原因啊
Trex布鲁布鲁:
老师,请问这个官方话题名称在哪里找呢

【回复】ROS有一个官方的协议文档叫REP,里面有建议这些,但是没有强制。
机器人工匠阿杰:
雷达的话题名称是/scan,你这多写了个lidar。另外要想避障效果好,还是得有定位功能

Ccc-king-23:
大佬,请问看您的课有什么配套书籍辅助吗,有时候上水课无聊想看看相关的书[doge]

梦里么天:
大佬们,为什么我这ROSINFO跟视频里的不一样,运行节点后也不会ROSINFO[笑哭]%

乐乐爸爸2017:
大佬,我又来提问了,您的视频中,真正的没句话都有用啊~IMU这些章节看了五次了。。。。。。之前使用轮系ODOM,利用gmapping建图可以使用了,我现在用了robot_pose_ekf,融合了一个Imu数据,结果车在rviz中与大地垂直了。。。。这有可能是什么问题呢?

【回复】可能是URDF里的imu的joint和车体的link姿态和实际安装的差了90度。调一下urdf里的角度值看看
蔓越莓先生:
杰哥,这个IMU话题是ROS里面自带的吗? 就算是自带的,那么这个IMU话题又是怎么跟自己定义的URDF模型链接起来的,模型是会自动发送数据给这个IMU话题吗?

【回复】回复 @机器人工匠阿杰 :那其实是不是只要修改那个话题名称为我实物imu的话题就能直接读取到我imu实体输出的数据了
【回复】joint_state只是给rviz显示模型用,跟gazebo里的imu没有关系
【回复】回复 @蔓越莓先生 :是的

教学视频 教学 入门 课程 视频教程 教程 机器人 ROS 经验分享 学习心得

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!