-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multi robot support #207
Multi robot support #207
Conversation
Added robot name to Create 3 buttons
Namespaced dock frame id in pose republisher
Rviz now launches for each robot spawn Added static transform for prefixed odom and base_link frames Added offset launch module in irobot_create_common_bringup Fixed spawning robots with different x, y, and yaw positions
I'm not convinced by forcing a namespace even when running with a single robot. |
@alsora That's fair. What about having a |
create3_ignition defaults to spawning 'create3' robot without namespace
I'm not sure I understand why we need both namespace and robot name arguments (I still need to finish looking at the PR). I would imagine that we could do this only with the namespace argument. This would be empty by default.
A dedicated multi-robot launch file could be used such as
|
The robot name is used mostly for the model name in ignition. We could just namespace the As for the multi-robot launch file, I would suggest we make a robot1:
x: 1.0
y: 1.2
z: 0.0
yaw: 0.0
robot2:
x: 2.0
y: 0.0
z: 0.0
yaw: 1.5707 Then you can just call
|
Happy to support and contribute on this code if it proves to be the better approach. @roni-kreinin I see that you pushed something similar to us in turtlebot4_simulator as well, looks like we are trying to achieve the same things. Can we work together? |
@sp-sophia-labs Of course. Feel free to make PR's against https://github.com/roni-kreinin/create3_sim/tree/multi_robot. Most of this PR is based on your work, I just wanted to make it compatible with the way that Nav2 and the physical TurtleBot 4 robot handle namespacing. |
…ot_name arg Changed dock name to be <namespace>/standard_dock Remove robot_name arg, use just namespace for everything
@alsora I have updated it to use just the namespace. The robot model will now be The default
I tried making a multi robot launch file but ran into a couple of issues:
Currently the only way I can get multiple robots working is to launch each one in a separate terminal. |
Use ogre2 as sensor render engine Reduce max_step_size to 3ms
Looking to create a new default world to improve performance. The depot world is very GPU intensive which causes performance issues once the robot is spawned as well. |
@roni-kreinin can you add support for gazebo classic and documentation in the readme on how to use namespaces? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for addressing the requests and sorry for this taking so long!
* Working multi robot sim * Use wildcards for param files Added robot name to Create 3 buttons * Dock model is now called <robot_name>/standard_dock Namespaced dock frame id in pose republisher * Added namespacing support to Rviz config Rviz now launches for each robot spawn Added static transform for prefixed odom and base_link frames Added offset launch module in irobot_create_common_bringup Fixed spawning robots with different x, y, and yaw positions * Linter fixes * Added namespace launch arg. Defaults to 'robot_name' in create3_spawn create3_ignition defaults to spawning 'create3' robot without namespace * Frame id fixes * Changed robot name to be <namespace>/create3, rather than using a robot_name arg Changed dock name to be <namespace>/standard_dock Remove robot_name arg, use just namespace for everything * Fixed bumper Use ogre2 as sensor render engine Reduce max_step_size to 3ms * Linter fixes * Fixed import order * Multi robot support for gazebo classic * Updated README * Fixed import order
That is why I could not spawn two robots with different namespaces at the same time with a single launch.. |
@icsl-Jeon the readme file contains instructions for spawning multiple robots with different namespaces (https://github.com/iRobotEducation/create3_sim#namespacing). |
Of course I tried the instruction. |
We don't provide such a launch file, but there's nothing inherently preventing to do it. If you need help please open a separate ticket and provide us with details about your launch script and the errors/problems. |
Description
Alternative to #189, but using
GroupAction
andPushRosNamespace
for a cleaner implementation.I am also proposing that the namespace is the robot name, and by default all robots will have to be namespaced for consistency, even with just 1 robot. The default robot name and therefore namespace is
create3
.Launch files updates (ignition):
ignition.launch.py
: Launches just Gazebo without spawning a robotcreate3_spawn.launch.py
: Spawns a robot. Requires thatignition.launch.py
has been launched first.create3_ignition.launch.py
: Default launch file to launchignition.launch.py
with a defaultcreate3
robot.Other changes:
/<namespace>/cmd_vel
is now the topic being bridged to the equivalent/<namespace>/cmd_vel
ros topic.cmd_vel
topic for teleop plugin is now/create3/cmd_vel
./model/<namespace>/create3_buttons
. ROS topic is now/<namespace>/_create3_buttons
. Its hidden so that it is not confused withinterface_buttons
.ros_gz_bridge
instead ofros_ign_bridge
. Theign
version was not being terminated properly when the simulation was closed, leaving stray nodes running in the background.y
andyaw
values are changed.TODO:
Notes:
Type of change
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Provide instructions so we can reproduce. Also list any relevant details for your test configuration.
Alternatively:
Checklist