ROS导航功能包示例husky amcl gmapping slam exploration

此功能包包含如下文件:

结构如下:

$ tree -L 2
.
├── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake
├── husky_base
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   ├── config
│   ├── include
│   ├── launch
│   ├── package.xml
│   └── src
├── husky_bringup
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   ├── config
│   ├── debian
│   ├── env-hooks
│   ├── launch
│   ├── package.xml
│   ├── scripts
│   └── udev
├── husky_control
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   ├── config
│   ├── launch
│   └── package.xml
├── husky_description
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   ├── launch
│   ├── meshes
│   ├── package.xml
│   └── urdf
├── husky_desktop
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   └── package.xml
├── husky_gazebo
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   ├── launch
│   ├── package.xml
│   └── worlds
├── husky_msgs
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   ├── msg
│   └── package.xml
├── husky_navigation
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   ├── config
│   ├── launch
│   ├── maps
│   └── package.xml
├── husky_robot
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   └── package.xml
├── husky_simulator
│   ├── CHANGELOG.rst
│   ├── CMakeLists.txt
│   └── package.xml
└── husky_viz
    ├── CHANGELOG.rst
    ├── CMakeLists.txt
    ├── launch
    ├── package.xml
    └── rviz

按官网介绍,安装并配置后,启动示例如下:

$ roslaunch husky_gazebo husky_empty_world.launch

$ roslaunch husky_viz view_robot.launch

$ roslaunch husky_navigation exploration_demo.launch

机器人在给定区域内自主探索绘制地图。下面简单看下这三个启动文件:

<launch>

  <arg name="world_name" default="worlds/empty.world"/>

  <arg name="laser_enabled" default="true"/>
  <arg name="kinect_enabled" default="false"/>

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(arg world_name)"/> <!-- world_name is wrt GAZEBO_RESOURCE_PATH environment variable -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

  <include file="$(find husky_gazebo)/launch/spawn_husky.launch">
    <arg name="laser_enabled" value="$(arg laser_enabled)"/>
    <arg name="kinect_enabled" value="$(arg kinect_enabled)"/>
  </include>

</launch>

启动一个仿真环境,激光和深度传感器有效。

<launch>
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find husky_viz)/rviz/robot.rviz" output="screen"/>
</launch>

启动rviz。

<launch>

  <!--- Run gmapping -->
  <include file="$(find husky_navigation)/launch/gmapping.launch" />

  <!--- Run Move Base -->
  <include file="$(find husky_navigation)/launch/move_base.launch" />

  <!-- Run Frontier Exploration -->
  <include file="$(find husky_navigation)/launch/exploration.launch" />

</launch>

exploration自主地图探索包含三个功能gmapping,move_base,exploration。

其中exploration.launch使用frontier_exploration进行地图探索:

<launch>

  <node pkg="frontier_exploration" type="explore_client" name="explore_client" output="screen"/>

  <node pkg="frontier_exploration" type="explore_server" name="explore_server" output="screen">

    <param name="frequency" value="1.0"/>

    <!-- Should be less than sensor range -->
    <param name="goal_aliasing" value="2.0"/>

    <rosparam file="$(find husky_navigation)/config/costmap_common.yaml" command="load" ns="explore_costmap" />
    <rosparam file="$(find husky_navigation)/config/costmap_exploration.yaml" command="load" ns="explore_costmap" />

  </node>

</launch>

graph:

tf-tree:

--附录--来源官网

1. 位 -米半径范围内有无障碍的移动空间。

月1日,用于规划的universal_robot包尚未在debs中更新,因此必须使用source),请安装universal_robot的源包,并使用它去ovveride deb安装。

年5月16日,但仍然没有已公布给公众的Indigo debs。)

移动Husky

打开交互式标记服务器:

rosrun interactive_marker_twist_server marker_server

并确保添加交互式标记插件到RViz通过单击“添加”,然后找到交互式标记。请务必将主题设置为正确的主题,否则您将无法使用它们移动Husky。

与机器人的接口是超级简单!看到场景中的标记?只需点击它们就可以移动机器人。蓝色标记将控制它的旋转。

红色标记将控制其向前和向后运动

7.移动Husky的手臂

在使用Husky的运动能力后,现在我们可以看看如何移动其手臂。在RViz的左边,你会看到一个看起来像这样的面板。确保选择“计划”。

现在单击并拖动在RViz中的末端执行器,它将突出显示当您的鼠标在它:

在下一张图片中有很多事情。我会解释。橙色手臂是手臂的目标位置。拖动球体允许您将末端执行器移动到所需位置。运动求解器将移动橙色臂,以满足您放置球体的约束。靠近球体的标记将允许你精确地将球体精确到任何你想要的。正确的着色手臂是手臂当前在真实世界中定位的地方(但在这种情况下,Gazebo仿真)。

现在,在计划选项卡中,按计划并执行。这将计划手臂采取的路径,以将其移动到橙色目标状态。执行将与机器人上的控制器交互,将其移动到该位置。

注意,在我按下计划和执行之后,手臂在仿真和可视化软件中移动。

----

ROS示例----导航功能包Husky_exploration的更多相关文章

  1. ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation

    ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...

  2. ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation

    ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...

  3. ROS二进制日志包 ROS binary logger package

    原文网址: 1 http://www.ros.org/news/2017/02/ros-binary-logger-package.html 2 https://github.com/CNR-ITIA ...

  4. 在github上最热门好评高的ROS相关功能包

    在github上最热门最受欢迎的ROS相关功能包 下面依次列出,排名不分先后: 1  Simulation Tools In ROS https://github.com/ros-simulation ...

  5. ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)

    ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python) 时隔1年,再回来总结这个问题,因为它是ros+python开发中,太常用的一个操作,需要 ...

  6. 创建ros的程序包--3

    创建ros的程序包(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) 1.一个catkin程序包由什么组成? 一个程序包要想称为catkin程序 ...

  7. ROS 笔记 程序包/节点/topic

    官方教程: wiki.ros.org/cn/ROS/tutorials 程序包打创建于编译 创建程序包 在工作空间的src底下,输入如下命令: $ catkin_create_pkg 要创建的包名 依 ...

  8. 4.1 ROS元功能包

    4.1 ROS元功能包 场景:完成ROS中一个系统性的功能,可能涉及到多个功能包,比如实现了机器人导航模块,该模块下有地图.定位.路径规划...等不同的子级功能包.那么调用者安装该模块时,需要逐一的安 ...

  9. ROS新功能包PlotJuggler绘图

    http://www.ros.org/news/2017/01/new-package-plotjuggler.html PlotJuggler,一个基于Qt的应用程序,允许用户加载,搜索和绘图数据. ...

随机推荐

  1. mysql union用法代码示例

    MYSQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时 ...

  2. 肖申克的救赎 -Hope

    典狱长诺顿高高在上,平时道貌岸然,对圣经倒背如流,实际上攫取利益时不择手段,残酷.阴险而贪婪.狱警长海利和其他警员,凶狠残暴,充当诺顿的打手,草菅囚犯的人命.他们是不是象极了我们现实中的掌权阶层?我称 ...

  3. Codeforces 538 C. Tourist's Notes

    C. Tourist's Notes   time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  4. HDU 6081 度度熊的王国战略【并查集/数据弱水题/正解最小割算法】

    链接6081 度度熊的王国战略 Time Limit: 40000/20000 MS (Java/Others) Memory Limit: 32768/132768 K (Java/Others) ...

  5. 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树)

    layout: post title: 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树) author: "luowentaoaa" ca ...

  6. Linux命令之find(一)

    find [-H] [-L] [-P] [-Olevel] [-D help| tree| search| stat| rates| opt| exec] [路径] [表达式] find是查找文件的命 ...

  7. 6、Flask实战第6天:视图函数Response返回值

    视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...

  8. 数字 function

    SELECT TRUNC(15.79), TRUNC(), ROUND(15.79), ), ), FLOOR(26.983), CEIL(26.123), ), ), ), MOD(,) FROM ...

  9. 动态RIP配置路由表

    动态RIP配置路由表 以Router11为例子: (1)配置端口ip(两个端口需要设置两个ip) Router(config)#inter f0/0 Router(config-if)#ip add ...

  10. Java杂谈3——类加载机制与初始化顺序

    Java语言的哲学:一切都是对象.对于Java虚拟机而言,一个普通的Java类同样是一个对象,那如果是对象,必然有它的初始化过程.一个类在JVM中被实例化成一个对象,需要经历三个过程:加载.链接和初始 ...