icra2022写作业记录

顺便学了下git
命令行操作https://blog.csdn.net/JiaXie15/article/details/107581243
vscode操作

Part1.跑源代码

0.最开始得安装ROS,鱼香ROS一键安装指路:https://fishros.org.cn/forum/topic/20/%E5%B0%8F%E9%B1%BC%E7%9A%84%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E7%B3%BB%E5%88%97?lang=zh-CN
1.首先创建一个ROS的工作空间,教程指路https://blog.csdn.net/weixin_42237429/article/details/90238000

2.按照官网的教程组织好文件架构,官网指路https://github.com/Daffan/nav-competition-icra2022。组织好文件架构之后,工作空间下的src截图如下:
在这里插入图片描述

3.在工作空间文件夹(有src的文件夹下)catkin_make编译,出现devel和build。我曾遇到问题,显示找不到某个功能包无法编译之类,后面发现是之前在这个ubuntu上用过深度学习anaconda,anaconda和ROS的python版本是冲突的。解决方法,退出base环境或其他anaconda下的环境。参考链接指路:https://blog.csdn.net/weixin_43735353/article/details/108200337?spm=1001.2014.3001.5506

4.先进入工作空间文件夹navigate(有src的文件夹下),输入指令:

source devel/setup.bash

让这个终端之下运行的ROS能找到我们创建的工作空间地址,从而进一步运行里面的程序。

5.(不要关终端!!)再进入nav-competition-icra2022文件夹,在该文件夹下输入指令:

cd src
cd nav-competition-icra2022
python3 run.py --world_idx 200 --gui

具体指令参见下图中的终端,有几点需要注意:

  • –world_idx后面加的是环境编号,0到250都可以好像,数字越大测试环境越难。加上–gui的话表示显示图形界面。没加的话是不能看到gazebo界面的。也就是:
python3 run.py --world_idx 200
  • 前面不能有(base),也就是括号里面虚拟环境名那些,有的话说明还没退出anaconda,没法成功运行的,会卡在[ WARN] [1702017506.896557302, 0.149000000]: Failed to meet update rate! Took 0.14900000000000002132(这个错误卡了我一周真可恶啊)
  • 要在nav-competition-icra2022文件夹下运行或者run.py改成src.nav-competition-icra2022.run.py。总之就是,“终端中蓝色的路径”加上“python3后面的run.py或者src/nav-competition-icra2022/run.py”要组成绝对路径,中间的文件夹不能多也不能少,例如不能在nav-competition-icra2022文件夹下点开终端运行时,python3后面还加上nav-competition-icra2022,这样的话会文件路径会组成~/navigate/src/nav-competition-icra2022/nav-competition-icra2022/run.py。这样的话,愚蠢的计算机是不会找到你需要运行的文件的。

请添加图片描述小车在运行了,官方给的run.py是DWA
请添加图片描述运行完之后显示Test finished!和运行的时间,有三种情况,成功和碰撞和超时。接下来需要琢磨去哪改代码and怎么改。
请添加图片描述
********************************************************************************************分界线

附加1:如何启动rviz来观察规划的全局路径和局部路径:
在move_base_teb.launch文件下,launch标签内加入以下代码:

<node pkg="rviz" type="rviz" name="rviz" args="-d $(find jackal_viz)/rviz/navigation.rviz"  required="true"/>
  • 注意(find jackal_viz)不能是(find jackal_helper)。src文件夹下的 jackal_helper其实不是一个功能包,就是一个普通的文件夹。 jackal_helper下的 jackal_helper和 jackal_viz才是功能包(roscd + 功能包名jackal_helper,进入了jackal_helper文件夹的jackal_helper文件夹,才发现了问题所在)。src文件夹下的jackal_helper文件夹没有package.xml和cmakelist那些。
  • run.py89行中运行的是哪个路径规划的launch文件,就修改哪个launch文件。此处我下载了teb_local_planner,自己写了个move_base_teb.launch来运行teb算法。
    teb_local_planner下载及使用教程 https://blog.csdn.net/xiekaikaibing/article/details/80197164
    launch文件代码如下,其实和官方给的dwa的launch文件类似:
<launch>
  <!-- Start the navigation stack -->
  <!-- The configuration files are loaded from jackal_helper -->
  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">

    <rosparam file="$(find jackal_helper)/configs/params/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find jackal_helper)/configs/params/costmap_common_params.yaml" command="load" ns="local_costmap" />

    <rosparam file="$(find jackal_helper)/configs/params/odom_nav_params/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find jackal_helper)/configs/params/odom_nav_params/local_costmap_params.yaml" command="load" />

    <rosparam file="$(find jackal_helper)/configs/params/base_local_planner_params.yaml" command="load" />
    <rosparam file="$(find jackal_helper)/configs/params/move_base_params.yaml" command="load" />
    <rosparam file="$(find jackal_helper)/configs/params/teb_local_planner_params.yaml" command="load" />

    <param name="base_global_planner" type="string" value="navfn/NavfnROS" />
    <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
    

    <remap from="odom" to="odometry/filtered" />
  </node>

  <node pkg="rviz" type="rviz" name="rviz" args="-d $(find jackal_viz)/rviz/navigation.rviz"  required="true"/>

</launch>

附加2:如何调参
1.找到小车的参数
在这里插入图片描述chassis是底盘,那暂且认为小车长宽分别为0.42和0.31
2.规划器参数配置路径为jackal_helper/configs/params之下(添加的teb_local_planner_params.yaml也放在这个下面)



Part2.如何编写自己的代码来改进

知识储备:

Timed-Elastic-Band局部路径规划算法
https://blog.csdn.net/xiekaikaibing/article/details/83417223
https://www.leiphone.com/category/transportation/0TCtaBOIcFOIBN69.html

理解整个导航过程是怎么运行的https://blog.csdn.net/mecheall/article/details/104413372

TEB源码解析https://blog.csdn.net/flztiii/article/details/121545662

代码分析以及调参https://blog.csdn.net/zz123456zzss/article/details/104692548
https://blog.csdn.net/qq_23670601/article/details/98611636

如何显示机器人走过的路径https://blog.csdn.net/weixin_44025389/article/details/132622627

teb包中用到的图优化框架的学习https://zhuanlan.zhihu.com/p/121628349
https://mp.weixin.qq.com/s/j9h9lT14jCu-VvEPHQhtBw

一些疑惑:
Q:“关于time eletic band的简述:起始点、目标点状态由用户/全局规划器指定,中间插入N个控制橡皮筋形状的控制点(机器人姿态)”这样的话如何确定局部规划器的起点终点是可行的

Q:既然已知全局地图,规划出了全局路径之后,为什么还需要局部规划器。有哪些特殊情况,比如动态障碍物?
A:全局比较粗糙,有的地方可能地图没建好。同时如果实时规划全局路径的话计算代价太大。so局部路径是个好东西

Q:局部规划器是不是在尽量靠近全局规划器路径的基础上规划机器人路线
A:是

一些思路:
在狭窄环境中走走停停的情况,改进feasibility_check_no_poses

出现的一些异常情况:

  1. eband运行240环境时碰撞
    在这里插入图片描述2. 第一次开机,teb运行world200时,目标点似乎不正确,同时一开始机器人在原地卡了很久才开始运行。
    在这里插入图片描述机器人目标点是否有误呢,跑到左边去了(这个问题太频繁了)
    在这里插入图片描述

Part3.写个learning log

1220下午:跑通了teb局部规划,能使用rviz显示。但效果不好,需要调参,预计一晚上+明天一个上午。
1227晚上:朋友推荐一个好用的bag可视化工具foxglove studio,准备从改善运动顺滑性入手。这也是目前看的为数不多的能改进的东西。。。这个包虽说不完美,但是用于静态避障还是够用的吧。。哪怕竞速,感觉调参也够用阿,这作业真离谱。改到明天晚上就开始写word吧。。。

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值