我正在尝试在凉亭中模拟多个机器人(KUKA,UR5和Franka Panda)。在URDF文件中,包括了所有用于模拟的机器人,并使用Moveit将所有三个机器人的手臂组分开。使用Moveit指挥官,我可以控制机器人,并且它工作正常。问题是当我尝试使用Moveit指令程序同时控制所有机器人时。如果一个机器人正在工作,那么即使我命令它,另一个机器人也将不工作。有什么办法可以同时处理所有三个机器人。
答案 0 :(得分:0)
我对MoveIt不太熟悉。但是我确实知道在单个roscore上运行多个系统时需要小心。这里有一些要考虑的事情:
希望这对您有帮助...
答案 1 :(得分:0)
希望这仍然与某人有关,我写了这个。 我已经处理这个问题有一段时间了,我已经设法让两个机器人同时工作,但它们在 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 文件中!
祝你好运!