Возрождает и контролирует вторую руку, используя OpenManipulator и MoveIt. - PullRequest
0 голосов
/ 16 июня 2019

В настоящее время я работаю над проектом, в котором я порождаю и контролирую 2 руки независимо в одной сцене для робота.Я выхожу из документации / учебных пособий OpenManipulator и использую MoveIt для управления оружием по умолчанию по этой ссылке:

http://emanual.robotis.com/docs/en/pl...

и

http://emanual.robotis.com/docs/en/pl...

Таким образом, идея заключается в том, что в нескольких разных терминалах я запускаю следующие команды для создания экземпляра gazebo и rviz, которые связаны друг с другом, и я могу использовать предоставленный графический интерфейс для управления одной рукой или использованиякод.

$ roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch (порождает беседку и манипулятор робота с основными темами / узлами)

$ roslaunch open_manipulator_controller open_manipulator_controller.launch use_parnи создает контроллеры moveit для руки. Я также изменил этот файл запуска, чтобы превратить moveit в true)

$ roslaunch open_manipulator_control_gui open_manipulator_control_gui.launch (порождает графический интерфейс пользователя)

Я хочу управлять запускомфайлы как-то, чтобы породить вторую руку, которую я могу манипулироватьт. е. независимо, так же, как я могу управлять первой рукой.Я пока не вижу удачи, и я все еще работаю над беседкой.Не уверен, как я поступлю с контроллером, который порождает rviz.

Я манипулировал файлом запуска gazebo следующим образом и смог получить 2 руки, чтобы показать, но не получал темы или сервисы для группировки отдельно илиимеют свои уникальные имена или даже spawn.

open_manipulator_gazebo.launch

    <launch>
  <!-- These are the arguments you can pass this launch file, for example paused:=true -->
  <arg name="use_robot_name" default="open_manipulator"
      doc="Must match the robotNamespace tag in the gazebo description file"/>
   <arg name="use_robot_name_2" default="open_manipulator_2"
      doc="Must match the robotNamespace tag in the gazebo description file"/>
  <arg name="paused" default="false"/>
  <arg name="use_sim_time" default="true"/>
  <arg name="gui" default="true"/>
  <arg name="headless" default="false"/>
  <arg name="debug" default="false"/>

  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find open_manipulator_gazebo)/worlds/empty.world"/>
    <arg name="debug" value="$(arg debug)" />
    <arg name="gui" value="$(arg gui)" />
    <arg name="paused" value="$(arg paused)"/>
    <arg name="use_sim_time" value="$(arg use_sim_time)"/>
    <arg name="headless" value="$(arg headless)"/>
  </include>



  <!-- Load the URDF into the ROS Parameter Server -->
  <param name="robot_description"
  command="$(find xacro)/xacro --inorder '$(find open_manipulator_description)/urdf/open_manipulator.urdf.xacro'"/>


<!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
  <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
    args="-urdf -model open_manipulator -z 0.0 -param robot_description"/>


<!-- Load the URDF into the ROS Parameter Server -->
  <param name="robot_description_2"
  command="$(find xacro)/xacro --inorder '$(find open_manipulator_description)/urdf/open_manipulator.urdf.xacro'"/>


<!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
  <node name="urdf_spawner_2" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
    args="-urdf -model open_manipulator_2 -y 1.0 -param robot_description_2"/>

 <!-- ros_control robotis manipulator launch file -->
   <include file="$(find open_manipulator_gazebo)/launch/open_manipulator_controller.launch">
      <arg name="use_robot_name" value="$(arg use_robot_name)"/>
      <arg name="use_robot_name_2" value="$(arg use_robot_name_2)"/>
    </include>


</launch>

open_manipulator_controller.launch (тот, что в пакете open_manipulator_gazebo, а не пакет open_manipulator_controller. Этот называется выше)файл запуска)

    <launch>
  <arg name="use_robot_name" />
  <arg name="use_robot_name_2" />
        <!--default="open_manipulator"-->

  <group ns="/robot_1">
  <!-- Load joint controller configurations from YAML file to parameter server -->
  <rosparam file="$(find open_manipulator_gazebo)/config/open_manipulator_controller.yaml" command="load"
           ns="$(arg use_robot_name)"/>

   <!-- load the controllers -->
  <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
 output="screen" ns="$(arg use_robot_name)" args="joint_state_controller
                                              joint1_position
                                              joint2_position
                                              joint3_position
                                              joint4_position
                                              gripper_position
                                              gripper_sub_position"/>

   <!-- Run gripper sub position publisher -->
  <node name="gripper_sub_publisher" pkg="open_manipulator_gazebo" type="gripper_sub_publisher" output="screen" ns="$(arg use_robot_name)"/>

  </group>

  <group ns="/robot_2">

   <!-- Load joint controller configurations from YAML file to parameter server -->
  <rosparam file="$(find open_manipulator_gazebo)/config/open_manipulator_controller.yaml" command="load"
           ns="$(arg use_robot_name_2)"/>

    <!-- load the controllers -->
  <node name="controller_spawner_2" pkg="controller_manager" type="spawner" respawn="false"
 output="screen" ns="$(arg use_robot_name_2)" args="joint_state_controller
                                              joint1_position
                                              joint2_position
                                              joint3_position
                                              joint4_position
                                              gripper_position
                                              gripper_sub_position"/>
  <!-- Run gripper sub position publisher -->
  <node name="gripper_sub_publisher_2" pkg="open_manipulator_gazebo" type="gripper_sub_publisher" output="screen" ns="$(arg use_robot_name_2)"/>

  </group>


</launch>

Вот откуда исходный исходный код, чтобы вы могли сравнить его с исходными файлами запуска: https://github.com/ROBOTIS-GIT/open_m...

Любая помощь будет принята.Я совсем новичок в ROS, прости меня, если я упустил что-то простое.Если я опущу какую-либо важную информацию, дайте мне знать, и я буду рад ее предоставить.

Спасибо за ваше время

С уважением,

Альфред Шейкер

...