项目场景:

ROS导航框架下的一个局部路径规划插件源码地址


相关文献:

C. Rösmann, F. Hoffmann and T. Bertram: Integrated online trajectory planning and optimization in distinctive topologies, Robotics and Autonomous Systems, Vol. 88, 2017, pp. 142–153. C. Rösmann, W. Feiten, T. Wösch, F. Hoffmann and T. Bertram: Trajectory modification considering dynamic constraints of autonomous robots. Proc. 7th German Conference on Robotics, Germany, Munich, May 2012, pp 74–79. C. Rösmann, W. Feiten, T. Wösch, F. Hoffmann and T. Bertram: Efficient trajectory optimization using a sparse model. Proc. IEEE European Conference on Mobile Robots, Spain, Barcelona, Sept. 2013, pp. 138–143. C. Rösmann, F. Hoffmann and T. Bertram: Planning of Multiple Robot Trajectories in Distinctive Topologies, Proc. IEEE European Conference on Mobile Robots, UK, Lincoln, Sept. 2015. C. Rösmann, F. Hoffmann and T. Bertram: Kinodynamic Trajectory Optimization and Control for Car-Like Robots, IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Vancouver, BC, Canada, Sept. 2017.


导航包安装:

首先用gmapping建立实验室地图 链接在此

创客智造上已经有的我就不重复了,我只写一下需要注意的事项。

全部流程走完,amcl导航应该可以用了,下一步就是加入teb插件。参考这篇博客

下载到工作空间之后

rosdep install teb_local_planner

报错:

ERROR: Rosdep cannot find all required resources to answer your query
Missing resource teb_local_planner
ROS path [0]=/opt/ros/indigo/share/ros
ROS path [1]=/home/turtlebot/turtlebot_ws/src
ROS path [2]=/home/turtlebot/catkin_ws/src
ROS path [3]=/opt/ros/indigo/share
ROS path [4]=/opt/ros/indigo/stacks

这一步我是肯定知道要报错的,source一下之后,再报错:

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
teb_local_planner: Cannot locate rosdep definition for [visualization_msgs]

好怀念没重装系统之前,一下就编译过去了.

rosdep install --from-paths src --ignore-src --rosdistro=indigo -y

报错:

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
teb_local_planner: Cannot locate rosdep definition for [costmap_converter]

再来

rosdep install --from-paths ~/turtlebot_ws/src/teb_local_planner-indigo-devel --ignore-src -r

也不行:

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
teb_local_planner: Cannot locate rosdep definition for [costmap_converter]
Continuing to install resolvable dependencies...
#All required rosdeps installed successfully

上网一查发现有人遇到过这个问题

The problem is that costmap_converter is also not released into Hydro (see wiki/costmap_converter). You'll have to try and see whether you can build that from source on Hydro as well. Just place the package in the same workspace as where you have teb_local_planner. But again: no guarantees that this will work.

大意是说costmap_converter没有发行在Hydro上(当然也没有在indigo上),上wiki一查果然没有

sudo apt-get install ros-indigo-costmap-converter

rosdep install --from-paths ~/turtlebot_ws/src/teb_local_planner-indigo-devel --ignore-src -r

显示OK

#All required rosdeps installed successfully

单独编译teb:

catkin_make -DCATKIN_WHITELIST_PACKAGES=“~/turtlebot_ws/src/teb_local_planner”

查看是否编译完成:

rospack plugins --attrib=plugin nav_core

成功

move_slow_and_clear /opt/ros/indigo/share/move_slow_and_clear/recovery_plugin.xml
base_local_planner /opt/ros/indigo/share/base_local_planner/blp_plugin.xml
clear_costmap_recovery /opt/ros/indigo/share/clear_costmap_recovery/ccr_plugin.xml
dwa_local_planner /opt/ros/indigo/share/dwa_local_planner/blp_plugin.xml
global_planner /opt/ros/indigo/share/global_planner/bgp_plugin.xml
navfn /opt/ros/indigo/share/navfn/bgp_plugin.xml
rotate_recovery /opt/ros/indigo/share/rotate_recovery/rotate_plugin.xml
teb_local_planner /home/turtlebot/turtlebot_ws/src/teb_local_planner/teb_local_planner_plugin.xml
carrot_planner /opt/ros/indigo/share/carrot_planner/bgp_plugin.xml

之后继续这篇博客


ROS与MATLAB通讯:

参考这篇博客
想把机器人运行时的速度和角速度画出来,科研的每一步都如同在黑暗中摸索前行,所以说难呀。

一、主从机连上同一局域网,直接用笔记本开热点:

二、修改ubuntu端的/etc/hosts文件,添加:

172.27.77.110 LAPTOP-62K6ND8C

三、matlab端输入:(设置ROS主机的IP地址为Ubuntu端电脑的IP)

setenv('ROS_MASTER_URI','http://192.168.137.125:11311')
启动ROS:rosinit
关闭ROS:rosshutdown
查看话题:rostopic list

成功:

四、接收信息并画图

laser = rossubscriber('/base_scan');
scandata = receive(laser,10);
plot(scandata)

添加地图转换:

就算科研的每一步都举步维艰,我们也要负重前行。

突然忘记怎么加插件的了,遇事不决上wiki

也可以参考教程里面的写法。

DWA导航实验:

运行DWA是为了和TEB作对比,再跑一遍是因为之前是用激光跑的,这次用相机的伪激光数据跑,不知道效果能不能好点:

roslaunch turtlebot_bringup minimal.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch
roslaunch turtlebot_navigation amcl_demo.launch map_file:=/home/turtlebot/map/hokuyo_gmapping3.yaml

效果非常不好(我确实想让他差点但是这差的有点过头了),

没跑两步开始转圈(转好几次):

[ WARN] [1608269171.842333253]: DWA planner failed to produce path.
[ WARN] [1608269177.040261644]: Clearing costmap to unstuck robot (3.000000m).
[ WARN] [1608269182.240274629]: Rotate recovery behavior started.
[ WARN] [1608269187.640244875]: Clearing costmap to unstuck robot (1.840000m).
[ WARN] [1608269192.840292163]: Rotate recovery behavior started.

狭窄通道处:

[ WARN] [1608269342.893989734]: Clearing costmap to unstuck robot (1.840000m).
[ WARN] [1608269343.450923452]: Costmap2DROS transform timeout. Current time: 1608269343.4508, global_pose stamp: 1608269342.9126, tolerance: 0.5000
[ WARN] [1608269343.450990650]: Could not get robot pose, cancelling pose reconfiguration
[ WARN] [1608269343.496715714]: Unable to get starting pose of robot, unable to create global plan
[ WARN] [1608269343.693770662]: Unable to get starting pose of robot, unable to create global plan
[ WARN] [1608269343.893746296]: Unable to get starting pose of robot, unable to create global plan
[ WARN] [1608269344.093846252]: Unable to get starting pose of robot, unable to create global plan
[ WARN] [1608269344.293736232]: Unable to get starting pose of robot, unable to create global plan

直接过不了,难道说换了相机之后效果变差了?
经过无数次实验失败,怎么调参都不行那种,我终于可以断定用深度相机做导航确实很垃圾,深度数据转换后激光数据的精度和真正的激光数据完全不在一个档次上,机器人走不了两步就开始转圈(我本来指望相机能把初始位姿这个问题搞定),还是老老实实用激光吧。
之前改的程序因为师弟重装系统无了,我对怎么改毫无头绪,翻了好久才把参考的文章找到。https://blog.csdn.net/kuizhao8951/article/details/103889759注意xml文件不能复制粘贴。
想起来可以使用惯导显示速度和加速度,参考链接。

前几天想用imu显示速度曲线结果一直没成功,然后一直死磕,最后以系统崩坏收场,我前期那么多东西全部付诸东流,现在就是非常后悔。现在仔细想想也就是gcc版本问题,但是这个东西涉及到系统内核,实在非常危险,那天查了无数资料,又是建软链接(软链接也不是什么好东西,不要轻易碰)又是下东西,后来软链接层数加多了,系统直接找不到文件了,然后又开始疯狂删,一不小心把不该删的东西给删掉了,导致apt-get失效,万事休矣。

今天找到一个不用正则表达式的方式:

file_path="http://1.1.1.1:9001/group1/M00/00/37/wKgfdVoNSTKAKXAzAAD25Sg6ZTE5747.gz";(这里写你自己的路径)
file_path.substr(file_path.rfind("/")+1);  (可惜还是不好用)

gcc版本说到底也就是c++版本的问题,因为c++11增加了一些新特性,所以普通gcc编译不过去肯定报错。版本问题确实麻烦一会这个不好使一会那个编译不过,什么时候能出一个兼容一切的版本就好了。

TEB仿真实验:

内容不够,百般无奈,加点仿真好了。照着Tutorials上面做吧。

roslaunch teb_local_planner test_optim_node.launch

报错:

ERROR: cannot launch node of type [teb_local_planner/test_optim_node]: can't locate node [test_optim_node] in package [teb_local_planner]

检查odom:


百度了一下,似乎是没有生成可执行文件,可以使用手动make来解决,在对应的项目文件中新建build文件夹,确保build文件夹上一级含有cmakeLists文件,然后使用下面的命令进行构建,注意每次更改程序之后都需要手动重新进行make。

cmake ..
make

看样子在工作空间根目录下直接catkin_make不好使,成功

速度可视化:

rosrun teb_local_planner_tutorials visualize_velocity_profile.py

报错:

Traceback (most recent call last):File "/home/cjt/turtlebot_ws/src/teb_local_planner_tutorials/scripts/visualize_velocity_profile.py", line 9, in <module>from teb_local_planner.msg import FeedbackMsg, TrajectoryMsg, TrajectoryPointMsg
ImportError: No module named teb_local_planner.msg

因为脚本是用python编写的,涉及到环境变量的问题,经过无数次失败,我终于有点眉目了。

设置python环境参考:

cjt@cjt-ubuntu:~$ python
Python 2.7.6 (default, Nov 13 2018, 12:45:42)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/cjt/turtlebot_ws/devel/lib/python2.7/dist-packages', '/opt/ros/indigo/lib/python2.7/dist-packages', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

sys.path包含了一个Python解释器自动查找所需模块的路径的列表。注意列表中的第一个字符串是空的,这说明当前目录也是sys.path中的一部份,环境变量PYTHONPATH也一样。这说明你可以在程序中引入当前目录中的模块。

可以看到我们确实没有把需要的路径添加进去。

通过建立.pth文件方式,在python2.7的site-packages文件夹下中创建 .pth文件,然后将需要添加的路径写到.pth文件中去

cd /usr/local/lib/python2.7/dist-packages
sudo nano pythonpathdelf.pth(^按ctrl)
写入(我说之前为啥一直写不进去,原来是没找对地方,写入的必须是python文件才行):/home/cjt/turtlebot_ws/src/teb_local_planner/build/devel/lib/python2.7/dist-packages/teb_local_planner/msg

再查OK:

cjt@cjt-ubuntu:~$ python
Python 2.7.6 (default, Nov 13 2018, 12:45:42)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/cjt/turtlebot_ws/devel/lib/python2.7/dist-packages', '/opt/ros/indigo/lib/python2.7/dist-packages', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/home/cjt/turtlebot_ws/src/teb_local_planner/build/devel/lib/python2.7/dist-packages/teb_local_planner/msg', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

然而再运行还是不行,搞不懂。

百思不得其解,我又make了几次teb_local_planner那个包,然后那个包变得非常乱,我直接删了重装好了,反正再遇到什么问题都有记录的。

sudo apt-get install ros-indigo-teb-local-planner
rosdep install --from-paths src --ignore-src --rosdistro=indigo -y

再运行就可以了,实在是莫名其妙。

rosparam set /test_optim_node/publish_feedback true
roslaunch teb_local_planner test_optim_node.launch
cjt@cjt-ubuntu:~$ rosrun teb_local_planner_tutorials visualize_velocity_profile.py
[INFO] [WallTime: 1608534468.714216] Visualizing velocity profile published on '/test_optim_node/teb_feedback'.
[INFO] [WallTime: 1608534468.714789] Make sure to enable rosparam 'publish_feedback' in the teb_local_planner.

一些有用的链接:

添加障碍物:

chmod +x publish_test_obstacles.py
rosrun teb_local_planner_tutorials publish_test_obstacles.py

跟着教程一套走下来收获了不少仿真的内容,勉强让内容充实了一点点,然而不过是垂死挣扎。

地图转换可视化:https://answers.ros.org/question/234139/costmap-converter-visualization-teb_local_planner/

如果仅仅想运行脚本用二进制安装:

sudo apt-get install ros-indigo-teb-local-planner-tutorials

二进制安装就直接编译好了,相当于黑箱安装省事很多,但是如果想进行修改还是得源码安装。

调试参数的链接

vertices:[[-0.08,0.14],[0.08,0.14],[0.16,0],[0.08,-0.14],[-0.08,-0.14],[-0.16,0]]

能显示路径信息的插件:https://github.com/coins-lab/relaxed_astar
https://web.archive.org/web/20160913102243/http://www.iroboapp.org/index.php?title=Adding_Relaxed_Astar_Global_Path_Planner_As_Plugin_in_ROS

teb_local_planner编译相关推荐

  1. indigo版本teb_local_planner常见编译问题

    项目场景: Teb局部路径规划器的indigo版本在编译时可能会遇到如下编译报错情况 问题描述 提示:/home/ros/catkin_ws/data/huang/my_ws/src/teb_loca ...

  2. Mbot ros编译环境安装

    文章目录 前言 一.安装依赖 二.源码安装ROS导航包(navigation) 前言 ROS Melodic Ubuntu 18.04 ROS.MAVROS及PX4环境安装参考:https://mbo ...

  3. ROS teb_local_planner使用

    teb_local_planner则是2D导航堆栈的base_local_planner的插件.实现了一个在线优化的本地轨迹规划器,用于导航和控制移动机器人,作为ROS 导航包的插件.全局规划器生成的 ...

  4. go build 编译报错 missing go.sum entry for module providing package

    go build 编译报错 missing go.sum entry for module providing package 解决方法 // 移除未使用的依赖 go mod tidy 再次编译,就可 ...

  5. kotlin重写构造方法编译报错:Primary constructor call expected

    在kotlin中使用construct关键字定义构造方法,如果类定义时已经有构造方法(类名后带括号),需要添加构造方法时,需要使用以下写法: class User(var name,var age){ ...

  6. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决

    在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决

  7. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  8. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  9. Go 编译的可执行文件是否有动态库链接?

    Go 引用了其他包的话,是将引用的包都编译进去.用 ldd 看几个 Go 编译出来的二进制程序有的没有动态链接库的使用.但是有的又有引用动态链接库,这个是为什么? 回答:Go 默认是开启 CGO_EN ...

最新文章

  1. sharepoint 到底是什么
  2. (69)信号发生器DDS正弦波设计(一)(第14天)
  3. php框架中数据库模型层原理,简单模拟ThinkPHP框架模型层对数据库的链式操作-Go语言中文社区...
  4. 软键盘遮挡住popupWindow问题
  5. 2022 chrome离线下载包
  6. .如何彻底删除oracle,如何做到Oracle完全卸载
  7. 简单的木马制作并且运用
  8. Chromium OS?本土化气息的的Flint OS
  9. 谷歌浏览器网页表格复制一列_如何冻结或隐藏Google表格中的列和行
  10. 关于无损APE,FLAC转AAC的小技巧
  11. 电脑上最好的5个epub阅读器
  12. Java+SSM网上订餐系统点餐餐厅系统(含源码+论文+答辩PPT等)
  13. Play with OSM (by quqi99)
  14. 余士维讲座中的十八个故事[转载]
  15. DockOne微信分享(一零五):度量驱动的DevOps转型
  16. 苹果手机怎么把游戏隐藏在计算机,苹果手机隐藏了游戏怎么找出来
  17. 燃情7月,ACMUG厦门、上海双城技术沙龙及MySQL/MariaDB创始人Monty中国行活动
  18. h5页面loading丝滑小妙招,vue+vant
  19. 怎么交c语言课堂作业,C语言第四次作业课堂
  20. Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试

热门文章

  1. HP envy13 fedora23 wlan 不能上网问题
  2. Ubuntu中文路径改英文路径
  3. 基于51单片机汽车自动照明灯远近光灯proteus仿真原理图PCB
  4. 笔记:NB-IOT常用AT命令
  5. 3D影视公司招聘内容摘录汇总
  6. [Java Path Finder][JPF学习笔记][5]编译jpf-symbc报错的解决方法
  7. html5 fieldset 样式,HTML5 fieldset 标签
  8. 美团点评数据库智能运维探索与实践
  9. 实在智能RPA助你提升电商运营效率,快速起爆店铺
  10. SQL Server 2017 补丁体系结构MSM