From c3f2c42604a6a367373caf28330e6329223e5634 Mon Sep 17 00:00:00 2001 From: Survy Vaish Date: Tue, 2 Jan 2024 02:00:59 -0800 Subject: [PATCH] Update github links for .proto visualization on webots.cloud. (#6464) --- docs/automobile/car-and-driver-libraries.md | 2 +- docs/automobile/driver-library.md | 10 +- docs/automobile/proto-nodes.md | 34 ++--- docs/automobile/robot-window.md | 2 +- docs/automobile/sumo-exporter.md | 2 +- docs/guide/samples-devices.md | 10 +- docs/guide/samples-howto.md | 2 +- ...orial-1-your-first-simulation-in-webots.md | 6 +- docs/guide/tutorial-3-appearance.md | 2 +- docs/guide/tutorial-8-the-supervisor.md | 116 +++++++++--------- docs/guide/webots-cloud.md | 4 +- docs/js/showdown-extensions.js | 1 + docs/reference/changelog-r2023.md | 4 +- docs/reference/contactproperties.md | 2 +- 14 files changed, 99 insertions(+), 98 deletions(-) diff --git a/docs/automobile/car-and-driver-libraries.md b/docs/automobile/car-and-driver-libraries.md index 68c3ab906a6..11d41a9a40e 100644 --- a/docs/automobile/car-and-driver-libraries.md +++ b/docs/automobile/car-and-driver-libraries.md @@ -1,6 +1,6 @@ # Car and Driver Libraries -To ease the creation of controllers for any [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) PROTO models (or any PROTO node inherited from [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto)), two libraries are provided. +To ease the creation of controllers for any [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) PROTO models (or any PROTO node inherited from [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto)), two libraries are provided. These two libraries are easy to use, provide high-level functionalities and save the user from knowing the name of the internal devices nodes ([Motors](../reference/motor.md), [Brakes](../reference/brake.md), etc.) of the car. This section presents and explains how to use these two libraries. diff --git a/docs/automobile/driver-library.md b/docs/automobile/driver-library.md index 7a0e8354130..1bb5c6897ba 100644 --- a/docs/automobile/driver-library.md +++ b/docs/automobile/driver-library.md @@ -161,7 +161,7 @@ public class Driver { The `wbu_driver_set_steering_angle` function is used to steer the car, it steers the front wheels according to the Ackermann geometry (left and right wheels are not steered with the exact same angle). The angle is set in radians, a positive angle steers right and a negative angle steers left. -The formulas used in order to compute the right and left angles are the following (`trackFront` and `wheelbase` are the parameters of the [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) PROTO): +The formulas used in order to compute the right and left angles are the following (`trackFront` and `wheelbase` are the parameters of the [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) PROTO): ```c @@ -250,7 +250,7 @@ public class Driver { The `wbu_driver_set_cruising_speed` function activates the control in cruising speed of the car, the rotational speed of the wheels is forced (respecting the geometric differential constraint) in order for the car to move at the speed given in argument of the function (in kilometers per hour). When the control in cruising speed is activated, the speed is directly applied to the wheel without any engine model simulation, therefore any call to functions like `wbu_driver_get_rpm` will raise an error. -The acceleration of the car is computed using the `time0To100` field of the [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) PROTO. +The acceleration of the car is computed using the `time0To100` field of the [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) PROTO. The `wbu_driver_get_target_cruising_speed` function simply returns the target cruising speed (argument of the last call to the `wbu_driver_set_cruising_speed` function). @@ -487,7 +487,7 @@ public class Driver { *Set and get the brake intensity* The `wbu_driver_set_brake_intensity` function brakes the car by increasing the `dampingConstant` coefficient of the rotational joints of each of the four wheels. -The argument should be between 0.0 and 1.0, 0 means that no damping constant is added on the joints (no breaking), 1 means that the parameter `brakeCoefficient` of the [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) PROTO is applied on the `dampingConstant` of each joint (the value will be linearly interpolated between 0 and `brakeCoefficient` for any arguments between 0 and 1). +The argument should be between 0.0 and 1.0, 0 means that no damping constant is added on the joints (no breaking), 1 means that the parameter `brakeCoefficient` of the [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) PROTO is applied on the `dampingConstant` of each joint (the value will be linearly interpolated between 0 and `brakeCoefficient` for any arguments between 0 and 1). The `wbu_driver_get_brake_intensity` function simply returns the current brake intensity (argument of the last call to the `wbu_driver_set_brake_intensity` function). @@ -857,7 +857,7 @@ public class Driver { The `wbu_driver_set_gear` function sets the engaged gear. An argument of `-1` is used in order to engage the reverse gear, an argument of `0` is used in order to disengaged the gearbox. -Any other arguments than `0` and `-1` should be between 1 and the number of coefficients set in the `gearRatio` parameter of the [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) PROTO. +Any other arguments than `0` and `-1` should be between 1 and the number of coefficients set in the `gearRatio` parameter of the [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) PROTO. The `wbu_driver_get_gear` function returns the currently engaged gear. @@ -1073,7 +1073,7 @@ If `a`, `b` and `c` are the values of the `engineFunctionCoefficients` parameter output_torque = c * rpmĀ² + b * rpm + a ``` -> **Note**: if the rpm is below the `engineMinRPM` parameter of the [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) PROTO, `engineMinRPM` is used instead of the real rpm, but if the rpm is above the `engineMaxRPM` parameter, then the output torque is 0. +> **Note**: if the rpm is below the `engineMinRPM` parameter of the [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) PROTO, `engineMinRPM` is used instead of the real rpm, but if the rpm is above the `engineMaxRPM` parameter, then the output torque is 0. #### Electric Engine diff --git a/docs/automobile/proto-nodes.md b/docs/automobile/proto-nodes.md index e2e8d4677a1..2c1fb28a84d 100644 --- a/docs/automobile/proto-nodes.md +++ b/docs/automobile/proto-nodes.md @@ -3,11 +3,11 @@ This section presents the set of PROTO nodes developed specifically for automobile related simulations, from the PROTO of a wheel to the PROTO of a complete car. ## Abstract PROTO Nodes -- [AckermannVehicle](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/AckermannVehicle.proto) is the base class of almost all vehicles. -- [VehicleWheel](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/VehicleWheel.proto) is a configurable wheel. -- [VehicleLights](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/VehicleLights.proto) defines the set of lights in a standard vehicle. -- [SimpleVehicle](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/SimpleVehicle.proto) is a simple example of derivating the AckermannVehicle PROTO. -- [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) is a generic model of a car derived from the AckermannVehicle PROTO. +- [AckermannVehicle](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/AckermannVehicle.proto) is the base class of almost all vehicles. +- [VehicleWheel](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/VehicleWheel.proto) is a configurable wheel. +- [VehicleLights](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/VehicleLights.proto) defines the set of lights in a standard vehicle. +- [SimpleVehicle](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/SimpleVehicle.proto) is a simple example of derivating the AckermannVehicle PROTO. +- [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) is a generic model of a car derived from the AckermannVehicle PROTO. Please refer to the [Engine models](driver-library.md#engine-models) section to understand the various engine options available to equip a car. @@ -21,11 +21,11 @@ The amplitude and frequency of the sound is modulated in function of the rpm and ## Generic PROTO Nodes -- [Bus](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/Bus.proto) / [BusSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/BusSimple.proto) / [BusWheel](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/BusWheel.proto) -- [MotorbikeDriver](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/MotorbikeDriver.proto) / [MotorbikeSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/MotorbikeSimple.proto) / [MotorbikeWheel](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/MotorbikeWheel.proto) -- [ScooterDriver](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/ScooterDriver.proto) / [ScooterSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/ScooterSimple.proto) / [ScooterWheel](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/ScooterWheel.proto) -- [Tractor](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/Tractor.proto) / [TractorFrontWheel](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TractorFrontWheel.proto) / [TractorRearWheel](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TractorRearWheel.proto) -- [Truck](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/Truck.proto) / [TruckSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TruckSimple.proto) / [TruckTank](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TruckTank.proto) / [TruckTankSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TruckTankSimple.proto) / [TruckTrailer](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TruckTrailer.proto) / [TruckTrailerSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TruckTrailerSimple.proto) / [TruckWheel](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TruckWheel.proto) +- [Bus](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/Bus.proto) / [BusSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/BusSimple.proto) / [BusWheel](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/BusWheel.proto) +- [MotorbikeDriver](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/MotorbikeDriver.proto) / [MotorbikeSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/MotorbikeSimple.proto) / [MotorbikeWheel](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/MotorbikeWheel.proto) +- [ScooterDriver](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/ScooterDriver.proto) / [ScooterSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/ScooterSimple.proto) / [ScooterWheel](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/ScooterWheel.proto) +- [Tractor](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/Tractor.proto) / [TractorFrontWheel](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TractorFrontWheel.proto) / [TractorRearWheel](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TractorRearWheel.proto) +- [Truck](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/Truck.proto) / [TruckSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TruckSimple.proto) / [TruckTank](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TruckTank.proto) / [TruckTankSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TruckTankSimple.proto) / [TruckTrailer](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TruckTrailer.proto) / [TruckTrailerSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TruckTrailerSimple.proto) / [TruckWheel](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TruckWheel.proto) The tractor PROTO model provides a `sensorSlot` at center of the vehicle. The other heavy-weights provide four `sensorSlots` at the top, front, rear and center of the vehicles. @@ -49,13 +49,13 @@ The rest of the positions can be seen in the [following table](#positions-of-the %end -- [BmwX5](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/bmw/protos/BmwX5.proto) / [BmwX5Simple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/bmw/protos/BmwX5Simple.proto) -- [CitroenCZero](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/citroen/CitroenCZero.proto) / [CitroenCZeroSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/citroen/CitroenCZeroSimple.proto) -- [LincolnMKZ](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/lincoln/LincolnMKZ.proto) / [LincolnMKZSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/lincoln/LincolnMKZSimple.proto) -- [MercedesBenzSprinter](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/mercedes_benz/MercedesBenzSprinter.proto) / [MercedesBenzSprinterSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/mercedes_benz/MercedesBenzSprinterSimple.proto) -- [RangeRoverSportSVR](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/range_rover/RangeRoverSportSVR.proto) / [RangeRoverSportSVRSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/range_rover/RangeRoverSportSVRSimple.proto) -- [TeslaModel3](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/tesla/TeslaModel3.proto) / [TeslaModel3Simple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/tesla/TeslaModel3Simple.proto) -- [ToyotaPrius](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/toyota/ToyotaPrius.proto) / [ToyotaPriusSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/toyota/ToyotaPriusSimple.proto) +- [BmwX5](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/bmw/protos/BmwX5.proto) / [BmwX5Simple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/bmw/protos/BmwX5Simple.proto) +- [CitroenCZero](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/citroen/CitroenCZero.proto) / [CitroenCZeroSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/citroen/CitroenCZeroSimple.proto) +- [LincolnMKZ](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/lincoln/LincolnMKZ.proto) / [LincolnMKZSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/lincoln/LincolnMKZSimple.proto) +- [MercedesBenzSprinter](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/mercedes_benz/MercedesBenzSprinter.proto) / [MercedesBenzSprinterSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/mercedes_benz/MercedesBenzSprinterSimple.proto) +- [RangeRoverSportSVR](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/range_rover/RangeRoverSportSVR.proto) / [RangeRoverSportSVRSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/range_rover/RangeRoverSportSVRSimple.proto) +- [TeslaModel3](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/tesla/TeslaModel3.proto) / [TeslaModel3Simple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/tesla/TeslaModel3Simple.proto) +- [ToyotaPrius](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/toyota/ToyotaPrius.proto) / [ToyotaPriusSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/toyota/ToyotaPriusSimple.proto) Like the heavy-weights, the cars provide four `sensorsSlot`. The position of the central sensor slot is always 0 0 0 (which is the center of the rear wheels axis). diff --git a/docs/automobile/robot-window.md b/docs/automobile/robot-window.md index 5a9b4c517c4..ad0e719d92a 100644 --- a/docs/automobile/robot-window.md +++ b/docs/automobile/robot-window.md @@ -1,7 +1,7 @@ # Robot-window A robot window has been created specifically for cars. -It is assigned by default to each PROTO nodes inheriting from the [Car](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/Car.proto) PROTO. +It is assigned by default to each PROTO nodes inheriting from the [Car](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/Car.proto) PROTO. ## Sections diff --git a/docs/automobile/sumo-exporter.md b/docs/automobile/sumo-exporter.md index 9f70584054e..782d871c1fc 100644 --- a/docs/automobile/sumo-exporter.md +++ b/docs/automobile/sumo-exporter.md @@ -14,7 +14,7 @@ Please refer to [these instructions](openstreetmap-importer.md#dependencies) to If the Webots simulation has been created from the OpenStreetMap importer, then the export should be straight forward. -If it's not the case, you should pay attention on the use of the [Road](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/road/protos/Road.proto) and the [Crossroad](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/road/protos/Crossroad.proto) PROTO nodes. +If it's not the case, you should pay attention on the use of the [Road](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/road/protos/Road.proto) and the [Crossroad](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/road/protos/Crossroad.proto) PROTO nodes. Indeed, their IDs should be unique, and the `Road.startJunction`, the `Road.endJunction` and the `Crossroad.connectedRoadIDs` fields should be filled correctly. ## How to use the Exporter diff --git a/docs/guide/samples-devices.md b/docs/guide/samples-devices.md index 3280e2ce68b..1bb988b917c 100644 --- a/docs/guide/samples-devices.md +++ b/docs/guide/samples-devices.md @@ -229,7 +229,7 @@ The resulting angular velocity measured by the gyro is displayed in the `Console **Keywords**: Backlash, [HingeJoint](../reference/hingejoint.md) -![hinge_joint_with_backlash.png](images/samples/hinge_joint_with_backlash.thumbnail.jpg) This example shows how to use [HingeJointWithBacklash](https://webots.cloud/run?url={{ url.github_tree }}/projects/joints/protos/HingeJointWithBacklash.proto). +![hinge_joint_with_backlash.png](images/samples/hinge_joint_with_backlash.thumbnail.jpg) This example shows how to use [HingeJointWithBacklash](https://webots.cloud/run?url={{ url.github_blob }}/projects/joints/protos/HingeJointWithBacklash.proto). The shape of the rotor and shaft of the motor are described in the `startPoint` field whereas the `endPoint` refers to the blue shaft. When the rotor is motorized, the output axis lags behind due to the effect of backlash intrinsic to the gear train, which is represented by the black cylinder. @@ -237,8 +237,8 @@ When the rotor is motorized, the output axis lags behind due to the effect of ba **Keywords**: Backlash, [Hinge2Joint](../reference/hinge2joint.md) -![hinge_2_joint_with_backlash.png](images/samples/hinge_2_joint_with_backlash.thumbnail.jpg) This example shows how to use [Hinge2JointWithBacklash](https://webots.cloud/run?url={{ url.github_tree }}/projects/joints/protos/Hinge2JointWithBacklash.proto). -The left side robot uses a classic [Hinge2Joint](../reference/hinge2joint.md) whereas the right side one uses [Hinge2JointWithBacklash](https://webots.cloud/run?url={{ url.github_tree }}/projects/joints/protos/Hinge2JointWithBacklash.proto) with a large backlash. +![hinge_2_joint_with_backlash.png](images/samples/hinge_2_joint_with_backlash.thumbnail.jpg) This example shows how to use [Hinge2JointWithBacklash](https://webots.cloud/run?url={{ url.github_blob }}/projects/joints/protos/Hinge2JointWithBacklash.proto). +The left side robot uses a classic [Hinge2Joint](../reference/hinge2joint.md) whereas the right side one uses [Hinge2JointWithBacklash](https://webots.cloud/run?url={{ url.github_blob }}/projects/joints/protos/Hinge2JointWithBacklash.proto) with a large backlash. Given the added joint play, in the presence of gravity, at rest the end-point is unstable and therefore slumps down compared to the case without backlash. In a real scenario, this is analogous to having a large clearance in between the driving and driven gear. @@ -373,7 +373,7 @@ This noisy position is compared to the actual [Emitter](../reference/emitter.md) ### [sick.wbt]({{ url.github_tree }}/projects/samples/devices/worlds/sick.wbt) -**Keywords**: [Sick LMS 291](https://webots.cloud/run?url={{ url.github_tree }}/projects/devices/sick/protos/SickLms291.proto), [Lidar](../reference/lidar.md), 3-wheeled robot, lidar plot +**Keywords**: [Sick LMS 291](https://webots.cloud/run?url={{ url.github_blob }}/projects/devices/sick/protos/SickLms291.proto), [Lidar](../reference/lidar.md), 3-wheeled robot, lidar plot ![sick.png](images/samples/sick.thumbnail.jpg) In this example, a 3-wheeled robot mounted with a `Sick LMS 291` lidar sensor moves through an area with obstacles. The robot use the lidar depth output to avoid collisions. @@ -381,7 +381,7 @@ The lidar depth output is also plot into a [Display](../reference/display.md) de ### [sick\_point\_cloud.wbt]({{ url.github_tree }}/projects/samples/devices/worlds/sick_point_cloud.wbt) -**Keywords**: [Sick LD MRS](https://webots.cloud/run?url={{ url.github_tree }}/projects/devices/sick/protos/SickLdMrs.proto), [Lidar](../reference/lidar.md), cloud point +**Keywords**: [Sick LD MRS](https://webots.cloud/run?url={{ url.github_blob }}/projects/devices/sick/protos/SickLdMrs.proto), [Lidar](../reference/lidar.md), cloud point ![sick_point_cloud.png](images/samples/sick_point_cloud.thumbnail.jpg) Soda cans are transported on a conveyor belt. A static robot equipped with a Sick LD-MRS uses the Point Cloud API to count the number of cans in front of it. diff --git a/docs/guide/samples-howto.md b/docs/guide/samples-howto.md index 79fedf25a99..6a6bc4647f1 100644 --- a/docs/guide/samples-howto.md +++ b/docs/guide/samples-howto.md @@ -96,7 +96,7 @@ In addition, there is an equivalent version of a MATLAB controller `force_contro In the first layout, the four motorized wheels are positioned circularly, as could be done for omnidirectional-wheeled robots. In the second layout, the four motorized wheels are oriented in the same direction, as could be done for a robot with tracks. In the third layout, a simple [Ackermann steering geometry](https://en.wikipedia.org/wiki/Ackermann_steering_geometry) is shown. -Note that more completed Ackermann steering geometry can be achieved using the [AckermannVehicle](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/abstract/AckermannVehicle.proto) PROTO, and the [`car` library](../automobile/car-library.md). +Note that more completed Ackermann steering geometry can be achieved using the [AckermannVehicle](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/abstract/AckermannVehicle.proto) PROTO, and the [`car` library](../automobile/car-library.md). ### [gears.wbt]({{ url.github_tree }}/projects/samples/howto/gears/worlds/gears.wbt) diff --git a/docs/guide/tutorial-1-your-first-simulation-in-webots.md b/docs/guide/tutorial-1-your-first-simulation-in-webots.md index d7911f24a92..b9275ab0301 100644 --- a/docs/guide/tutorial-1-your-first-simulation-in-webots.md +++ b/docs/guide/tutorial-1-your-first-simulation-in-webots.md @@ -51,9 +51,9 @@ It should currently list the following nodes: - [WorldInfo](../reference/worldinfo.md): contains global parameters of the simulation. - [Viewpoint](../reference/viewpoint.md): defines the main viewpoint camera parameters. -- [TexturedBackground](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/backgrounds/protos/TexturedBackground.proto): defines the background of the scene (you should see mountains far away if you rotate a little bit the viewpoint) -- [TexturedBackgroundLight](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/backgrounds/protos/TexturedBackgroundLight.proto): defines the light associated with the above background. -- [RectangleArena](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/floors/protos/RectangleArena.proto): define the only object you see so far in this scene. +- [TexturedBackground](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/backgrounds/protos/TexturedBackground.proto): defines the background of the scene (you should see mountains far away if you rotate a little bit the viewpoint) +- [TexturedBackgroundLight](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/backgrounds/protos/TexturedBackgroundLight.proto): defines the light associated with the above background. +- [RectangleArena](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/floors/protos/RectangleArena.proto): define the only object you see so far in this scene. Each node has some customizable properties called **Fields**. Let's modify these fields to change the rectangle arena: diff --git a/docs/guide/tutorial-3-appearance.md b/docs/guide/tutorial-3-appearance.md index d96c296fe92..0fdd7e9cde3 100644 --- a/docs/guide/tutorial-3-appearance.md +++ b/docs/guide/tutorial-3-appearance.md @@ -29,7 +29,7 @@ Lights are costly in term of performance and reduce the simulation speed (especi Minimizing the number of lights increases the rendering speed. A [PointLight](../reference/pointlight.md) is more efficient than a [SpotLight](../reference/spotlight.md), but less than a [DirectionalLight](../reference/directionallight.md). -In this simulation, the [Light](../reference/light.md) node is not visible in the scene tree because it is contained in the [TexturedBackgroundLight](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/backgrounds/protos/TexturedBackgroundLight.proto) PROTO node. +In this simulation, the [Light](../reference/light.md) node is not visible in the scene tree because it is contained in the [TexturedBackgroundLight](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/backgrounds/protos/TexturedBackgroundLight.proto) PROTO node. It consists of a [DirectionalLight](../reference/directionallight.md) whose intensity and direction is computed automatically according to the background of the scene. ### Modify the Appearance of the Walls diff --git a/docs/guide/tutorial-8-the-supervisor.md b/docs/guide/tutorial-8-the-supervisor.md index 077b2abf359..727696f345d 100644 --- a/docs/guide/tutorial-8-the-supervisor.md +++ b/docs/guide/tutorial-8-the-supervisor.md @@ -17,8 +17,8 @@ Just note that it is, however, not possible to access directly measurements reco 2. Name the world file `my_supervisor.wbt` instead of the proposed `empty.wbt`. 3. Click all the tick boxes, including the "Add a rectangle arena" which is not ticked by default. 4. In order to have more space, enlarge the arena by setting the size to 10x10 meters by changing the `floorSize` field. -5. Add a [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) robot to the scene, to do this click the `Add` button ![](images/add-button.png =26x26) and navigate to: `PROTO nodes (Webots projects) / robots / sphero / bb8`. -6. For the purpose of this tutorial, remove the default controller of [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) by clicking the `controller` field, then the `Select` button, and pick `` from the list. +5. Add a [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) robot to the scene, to do this click the `Add` button ![](images/add-button.png =26x26) and navigate to: `PROTO nodes (Webots projects) / robots / sphero / bb8`. +6. For the purpose of this tutorial, remove the default controller of [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) by clicking the `controller` field, then the `Select` button, and pick `` from the list. 7. Add a simple [Robot](../reference/robot.md) node to the scene, this will become our Supervisor. The [Robot](../reference/robot.md) node can be found in the `base nodes` category when clicking the `Add` button. To better keep track of it, change its `name` field to `supervisor`. @@ -380,7 +380,7 @@ It is just a matter of getting a node reference, from which a field reference ca ### Spawning and Removing Nodes Supervisors can also be used to populate the environment, allowing to dynamically setup the scene. -This section focuses on how nodes can be added and removed, specifically we will remove [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) from this world, and replace it with a different robot, namely [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto). +This section focuses on how nodes can be added and removed, specifically we will remove [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) from this world, and replace it with a different robot, namely [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto). %tab-component "language" @@ -395,23 +395,23 @@ Add the following code in `CODE PLACEHOLDER 2`. > if (i == 10) > wb_supervisor_node_remove(bb8_node); > ``` -After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. -Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. +After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. +Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. In order to add a node, we must know where we wish to spawn it in the scene tree. Should it be added at the top level of the scene tree? Should it inserted as a field of a another node? These questions will change how the node will be inserted and which supervisor function needs to be used, but the constant factor among them is that we need a reference to this position. -In this context, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. -First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. +In this context, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. +First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. To proceed, click on the `IMPORTABLE EXTERNPROTO` button located at the top of the scene tree. The field editor, located below the scene tree, should display an `IMPORTABLE EXTERNPROTO` pane with a button named "Insert new". -Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. +Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. Press the "Insert" button. -If you hover the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. +If you hover the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. Save the world file, so that this information is stored. > Although not apparent, the scene tree is in fact a [Group](../reference/group.md) node, and each of the objects in the scene tree like `WorldInfo`, `Viewpoint`, `TexturedBackground` and so forth are nothing more than nodes defined as its children. We refer to this [Group](../reference/group.md) node containing everything as the `root` node. -In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. +In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. In the spot marked by `CODE PLACEHOLDER 1`, the following code allows to get this reference. > ```c > WbNodeRef root_node = wb_supervisor_node_get_root(); @@ -421,7 +421,7 @@ To spawn a node you should use the supervisor function [`wb_supervisor_field_imp The "mf\_node" and "sf\_node" components in the name of these functions specify what is the type of the node where the objects is inserted *into*. "mf\_node" stands for multi-field node whereas "sf\_node" stands for single-field node. -> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. +> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. > Let's add it from string after 20 time steps, add the following snippet in `CODE PLACEHOLDER 2`: > ```c @@ -431,9 +431,9 @@ The "mf\_node" and "sf\_node" components in the name of these functions specify The "-1" specifies in which position we wish to insert the node, in this case, to insert it at the last position. `"Nao { }"` is a string that describes what we wish to spawn. The way the object is described is by using the VRML97 format, this is the format used in the world files as well. -After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. +After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. -> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. +> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. In fact, we can simply specify the translation field directly in the string! Replace the string `"Nao { }"` with `"Nao { translation 2.5 0 0.334 }"` and it will spawn exactly at that location. It does not stop there, in the same fashion we could define its `controller` parameter, or the `cameraWidth` or any other of its parameters in the same fashion. @@ -450,23 +450,23 @@ Add the following code in `CODE PLACEHOLDER 2`. > if (i == 10) > bb8Node->remove(); > ``` -After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. -Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. +After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. +Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. In order to add a node, we must know where we wish to spawn it in the scene tree. Should it be added at the top level of the scene tree? Should it inserted as a field of a another node? These questions will change how the node will be inserted and which supervisor function needs to be used, but the constant factor among them is that we need a reference to this position. -In this context, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. -First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. +In this context, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. +First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. To proceed, click on the `IMPORTABLE EXTERNPROTO` button located at the top of the scene tree. The field editor, located below the scene tree, should display an `IMPORTABLE EXTERNPROTO` pane with a button named "Insert new". -Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. +Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. Press the "Insert" button. -If you hover the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. +If you hover the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. Save the world file, so that this information is stored. > Although not apparent, the scene tree is in fact a [Group](../reference/group.md) node, and each of the objects in the scene tree like `WorldInfo`, `Viewpoint`, `TexturedBackground` and so forth are nothing more than nodes defined as its children. We refer to this [Group](../reference/group.md) node containing everything as the `root` node. -In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. +In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. In the spot marked by `CODE PLACEHOLDER 1`, the following code allows to get this reference. > ```cpp > Node *rootNode = robot->getRoot(); @@ -476,7 +476,7 @@ To spawn a node you should use the supervisor function [`importMFNodeFromString` The "MFNode" and "SFNode" components in the name of these functions specify what is the type of the node where the objects is inserted *into*. "MFNode" stands for multi-field node whereas "SFNode" stands for single-field node. -> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. +> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. > Let's add it from string after 20 time steps, add the following snippet in `CODE PLACEHOLDER 2`: > ```cpp @@ -486,9 +486,9 @@ The "MFNode" and "SFNode" components in the name of these functions specify what The "-1" specifies in which position we wish to insert the node, in this case, to insert it at the last position. `"Nao { }"` is a string that describes what we wish to spawn. The way the object is described is by using the VRML97 format, this is the format used in the world files as well. -After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. +After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. -> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. +> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. In fact, we can simply specify the translation field directly in the string! Replace the string `"Nao { }"` with `"Nao { translation 2.5 0 0.334 }"` and it will spawn exactly at that location. It does not stop there, in the same fashion we could define its `controller` parameter, or the `cameraWidth` or any other of its parameters in the same fashion. @@ -505,23 +505,23 @@ Add the following code in `CODE PLACEHOLDER 2`. > if i == 10: > bb8_node.remove() > ``` -After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. -Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. +After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. +Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. In order to add a node, we must know where we wish to spawn it in the scene tree. Should it be added at the top level of the scene tree? Should it inserted as a field of a another node? These questions will change how the node will be inserted and which supervisor function needs to be used, but the constant factor among them is that we need a reference to this position. -In this context, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. -First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. +In this context, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. +First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. To proceed, click on the `IMPORTABLE EXTERNPROTO` button located at the top of the scene tree. The field editor, located below the scene tree, should display an `IMPORTABLE EXTERNPROTO` pane with a button named "Insert new". -Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. +Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. Press the "Insert" button. -If you hover the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. +If you hover the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. Save the world file, so that this information is stored. > Although not apparent, the scene tree is in fact a [Group](../reference/group.md) node, and each of the objects in the scene tree like `WorldInfo`, `Viewpoint`, `TexturedBackground` and so forth are nothing more than nodes defined as its children. We refer to this [Group](../reference/group.md) node containing everything as the `root` node. -In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. +In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. In the spot marked by `CODE PLACEHOLDER 1`, the following code allows to get this reference. > ```python > root_node = robot.getRoot() @@ -531,7 +531,7 @@ To spawn a node you should use the supervisor function [`importMFNodeFromString` The "MFNode" and "SFNode" components in the name of these functions specify what is the type of the node where the objects is inserted *into*. "MFNode" stands for multi-field node whereas "sf_node" stands for single-field node. -> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. +> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. > Let's add it from string after 20 time steps, add the following snippet in `CODE PLACEHOLDER 2`: > ```python @@ -541,9 +541,9 @@ The "MFNode" and "SFNode" components in the name of these functions specify what The "-1" specifies in which position we wish to insert the node, in this case, to insert it at the last position. `"Nao { }"` is a string that describes what we wish to spawn. The way the object is described is by using the VRML97 format, this is the format used in the world files as well. -After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. +After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. -> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. +> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. In fact, we can simply specify the translation field directly in the string! Replace the string `"Nao { }"` with `"Nao { translation 2.5 0 0.334 }"` and it will spawn exactly at that location. It does not stop there, in the same fashion we could define its `controller` parameter, or the `cameraWidth` or any other of its parameters in the same fashion. @@ -560,23 +560,23 @@ Add the following code in `CODE PLACEHOLDER 2`. > if (i == 10) > bb8Node.remove(); > ``` -After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. -Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. +After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. +Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. In order to add a node, we must know where we wish to spawn it in the scene tree. Should it be added at the top level of the scene tree? Should it inserted as a field of a another node? These questions will change how the node will be inserted and which supervisor function needs to be used, but the constant factor among them is that we need a reference to this position. -In this context, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. -First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. +In this context, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. +First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. To proceed, click on the `IMPORTABLE EXTERNPROTO` button located at the top of the scene tree. The field editor, located below the scene tree, should display an `IMPORTABLE EXTERNPROTO` pane with a button named "Insert new". -Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. +Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. Press the "Insert" button. -If you hover the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. +If you hover the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. Save the world file, so that this information is stored. > Although not apparent, the scene tree is in fact a [Group](../reference/group.md) node, and each of the objects in the scene tree like `WorldInfo`, `Viewpoint`, `TexturedBackground` and so forth are nothing more than nodes defined as its children. We refer to this [Group](../reference/group.md) node containing everything as the `root` node. -In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. +In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. In the spot marked by `CODE PLACEHOLDER 1`, the following code allows to get this reference. > ```java > Node rootNode = robot.getRoot(); @@ -586,7 +586,7 @@ To spawn a node you should use the supervisor function [`importMFNodeFromString` The "MFNode" and "sf_node" components in the name of these functions specify what is the type of the node where the objects is inserted *into*. "MFNode" stands for multi-field node whereas "SFNode" stands for single-field node. -> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. +> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. > Let's add it from string after 20 time steps, add the following snippet in `CODE PLACEHOLDER 2`: > ```java @@ -596,9 +596,9 @@ The "MFNode" and "sf_node" components in the name of these functions specify wha The "-1" specifies in which position we wish to insert the node, in this case, to insert it at the last position. `"Nao { }"` is a string that describes what we wish to spawn. The way the object is described is by using the VRML97 format, this is the format used in the world files as well. -After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. +After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. -> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. +> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. In fact, we can simply specify the translation field directly in the string! Replace the string `"Nao { }"` with `"Nao { translation 2.5 0.334 }"` and it will spawn exactly at that location. It does not stop there, in the same fashion we could define its `controller` parameter, or the `cameraWidth` or any other of its parameters in the same fashion. @@ -616,23 +616,23 @@ Add the following code in `CODE PLACEHOLDER 2`. > wb_supervisor_node_remove(bb8_node); > end > ``` -After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. -Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. +After 10 time steps, [BB-8](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/sphero/bb8/protos/BB-8.proto) will be removed from the scene. +Now, let's instead add the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot after 20 time steps. In order to add a node, we must know where we wish to spawn it in the scene tree. Should it be added at the top level of the scene tree? Should it inserted as a field of a another node? These questions will change how the node will be inserted and which supervisor function needs to be used, but the constant factor among them is that we need a reference to this position. -In this context, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. -First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. +In this context, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will be added at the last position in the scene tree, where BB-8 used to appear. +First of all, we need to declare the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to Webots as in importable PROTO for the world we created. To proceed, click on the `IMPORTABLE EXTERNPROTO` button located at the top of the scene tree. The field editor, located below the scene tree, should display an `IMPORTABLE EXTERNPROTO` pane with a button named "Insert new". -Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. +Click this button and select the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot from the `PROTO nodes (Webots Projects)` section. Press the "Insert" button. -If you hover the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. +If you hover the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) item that appeared below the "Insert new" button, you will see in the tooltip the URL from where it is downloaded. Save the world file, so that this information is stored. > Although not apparent, the scene tree is in fact a [Group](../reference/group.md) node, and each of the objects in the scene tree like `WorldInfo`, `Viewpoint`, `TexturedBackground` and so forth are nothing more than nodes defined as its children. We refer to this [Group](../reference/group.md) node containing everything as the `root` node. -In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. +In order to insert the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot, the reference we require is actually a reference to the `children` field of the `root` node. In the spot marked by `CODE PLACEHOLDER 1`, the following code allows to get this reference. > ```matlab > root_node = wb_supervisor_node_get_root() @@ -642,7 +642,7 @@ To spawn a node you should use the supervisor function [`wb_supervisor_field_imp The "mf_node" and "sf_node" component in the name of these functions specify what is the type of the node where the objects is inserted *into*. "mf_node" stands for multi-field node whereas "sf_node" stands for single-field node. -> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. +> As previously mentioned, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) should be added to the `children` field of the `root` node, and as you might guess, this `children` field is of type multi-field. > Let's add it from string after 20 time steps, add the following snippet in `CODE PLACEHOLDER 2`: > ```matlab @@ -653,9 +653,9 @@ The "mf_node" and "sf_node" component in the name of these functions specify wha The "-1" specifies in which position we wish to insert the node, in this case, to insert it at the last position. `"Nao { }"` is a string that describes what we wish to spawn. The way the object is described is by using the VRML97 format, this is the format used in the world files as well. -After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. +After 20 timesteps, the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot will spawn in the middle of the scene. -> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. +> Let's assume we wanted the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) to be spawned in the position BB-8 used to be, we certainly could move it there following the procedure of hands-on 2, but that would not be smart. In fact, we can simply specify the translation field directly in the string! Replace the string `"Nao { }"` with `"Nao { translation 2.5 0 0.334 }"` and it will spawn exactly at that location. It does not stop there, in the same fashion we could define its `controller` parameter, or the `cameraWidth` or any other of its parameters in the same fashion. @@ -680,7 +680,7 @@ In this section, we will use the acquired knowledge to spawn a ball, and track i > **Hands-on #4**: We need to use the [`wb_supervisor_field_import_mf_node_from_string`](../reference/supervisor.md#wb_supervisor_field_import_mf_node_from_string) function to spawn the ball at location `0 1 1`, and since we are at it, let us get a reference to this node and to the `color` field of the `Ball`. -But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: +But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: > ```c > wb_supervisor_field_import_mf_node_from_string(children_field, -1, "DEF BALL Ball { translation 0 1 1 }"); > WbNodeRef ball_node = wb_supervisor_node_get_from_def("BALL"); @@ -708,7 +708,7 @@ Since the ball has a radius of 0.2, we can change the `color` field when the "Y" %tab "C++" > **Hands-on #4**: We need to use the [`wb_supervisor_field_import_mf_node_from_string`](../reference/supervisor.md#wb_supervisor_field_import_mf_node_from_string) function to spawn the ball at location `0 1 1`, and since we are at it, let us get a reference to this node and to the `color` field of the `Ball`. -But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: +But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: > ```cpp > childrenField->importMFNodeFromString(-1, "DEF BALL Ball { translation 0 1 1 }"); > Node *ballNode = robot->getFromDef("BALL"); @@ -735,7 +735,7 @@ Since the ball has a radius of 0.2, we can change the `color` field when the "Y" %tab "Python" > **Hands-on #4**: We need to use the [`wb_supervisor_field_import_mf_node_from_string`](../reference/supervisor.md#wb_supervisor_field_import_mf_node_from_string) function to spawn the ball at location `0 1 1`, and since we are at it, let us get a reference to this node and to the `color` field of the `Ball`. -But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: +But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: > ```python > children_field.importMFNodeFromString(-1, 'DEF BALL Ball { translation 0 1 1 }') > ball_node = robot.getFromDef('BALL') @@ -762,7 +762,7 @@ Since the ball has a radius of 0.2, we can change the `color` field when the "Y" %tab "Java" > **Hands-on #4**: We need to use the [`wb_supervisor_field_import_mf_node_from_string`](../reference/supervisor.md#wb_supervisor_field_import_mf_node_from_string) function to spawn the ball at location `0 1 1`, and since we are at it, let us get a reference to this node and to the `color` field of the `Ball`. -But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: +But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: > ```java > childrenField.importMFNodeFromString(-1, "DEF BALL Ball { translation 0 1 1 }"); > Node ballNode = robot.getFromDef("BALL"); @@ -790,7 +790,7 @@ Since the ball has a radius of 0.2, we can change the `color` field when the "Y" %tab "MATLAB" > **Hands-on #4**: We need to use the [`wb_supervisor_field_import_mf_node_from_string`](../reference/supervisor.md#wb_supervisor_field_import_mf_node_from_string) function to spawn the ball at location `0 1 1`, and since we are at it, let us get a reference to this node and to the `color` field of the `Ball`. -But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/balls/protos/Ball.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: +But first, we have to declare the [Ball](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/balls/protos/Ball.proto) as an `IMPORTABLE EXTERNPROTO` as we did it previously for the [Nao](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) robot. Once done, in `CODE PLACEHOLDER 1` add: > ```matlab > wb_supervisor_field_import_mf_node_from_string(children_field, -1, 'DEF BALL Ball { translation 0 1 1 }'); > ball_node = wb_supervisor_node_get_from_def('BALL'); diff --git a/docs/guide/webots-cloud.md b/docs/guide/webots-cloud.md index 242a5c7df88..f11edf814e5 100644 --- a/docs/guide/webots-cloud.md +++ b/docs/guide/webots-cloud.md @@ -114,8 +114,8 @@ The server tab on webots.cloud contains information on the [Simulation Servers]( - [Nao room](https://webots.cloud/AcTNYs0) **Proto** -- [NAO](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/softbank/nao/protos/Nao.proto) -- [WoodenPalletStack](https://webots.cloud/run?url={{ url.github_tree }}/projects/objects/factory/pallet/protos/WoodenPalletStack.proto) +- [NAO](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/softbank/nao/protos/Nao.proto) +- [WoodenPalletStack](https://webots.cloud/run?url={{ url.github_blob }}/projects/objects/factory/pallet/protos/WoodenPalletStack.proto) **Simulation**: diff --git a/docs/js/showdown-extensions.js b/docs/js/showdown-extensions.js index 3e213aec77c..48e64065842 100644 --- a/docs/js/showdown-extensions.js +++ b/docs/js/showdown-extensions.js @@ -43,6 +43,7 @@ showdown.extension('wbVariables', function() { }, url: { github_tree: `https://github.com/cyberbotics/webots/tree/` + branch, + github_blob: `https://github.com/cyberbotics/webots/blob/` + branch, github_raw: `https://raw.githubusercontent.com/cyberbotics/webots/` + branch } }; diff --git a/docs/reference/changelog-r2023.md b/docs/reference/changelog-r2023.md index f127fde7bd3..d390ce097be 100644 --- a/docs/reference/changelog-r2023.md +++ b/docs/reference/changelog-r2023.md @@ -45,7 +45,7 @@ Released on June 28th, 2023. - Windows: fixed conflict with Qt5 installation by removing the `QT_QPA_PLATFORM_PLUGIN_PATH` environment variable from the Webots launcher ([#6258](https://github.com/cyberbotics/webots/pull/6258)). - Fixed random crashes while creating [Skin](skin.md) and [Mesh](mesh.md) nodes ([#6218](https://github.com/cyberbotics/webots/pull/6218)). - Windows: fixed compilation of controller programs located in paths with non-ASCII characters ([#6235](https://github.com/cyberbotics/webots/pull/6235)). - - Fixed the size of the Kondo [KHR-3HV](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/kondo/khr-3hv/protos/Khr3hv.proto) robot which was twice too large ([#6228](https://github.com/cyberbotics/webots/pull/6228)). + - Fixed the size of the Kondo [KHR-3HV](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/kondo/khr-3hv/protos/Khr3hv.proto) robot which was twice too large ([#6228](https://github.com/cyberbotics/webots/pull/6228)). - Fixed the MATLAB `wb_camera_recognition_get_objects` API function ([#6172](https://github.com/cyberbotics/webots/pull/6172)). - Fixed the clean-up of the motion API which was firing warnings in Python ([#6029](https://github.com/cyberbotics/webots/pull/6029)). - Fixed the behavior of the [Connector](connector.md) after a reset to return to the controller the correct status ([#5889](https://github.com/cyberbotics/webots/pull/5889)) @@ -66,7 +66,7 @@ Released on June 28th, 2023. - Fixed invalid default NULL `from_node` argument in [`wb_supervisor_node_disable_pose_tracking`](supervisor.md#wb_supervisor_node_disable_pose_tracking) ([#5638](https://github.com/cyberbotics/webots/pull/5638)). - Fixed BotStudio robot window loading errors ([#5651](https://github.com/cyberbotics/webots/pull/5651)). - Lowered the connection retry delay for extern controllers ([#5656](https://github.com/cyberbotics/webots/pull/5656)). - - Fixed default translation of [RangeRoverSportSVRSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/range_rover/RangeRoverSportSVRSimple.proto) and [TruckSimple](https://webots.cloud/run?url={{ url.github_tree }}/projects/vehicles/protos/generic/protos/TruckSimple.proto) not converted to ENU ([#5653](https://github.com/cyberbotics/webots/pull/5653)). + - Fixed default translation of [RangeRoverSportSVRSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/range_rover/RangeRoverSportSVRSimple.proto) and [TruckSimple](https://webots.cloud/run?url={{ url.github_blob }}/projects/vehicles/protos/generic/protos/TruckSimple.proto) not converted to ENU ([#5653](https://github.com/cyberbotics/webots/pull/5653)). - Fixed a crash when setting the `Robot.battery` after the simulation start ([#5669](https://github.com/cyberbotics/webots/pull/5669)). - Fixed crashes resulting from converting to base nodes a PROTO containing DEF and USE nodes ([#5676](https://github.com/cyberbotics/webots/pull/5676)). - Fixed crashes resulting from updating a DEF node whose USE node is contained in a PROTO field triggering the regeneration ([#5676](https://github.com/cyberbotics/webots/pull/5676)). diff --git a/docs/reference/contactproperties.md b/docs/reference/contactproperties.md index 022932a66ae..9a592fee641 100644 --- a/docs/reference/contactproperties.md +++ b/docs/reference/contactproperties.md @@ -121,4 +121,4 @@ Contact joints will only be created for, at most, the deepest `maxContactJoints` Changes to `maxContactJoints` may have a significant effect on performance because the computational complexity of the default ODE physics engine scales with the cube of the number of contact joints. -> **Note**: The [youBot](https://webots.cloud/run?url={{ url.github_tree }}/projects/robots/kuka/youbot/protos/Youbot.proto) robot is a good example of asymmetric coulombFriction and forceDependentSlip. +> **Note**: The [youBot](https://webots.cloud/run?url={{ url.github_blob }}/projects/robots/kuka/youbot/protos/Youbot.proto) robot is a good example of asymmetric coulombFriction and forceDependentSlip.