fighting(1)主机远程监视从机navigation

由于项目需要,需要搞个多机协同的控制,已从仿真环境(gazebo)中实现了整体的控制框架,现在需要往实机上移,就从现在开始一点点的记录吧!
在这里插入图片描述

前言

只从服务器(主机)控制多个机器人(多个从机)进行移动,笔者此刻能想到的最基础的功能就是在主机上显示rviz,rviz上有很多个实时的机器人,虽然机器人之间并不能感知到对方是机器人,但是主机在rviz可以通过指定2D Nav Goal给特定的某个机器人,使得被指定的机器人移动到指定位置。
当然,全局路径以及局部路径的规划,此时都是由主机完成的,一步一步地通知机器人该移动的位置。后期如果有需要,再考虑更。

明确目标:

主机rviz显示从机,并给从机下达移动的指令。

1.主从机连接

Husarnet,使用Husarnet可以及其方便地连接多个机器人,具体连接可参考官网,如果很多人想看笔者写的简易教程,可以考虑再发篇如何连接的教程。

2.节点设置

<launch>
  <master auto="start"/>

  <!--- Run WPR1 Minimal -->
  <include file="$(find wpr1_bringup)/launch/base_mani_imu_lidar.launch" /> 

  <!-- Run Map_Server -->
  <node name="map_server" pkg="map_server" type="map_server" args="$(find wpr1_tutorials)/maps/map.yaml"/>

  <!--- Run AMCL -->
  <include file="$(find wpr1_tutorials)/nav_lidar/amcl_omni.launch" /> 

  <!--- Run Move_Base -->
  <node pkg="move_base" type="move_base" respawn="false" name="move_base"  output="screen">
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/global_costmap_params.yaml" command="load" />
    <param name="base_global_planner" value="global_planner/GlobalPlanner" /> 
    <param name="use_dijkstra" value="true"/>
    <param name="base_local_planner" value="wpr1_local_planner/Wpr1LocalPlanner" />
    <param name= "controller_frequency" value="30" type="double"/>
  </node>

  <!-- RViz -->
  <arg name="model" default="$(find wpr1_bringup)/urdf/wpr1.urdf"/>
  <arg name="gui" default="true" />
  <arg name="rvizconfig" default="$(find wpr1_tutorials)/rviz/nav.rviz" />
  <param name="use_gui" value="$(arg gui)"/>
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />

</launch>

以上部分为机器人作为一个master时,执行导航的launch文件,包括:1.机器人接口部分 2.地图服务器 3.AMCL定位 4.路径规划 5.可视化rviz窗口
节点分析:
由于主从机相连后,其实就相当于一台机器了,只不过设置ros master的被我当作是主机了,也看作是服务器了,这就要求服务器的配置足够好,有足够的算力处理数据,并分配任务。从机就负责接收主题,接收到给予回馈(也可以不给),完成后给予回馈(必须给),至负责去接收主题,并执行对应的动作,不需要思考任务如何执行,比如,不需要计算路径,只是接收来自服务器的移动指令。

2.1 主机设置

有了以上的分析,可以很清晰地分离节点了。因此:

<launch>
  <master auto="start"/>


  <!-- Run Map_Server -->
  <node name="map_server" pkg="map_server" type="map_server" args="$(find wpr1_tutorials)/maps/map.yaml"/>


  <!--- Run Move_Base -->
  <node pkg="move_base" type="move_base" respawn="false" name="move_base"  output="screen">
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find wpr1_tutorials)/nav_lidar/global_costmap_params.yaml" command="load" />
    <param name="base_global_planner" value="global_planner/GlobalPlanner" /> 
    <param name="use_dijkstra" value="true"/>
    <param name="base_local_planner" value="wpr1_local_planner/Wpr1LocalPlanner" />
    <param name= "controller_frequency" value="30" type="double"/>
  </node>

  <!-- RViz -->
  <arg name="model" default="$(find wpr1_bringup)/urdf/wpr1.urdf"/>
  <arg name="gui" default="true" />
  <arg name="rvizconfig" default="$(find wpr1_tutorials)/rviz/nav.rviz" />
  <param name="use_gui" value="$(arg gui)"/>
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />

</launch>

打开地图服务器,可以在rviz中规划路径

2.2从机设置

<launch>
  <master auto="start"/>

  <!--- Run WPR1 Minimal -->
<include file="$(find wpr1_bringup)/launch/base_mani_imu_lidar.launch" /> 



  <!--- Run AMCL -->
  <!-- <include file="$(find wpr1_tutorials)/nav_lidar/amcl_omni.launch" /> -->



</launch>

机器人需要接口设置的节点(控制机器人移动),以及导航(用于接收地点信息)

3 效果

将两部分launch文件,分别在各自系统中打开,便可以实现需要的功能了。这是迈向成功的一大步!
之后再
1.设置命名空间和tf_prefix(控制多个机器人)+ 主题头设置(对应命名空间)
2.ui界面设置
3.建图
4.任务设置(实现逻辑+具体某个小步骤的功能导入(例如:语音、抓取))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值