For each robot an URDF description and MoveIt configuration is provided. Additionally, PROTO model files for the Webots simulator are provided.
The goal of this repo is to allow people to easily test their software on different robot platforms. This allows validating if the algorithm is generally applicable, as well as direct comparison between achieved performances on a platform. For example, walk algorithms can be tested on all platforms and the achieved speeds on each robot can be compared.
The proto files are taken from https://humanoid.robocup.org/hl-vs2022/teams/ Some robots are not yet publicly in the git as we wait for some teams to provide licences for their model.
You should be able to launch the standalone.launch in the _description package and get a rviz2 display of your robot together with sliders to control the joints. This is mostly just for testing if the model is correct.
All the launch files in the _moveit_config package are currently not working as the are generated by the moveit_setup_assistant which is only available in ROS1 currently. This is something which needs to be fixed and unnecessary launch files need to be cleaned up. It is currently waiting for MoveIt to finish up the work on the new setup assistant.
- Create a folder with
ROBOT_NAME_description/protos - Place proto and all texture/mesh files in this folder
- Copy worlds folder from another robot into
ROBOT_NAME_description - Change the name of the robot in all the .wbt files to the one of the new proto
- Run webots and open the world file to confirm that it is working. You should see the robot. Deal with any error messages (except not finding "hl_supervisor" that is okay).
- Copy the folders
[config, launch, urdf]and the files[CMakeLists.txt, package.xml]fromANOTHER_ROBOT_NAME_descriptiontoROBOT_NAME_description - Replace all occurrences of
ANOTHER_ROBOT_NAME_descriptionwithROBOT_NAME_descriptionin all the files (including filenames) - Link the ROBOT_NAME_description directory in your ROS2 workspace (go to
ROS2_WORKSAPCE/srcdirectory and runln -s SOME_PATH/ROBOT_NAME_description) - Build the package (colcon build --packages-up-to
ROBOT_NAME_description). Fix any compilation errors. - Commit your changes until here, as we will need to change something in the proto for a moment.
- Change all HingeJointsWithBacklash to HingeJoints (the proto might already have a variable for this, otherwise use find/replace). This is necessary to do as otherwise the URDF export will generate two joints for each real joint, due to how HingeJointsWithBacklash are implemented.
- Open the world file again in webots to check if your model is still working. Fix any issues.
- Run
webots convert -t URDF ROBOT_NAME.proto -o robot.urdfand put the .urdf file in theROBOT_NAME_description/urdffolder - Revert the changes to the proto file regarding the HingeJointsWithBacklash.
- Make the model follow ROS standards: manually add
l_soleandr_soleframes if missing. Make sure that thebase_linkframe is between the first leg joints. - Use the moveit_setup_assistant to create a
ROBOT_NAME_moveit_configfolder next to theROBOT_NAME_descriptionfolder. See the MoveIt documentation for more information. You will need to createLeftLeg,RightLegandLegsplanning groups like in the other robots. At time of writing, the setup assistant is not working for ROS2, so you need to use the ROS1 version and change some files (compare to the other robots to see how). - Build the package (colcon build --packages-up-to
ROBOT_NAME_moveit_config). Fix any compilation errors. - Source your ROS2 workspace, as we have a new package (
source SOME_PATH/ROS2_WORKSAPCE/install/setup.bash) - Run
ros2 launch ROBOT_NAME_description standalone.launch. You should get a rviz2 view with your robot. Use the sliders to check if everything is okay. You might need to fix the joint limits (especially the knees should only bend to one side). Just edit these values in the URDF. Validate that thex_soleandimu_frameare correctly positioned and rotated. - Edit the
webots_robot_controller.pyinwolfgang_webots_simin the__init__()method by adding your robot to the other ones. Look into your proto to see what the names are. - You should now be able to run
ros2 launch wolfgang_webots_sim simulation.launch robot_type:=ROBOT_NAMEand get a simulation of your robot.
See here