4.9-移动,避障与导航

  • 现在出现了两种开发模式(框架)
    • 第一种,在ROS下针对机器人本体,相机,机械臂等开发接口,形成很多独立的包
      • 这种是根据设备来对包进行分类,分模块开发

    • 第二种,使用ROS的MoveIt!开发包,在这个大框架下,针对不同的机器人和机器人功能进行开发
      • 这种是根据功能的不同,进行接口开发!
    • 第二种貌似开始流行了!!
    • 进行接口开发!!
  • 目标:弄懂原理,看怎么样在不载入地图的情况下实现移动和避障行为,机器人行为设计
    • 不载入地图是否意味着可以载入一个空的地图?(就算不是空的,也只给一个全局围墙,像一个矩形似的),然后通过手动指定初始坐标,就可以进行局部路径规划,因为全局地图为空,相当于不进行全局规划,实际上全局规划在LV上通过语义地图进行
  • 实现:给定一个门的虚拟位置(位置,距离和角度),机器人能够走过去,避障,调整位置和姿态
  • Using the ROS MoveIt! and Navigation Stack
  • 安装
    • sudo apt-get install python-wstool
    • STEP 2: Download the source code

      • source /opt/ros/indigo/setup.bash

        mkdir moveit

        cd moveit

        mkdir src

        cd src/

        wstool init .

        wstool merge https://raw.github.com/ros-planning/moveit_docs/indigo-devel/moveit.rosinstall

        wstool update

        cd ..

    • STEP 3: Make sure MoveIt! dependencies are installed

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

    • STEP 4: Build MoveIt!

      • Assuming you are in the moveit folder created above,
      • catkin_make
    • 这样装太慢了
  • 推荐这样安装??
    •  sudo apt-get install ros-indigo-moveit-full
  • 由于这样没有源码看,所以又卸载了
  • 还是按照源码来构建吧
    • 下载后安装依赖包
    • 将文件夹复制到ROS工作空间下吧
  • 计划
    • 手动制定初始点
    • 语义地图作为全局规划器
    • 先实现手动遥操作P3AT机器人
    • 再完成机器人语义导航
    • 再实现追门
  • 在自己电脑上实现P3AT手动操作,并寻找vontrol base,只有这样才能够使用navigation stack,使用mobilesim模拟
  • 查看move_base的代码!思考改进方案,最终在自己电脑上实现,给定点序列,机器人能够实现局部避障,和完成路径。
  • amcl node    
    • 看看不启动这个节点会不会出错。如果出错,则改造,使得这个节点的功能是手工定位。zslocal
  • 已经查看globleplanner, movebase,navcore完毕
  • 继续查看代码,分析出需要修改的地方,和怎样修改。
  • 为什么收不到ROSARIA的其他消息呢?
    • tf的原因及相关研究
  • navigation stack 的相关研究及代码修改
    • 卸载deb包,不过要返回来安装bfl第三方依赖包,后来发现编译出现问题,还是把所有依赖包安装上吧
      • sudo apt-get install ros-indigo-bfl libasound2-dev libavahi-client-dev libavahi-common-dev libcaca-dev libdbus-1-dev libpulse-dev libsdl-image1.2-dev libsdl1.2-dev libslang2-dev libwebp-dev libwebpdemux1 libasound2-doc
    • 把所有有关globalplanner 和 global costmap 有关的代码都注释
      • 因为本项目的全局规划器(语义导航模块)并未完成,所以将recovery 模块也注释掉,即不加载此模块
      • 卧槽,太TM难了,代码太多了,估计编译都通不过,更不用说调试了,而且还有四元数!!
    • 方法二:地图使用空白地图,使用假定位,自己设计全局规划器
      • 估计和上面一样难;
    • 方法三:自己从头编写zsbase
      • 但是这也得是在看懂movebase的基础上好吧!!
    • 卧槽,太难了,先花一两天时间来看代码吧!

相关文章