На основе учебного пособия здесь я пытался создать свои запуски для запуска нескольких роботов в беседке.У каждого робота есть узел [называемый стопором], который заботится о его перемещении.Я хочу, чтобы каждый робот перемещался отдельно, поэтому я буду публиковать в теме {robot_name} / cmd_vel_mux / input / teleop.
при запуске «rostopic info / cmd_vel_mux / input / teleop» я заметил, что у меня есть только mobile_base_nodelet_managerкак подписчик, без издателя (издатель существует в теме {robot_name} / cmd_vel_mux / input / teleop. Поэтому я использовал перенаправление, но оно все еще не работает, и появляется та же проблема.
one_robot.lanuch
<?xml version="1.0"?>
<launch>
<arg name="robot_name"/>
<arg name="init_pose"/>
<node name="spawn_minibot_model" pkg="gazebo_ros" type="spawn_model"
args="$(arg init_pose) -urdf -param /robot_description -model $(arg robot_name)"
respawn="false" output="screen" />
<!-- Launch stopper node -->
<node name="stopper" pkg="stopper" type="stopper" output="screen" args="$(arg robot_name)">
<remap from="scan" to="$(arg robot_name)/scan"/>
<remap from="cmd_vel_mux/input/teleop" to="$(arg robot_name)/cmd_vel_mux/input/teleop"/>
</node>
</launch>
robots.launch
<?xml version="1.0"?>
<launch>
<!-- No namespace here as we will share this description.
Access with slash at the beginning -->
<param name="robot_description"
command="$(find xacro)/xacro.py $(find turtlebot_description)/robots/kobuki_hexagons_asus_xtion_pro.urdf.xacro"/>
<!-- BEGIN ROBOT 1-->
<group ns="robot1">
<param name="tf_prefix" value="robot1_tf" />
<include file="$(find stopper)/launch/one_robot.launch" >
<arg name="init_pose" value="-x 1 -y 1 -z 0" />
<arg name="robot_name" value="Robot1" />
</include>
</group>
<!-- BEGIN ROBOT 2-->
<group ns="robot2">
<param name="tf_prefix" value="robot2_tf" />
<include file="$(find stopper)/launch/one_robot.launch" >
<arg name="init_pose" value="-x -1 -y 1 -z 0" />
<arg name="robot_name" value="Robot2" />
</include>
</group>
</launch>
multiple_robots.launch
<?xml version="1.0"?>
<launch>
<param name="/use_sim_time" value="true" />
<!-- include our robots -->
<include file="$(find stopper)/launch/robots.launch"/>
<!-- start world -->
<include file="$(find turtlebot_gazebo)/launch/turtlebot_world.launch"/>
</launch>
- Как это выглядит, я попытался переназначить в one_robot.launch, но он все еще не работал, как я уже упоминал ранее. Я замечаю, что переназначение работает, только если я делаю это в
multiple_robots.launch
, но это на самом деле невозможноя, потому что там мы не знаем имен роботов, но только в one_robot.launch
.
Я хотел бы получить вашу помощь, чтобы решить эту проблему, я потратил много времени на это.Большое спасибо!