我正在尝试在Gazebo中模拟多个机器人(KUKA,UR5和Franka Panda)。在一个URDF文件中包含了所有用于仿真的机器人,并使用Moveit制作了所有三个机器人的单独手臂组。使用Moveit命令,我可以控制机器人,它工作得很好。问题是当我试图使用Moveit命令同时控制所有的机器人时。如果一个机器人正在工作,那么即使我命令另一个机器人也不会工作。有没有办法让我同时操作这三个机器人。
发布于 2019-03-03 22:45:04
我对MoveIt不是很熟悉。然而,我知道当您在一个roscore上运行多个系统时需要小心。以下是一些需要考虑的事项:
希望这能帮到你。
发布于 2021-02-02 18:09:21
希望我写的这篇文章对现在的某些人来说仍然是相关的。我已经处理这个问题很长一段时间了,我已经设法让两个机器人同时工作,但它们在TF树中没有分开,这是一个非常重要的部分,正如Vik提到的,我仍然在努力解决这个问题。
但是对于最少的同时工作的机器人来说,你需要的是每个机器人都有一个单独的move_group和。在我的示例中,我在启动文件中执行此操作,其中包含以下代码的一个版本:
<group ns="robot_1">
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />
<include file="$(find directory)/launch/move_group.launch" />
</group>
<group ns="robot_2">
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />
<include file="$(find directory)/launch/move_group.launch" />
</group>然后,当启动一些C++执行代码时,您需要在robots名称空间中启动,例如在终端中启动,如下所示:
ROS_NAMESPACE=robot_1 rosrun movegroup_interface robot_one_move或者这也可以放在一个单独的.launch文件中!
祝好运!
https://stackoverflow.com/questions/54926822
复制相似问题