Skip to content
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

Merge develop into master #1028

Merged
merged 105 commits into from
Feb 18, 2025
Merged
Changes from 2 commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
82da526
Merge pull request #780 from cyberbotics/sync-master-006a96f
ygoumaz Jun 20, 2023
a07e4af
Sync submodule (#784)
github-actions[bot] Jun 22, 2023
4274267
Merge branch 'develop' into sync-master-76dfdf2
ygoumaz Jun 26, 2023
f135da9
Merge pull request #786 from cyberbotics/sync-master-76dfdf2
ygoumaz Jun 26, 2023
5b3453f
Merge branch 'develop' into sync-master-ff0d63a
ygoumaz Jun 27, 2023
b68537e
Merge pull request #790 from cyberbotics/sync-master-ff0d63a
ygoumaz Jun 27, 2023
ff4ca93
Sync submodule
Jun 29, 2023
13e8015
Merge branch 'develop' into sync-master-5bdb813
ygoumaz Jun 29, 2023
e081c2d
Merge pull request #797 from cyberbotics/sync-develop-ed75ec0c4290589…
omichel Jun 29, 2023
71a0bcc
Merge branch 'develop' into sync-master-5bdb813
ygoumaz Jun 29, 2023
f1edfd8
Merge pull request #798 from cyberbotics/sync-master-5bdb813
ygoumaz Jun 29, 2023
f7078d2
Merge branch 'develop' into sync-master-e3299e4
ygoumaz Jun 30, 2023
45d8eef
Merge pull request #802 from cyberbotics/sync-master-e3299e4
ygoumaz Jun 30, 2023
7f84a5c
fix wbt (#803)
ygoumaz Jun 30, 2023
14a22ad
Merge master into develop (#806)
github-actions[bot] Jul 4, 2023
d0ba360
Merge branch 'develop' into sync-master-3f15289
omichel Jul 5, 2023
ba38209
Update CHANGELOG.rst
omichel Jul 5, 2023
264e4f6
Merge pull request #808 from cyberbotics/sync-master-3f15289
ygoumaz Jul 5, 2023
e3517c0
update develop branch (#813)
ygoumaz Jul 6, 2023
edc0e06
Sync submodule
Jul 7, 2023
9870f1b
Merge branch 'develop' into sync-master-fdf3111
ygoumaz Jul 7, 2023
fe164e4
Merge pull request #817 from cyberbotics/sync-master-fdf3111
ygoumaz Jul 7, 2023
13a0d2e
Merge branch 'develop' into sync-develop-8079d6f6185f99dac9b6fc3507a7…
ygoumaz Jul 7, 2023
2621c43
Merge pull request #816 from cyberbotics/sync-develop-8079d6f6185f99d…
omichel Jul 7, 2023
85e91ef
Merge branch 'develop' into sync-master-fa0c82e
omichel Jul 10, 2023
cd860ba
Merge pull request #820 from cyberbotics/sync-master-fa0c82e
omichel Jul 10, 2023
540bb88
Merge branch 'develop' into sync-master-549d842
ygoumaz Jul 12, 2023
411be66
Sync submodule (#825)
github-actions[bot] Jul 12, 2023
f022fba
Merge branch 'develop' into sync-master-549d842
ygoumaz Jul 12, 2023
aadf0f7
Merge pull request #826 from cyberbotics/sync-master-549d842
ygoumaz Jul 12, 2023
5793c6f
Merge branch 'develop' into sync-master-e8e9e25
ygoumaz Jul 13, 2023
7203ae4
Merge pull request #828 from cyberbotics/sync-master-e8e9e25
ygoumaz Jul 13, 2023
6e74d93
Merge branch 'develop' into sync-master-f8006a5
ygoumaz Jul 18, 2023
a13f089
Merge pull request #832 from cyberbotics/sync-master-f8006a5
ygoumaz Jul 18, 2023
e7ae291
Merge branch 'develop' into sync-master-c7a5f08
ygoumaz Jul 19, 2023
7efd8a6
Merge pull request #836 from cyberbotics/sync-master-c7a5f08
ygoumaz Jul 19, 2023
ea19ede
ROSbot 2R, XL webots_ros2 support (#770)
delihus Aug 2, 2023
f17e13a
Merge branch 'develop' into sync-master-f3045ad
omichel Aug 3, 2023
4f270f7
Merge pull request #840 from cyberbotics/sync-master-f3045ad
omichel Aug 3, 2023
7596ca4
Merge branch 'develop' into sync-master-e5f890e
omichel Aug 11, 2023
4ddf11a
Merge pull request #842 from cyberbotics/sync-master-e5f890e
omichel Aug 11, 2023
4c32c02
Sync submodule
Sep 27, 2023
0f22d5c
Merge pull request #851 from cyberbotics/sync-develop-be022be5009d1d8…
omichel Sep 27, 2023
b8a3575
Sync submodule
Oct 3, 2023
a8f1da6
Merge pull request #855 from cyberbotics/sync-develop-779ffd098ed71db…
omichel Oct 3, 2023
14c8e4e
Merge branch 'develop' into sync-master-b65c5ae
omichel Nov 21, 2023
402761b
Merge pull request #866 from cyberbotics/sync-master-b65c5ae
omichel Nov 21, 2023
8c03af2
Add crazyflie webots packages (#872)
knmcguire Jan 3, 2024
84654c8
Merge branch 'develop' into sync-master-6038a45
omichel Jan 17, 2024
092993e
Merge pull request #884 from cyberbotics/sync-master-6038a45
omichel Jan 17, 2024
16e0330
Sync submodule
Jan 20, 2024
979b1ab
Merge branch 'develop' into sync-master-399a0eb
omichel Jan 21, 2024
b2144be
Merge pull request #886 from cyberbotics/sync-develop-a811190f78a88f4…
omichel Jan 21, 2024
fe6bc0f
Merge branch 'develop' into sync-master-399a0eb
omichel Jan 21, 2024
17c700e
Merge pull request #887 from cyberbotics/sync-master-399a0eb
omichel Jan 22, 2024
6471854
Merge branch 'develop' into sync-master-1812230
omichel Jan 30, 2024
8e0407c
Merge pull request #890 from cyberbotics/sync-master-1812230
omichel Jan 30, 2024
bc2ef9a
Merge branch 'develop' into sync-master-929c45c
omichel Feb 16, 2024
955fd26
Merge pull request #900 from cyberbotics/sync-master-929c45c
omichel Feb 16, 2024
f8b2c18
Merge branch 'develop' into sync-master-97a007f
omichel Feb 21, 2024
1106d6a
Merge pull request #902 from cyberbotics/sync-master-97a007f
omichel Feb 21, 2024
75542b2
Merge branch 'develop' into sync-master-7b0e501
omichel Feb 27, 2024
07f4dba
Merge pull request #904 from cyberbotics/sync-master-7b0e501
omichel Feb 27, 2024
3079eef
Merge branch 'develop' into sync-master-457f111
omichel Mar 15, 2024
96400e7
Merge pull request #912 from cyberbotics/sync-master-457f111
omichel Mar 16, 2024
2a51908
Merge branch 'develop' into sync-master-5f6b408
omichel Mar 26, 2024
f30d5a8
Merge pull request #915 from cyberbotics/sync-master-5f6b408
omichel Mar 26, 2024
3147a05
Merge branch 'develop' into sync-master-997b237
omichel Apr 9, 2024
ff24fa7
Merge pull request #918 from cyberbotics/sync-master-997b237
omichel Apr 9, 2024
e30b65c
Sync submodule
Jun 1, 2024
2642477
Merge pull request #925 from cyberbotics/sync-develop-e2b0a1e530f6071…
omichel Jun 1, 2024
7c68c06
Sync submodule
Jun 24, 2024
acf66b0
Merge pull request #933 from cyberbotics/sync-develop-37d5deb39064b83…
omichel Jun 24, 2024
a38be99
Merge branch 'develop' into sync-master-9a4c8d9
omichel Jun 24, 2024
3e67cac
Merge pull request #934 from cyberbotics/sync-master-9a4c8d9
omichel Jun 24, 2024
b0bcb72
Merge branch 'develop' into sync-master-3286211
omichel Jul 11, 2024
69d6b14
Merge pull request #941 from cyberbotics/sync-master-3286211
omichel Jul 11, 2024
9d2df7c
Sync submodule
Jul 12, 2024
9076c8d
Merge pull request #942 from cyberbotics/sync-develop-840379233529f5a…
omichel Jul 12, 2024
518237e
Merge branch 'develop' into sync-master-f137797
omichel Jul 12, 2024
a309abd
Merge pull request #943 from cyberbotics/sync-master-f137797
omichel Jul 12, 2024
4ea26c5
Sync submodule
Jul 23, 2024
74db63e
Merge branch 'develop' into sync-master-4448c16
omichel Jul 23, 2024
bae1a16
Merge pull request #947 from cyberbotics/sync-master-4448c16
omichel Jul 23, 2024
ff3a0e2
Merge branch 'develop' into sync-develop-77ecccc82338c06cb640857709fe…
omichel Jul 23, 2024
d5a012d
Merge pull request #946 from cyberbotics/sync-develop-77ecccc82338c06…
omichel Jul 23, 2024
7245ed9
Merge branch 'develop' into sync-master-0e70d81
lukicdarkoo Aug 1, 2024
a7e050d
Sync submodule
Aug 4, 2024
2c0bb97
Merge pull request #954 from cyberbotics/sync-develop-a7596c75fdaf073…
omichel Aug 4, 2024
4d97394
Merge branch 'develop' into sync-master-0e70d81
omichel Aug 4, 2024
71493b2
Merge pull request #952 from cyberbotics/sync-master-0e70d81
omichel Aug 4, 2024
244784f
Merge branch 'develop' into sync-master-e06572d
omichel Aug 5, 2024
4a868f8
Merge pull request #956 from cyberbotics/sync-master-e06572d
omichel Aug 5, 2024
16df1c5
Sync submodule
Aug 7, 2024
32fb482
Merge branch 'develop' into sync-master-950cb03
omichel Aug 7, 2024
67d20f8
Merge pull request #958 from cyberbotics/sync-develop-22c9c8a807c961a…
omichel Aug 7, 2024
58ba66a
Merge branch 'develop' into sync-master-950cb03
omichel Aug 7, 2024
1442d78
Merge pull request #959 from cyberbotics/sync-master-950cb03
omichel Aug 7, 2024
27507c3
Sync submodule
Dec 23, 2024
ac07cd4
Merge branch 'develop' into sync-master-be9c9ce
lukicdarkoo Dec 26, 2024
0b06a79
Merge pull request #1021 from cyberbotics/sync-master-be9c9ce
lukicdarkoo Dec 26, 2024
6893c53
Merge branch 'develop' into sync-develop-21d2782e296090815d417996d84f…
lukicdarkoo Dec 26, 2024
d49bb5e
Merge pull request #1019 from cyberbotics/sync-develop-21d2782e296090…
lukicdarkoo Dec 26, 2024
d1e09f1
Fix Webots R2025a compability (#1022)
lukicdarkoo Dec 27, 2024
de89a67
Fix CI (develop branch) (#1029)
lukicdarkoo Feb 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Accelerometer : public Device {
public:
explicit Accelerometer(const std::string &name) : Device(name) {} // Use Robot::getAccelerometer() instead
explicit Accelerometer(WbDeviceTag tag) : Device(tag) {}
virtual ~Accelerometer() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Altimeter : public Device {
public:
explicit Altimeter(const std::string &name) : Device(name) {} // Use Robot::getAltimeter instead
explicit Altimeter(WbDeviceTag tag) : Device(tag) {}
virtual ~Altimeter() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -30,6 +30,7 @@ namespace webots {
Device(name),
motor(NULL),
positionSensor(NULL) {} // Use Robot::getBrake() instead
explicit Brake(WbDeviceTag tag) : Device(tag), motor(NULL), positionSensor(NULL) {}
virtual ~Brake() {}
Type getType() const;
void setDampingConstant(double dampingConstant) const;
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@ namespace webots {
class Camera : public Device {
public:
explicit Camera(const std::string &name) : Device(name) {} // Use Robot::getCamera() instead
explicit Camera(WbDeviceTag tag) : Device(tag) {}
virtual ~Camera() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Compass : public Device {
public:
explicit Compass(const std::string &name) : Device(name) {} // Use Robot::getCompass() instead
explicit Compass(WbDeviceTag tag) : Device(tag) {}
virtual ~Compass() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Connector : public Device {
public:
explicit Connector(const std::string &name) : Device(name) {} // Use Robot::getConnector() instead
explicit Connector(WbDeviceTag tag) : Device(tag) {}
virtual ~Connector() {}
virtual void enablePresence(int samplingPeriod);
virtual void disablePresence();
Original file line number Diff line number Diff line change
@@ -32,6 +32,7 @@ namespace webots {

protected:
explicit Device(const std::string &name);
explicit Device(WbDeviceTag tag);

private:
WbDeviceTag tag;
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@ namespace webots {
public:
enum { RGB = 3, RGBA, ARGB, BGRA, ABGR };
explicit Display(const std::string &name) : Device(name) {} // Use Robot::getDisplay() instead
explicit Display(WbDeviceTag tag) : Device(tag) {}
virtual ~Display() {}
int getWidth() const;
int getHeight() const;
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ namespace webots {
typedef enum { GENERIC = 0, INFRA_RED, SONAR, LASER } Type;

explicit DistanceSensor(const std::string &name) : Device(name) {} // Use Robot::getDistanceSensor() instead
explicit DistanceSensor(WbDeviceTag tag) : Device(tag) {}
virtual ~DistanceSensor() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Emitter : public Device {
public:
explicit Emitter(const std::string &name) : Device(name) {} // Use Robot::getEmitter() instead
explicit Emitter(WbDeviceTag tag) : Device(tag) {}
virtual ~Emitter() {}
enum { CHANNEL_BROADCAST = -1 };
virtual int send(const void *data, int size);
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ namespace webots {
typedef enum { LOCAL = 0, WGS84 } CoordinateSystem;

explicit GPS(const std::string &name) : Device(name) {} // Use Robot::getGPS() instead
explicit GPS(WbDeviceTag tag) : Device(tag) {}
virtual ~GPS() {}

virtual void enable(int samplingPeriod);
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Gyro : public Device {
public:
explicit Gyro(const std::string &name) : Device(name) {} // Use Robot::getGyro() instead
explicit Gyro(WbDeviceTag tag) : Device(tag) {}
virtual ~Gyro() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class InertialUnit : public Device {
public:
explicit InertialUnit(const std::string &name) : Device(name) {} // Use Robot::getInertialUnit() instead
explicit InertialUnit(WbDeviceTag tag) : Device(tag) {}
virtual ~InertialUnit() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class LED : public Device {
public:
explicit LED(const std::string &name) : Device(name) {} // Use Robot::getLED() instead
explicit LED(WbDeviceTag tag) : Device(tag) {}
virtual ~LED() {}
virtual void set(int value);
int get() const;
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@ namespace webots {
class Lidar : public Device {
public:
explicit Lidar(const std::string &name) : Device(name) {} // Use Robot::getLidar() instead
explicit Lidar(WbDeviceTag tag) : Device(tag) {}
virtual ~Lidar() {}
virtual void enable(int samplingPeriod);
void enablePointCloud();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class LightSensor : public Device {
public:
explicit LightSensor(const std::string &name) : Device(name) {} // Use Robot::getLightSensor() instead
explicit LightSensor(WbDeviceTag tag) : Device(tag) {}
virtual ~LightSensor() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -31,6 +31,7 @@ namespace webots {
Device(name),
brake(NULL),
positionSensor(NULL) {} // Use Robot::getMotor() instead
explicit Motor(WbDeviceTag tag) : Device(tag), brake(NULL), positionSensor(NULL) {}
virtual ~Motor() {}

virtual void setPosition(double position);
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Pen : public Device {
public:
explicit Pen(const std::string &name) : Device(name) {} // Use Robot::getPen() instead
explicit Pen(WbDeviceTag tag) : Device(tag) {}
virtual ~Pen() {}
virtual void write(bool write);
virtual void setInkColor(int color, double density);
Original file line number Diff line number Diff line change
@@ -29,6 +29,7 @@ namespace webots {
Device(name),
brake(NULL),
motor(NULL) {} // Use Robot::getPositionSensor() instead
explicit PositionSensor(WbDeviceTag tag) : Device(tag), brake(NULL), motor(NULL) {}
virtual ~PositionSensor() {}
virtual void enable(int samplingPeriod); // milliseconds
virtual void disable();
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@ namespace webots {
class Radar : public Device {
public:
explicit Radar(const std::string &name) : Device(name) {} // Use Robot::getRadar() instead
explicit Radar(WbDeviceTag tag) : Device(tag) {}
virtual ~Radar() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class RangeFinder : public Device {
public:
explicit RangeFinder(const std::string &name) : Device(name) {} // Use Robot::getRangeFinder() instead
explicit RangeFinder(WbDeviceTag tag) : Device(tag) {}
virtual ~RangeFinder() {}
virtual void enable(int samplingPeriod);
virtual void disable();
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Receiver : public Device {
public:
explicit Receiver(const std::string &name) : Device(name) {} // Use Robot::getReceiver() instead
explicit Receiver(WbDeviceTag tag) : Device(tag) {}
virtual ~Receiver() {}
enum { CHANNEL_BROADCAST = -1 };
virtual void enable(int samplingPeriod);
52 changes: 27 additions & 25 deletions webots_ros2_driver/webots/include/controller/cpp/webots/Robot.hpp
Original file line number Diff line number Diff line change
@@ -18,6 +18,8 @@
#include <iostream>
#include <vector>

#include "../../c/webots/types.h"

namespace webots {
class Accelerometer;
class Altimeter;
@@ -141,31 +143,31 @@ namespace webots {

protected:
static Robot *cInstance;
virtual Accelerometer *createAccelerometer(const std::string &name) const;
virtual Altimeter *createAltimeter(const std::string &name) const;
virtual Brake *createBrake(const std::string &name) const;
virtual Camera *createCamera(const std::string &name) const;
virtual Compass *createCompass(const std::string &name) const;
virtual Connector *createConnector(const std::string &name) const;
virtual Display *createDisplay(const std::string &name) const;
virtual DistanceSensor *createDistanceSensor(const std::string &name) const;
virtual Emitter *createEmitter(const std::string &name) const;
virtual GPS *createGPS(const std::string &name) const;
virtual Gyro *createGyro(const std::string &name) const;
virtual InertialUnit *createInertialUnit(const std::string &name) const;
virtual LED *createLED(const std::string &name) const;
virtual Lidar *createLidar(const std::string &name) const;
virtual LightSensor *createLightSensor(const std::string &name) const;
virtual Motor *createMotor(const std::string &name) const;
virtual Pen *createPen(const std::string &name) const;
virtual PositionSensor *createPositionSensor(const std::string &name) const;
virtual Radar *createRadar(const std::string &name) const;
virtual RangeFinder *createRangeFinder(const std::string &name) const;
virtual Receiver *createReceiver(const std::string &name) const;
virtual Skin *createSkin(const std::string &name) const;
virtual Speaker *createSpeaker(const std::string &name) const;
virtual TouchSensor *createTouchSensor(const std::string &name) const;
virtual VacuumGripper *createVacuumGripper(const std::string &name) const;
virtual Accelerometer *createAccelerometer(WbDeviceTag tag) const;
virtual Altimeter *createAltimeter(WbDeviceTag tag) const;
virtual Brake *createBrake(WbDeviceTag tag) const;
virtual Camera *createCamera(WbDeviceTag tag) const;
virtual Compass *createCompass(WbDeviceTag tag) const;
virtual Connector *createConnector(WbDeviceTag tag) const;
virtual Display *createDisplay(WbDeviceTag tag) const;
virtual DistanceSensor *createDistanceSensor(WbDeviceTag tag) const;
virtual Emitter *createEmitter(WbDeviceTag tag) const;
virtual GPS *createGPS(WbDeviceTag tag) const;
virtual Gyro *createGyro(WbDeviceTag tag) const;
virtual InertialUnit *createInertialUnit(WbDeviceTag tag) const;
virtual LED *createLED(WbDeviceTag tag) const;
virtual Lidar *createLidar(WbDeviceTag tag) const;
virtual LightSensor *createLightSensor(WbDeviceTag tag) const;
virtual Motor *createMotor(WbDeviceTag tag) const;
virtual Pen *createPen(WbDeviceTag tag) const;
virtual PositionSensor *createPositionSensor(WbDeviceTag tag) const;
virtual Radar *createRadar(WbDeviceTag tag) const;
virtual RangeFinder *createRangeFinder(WbDeviceTag tag) const;
virtual Receiver *createReceiver(WbDeviceTag tag) const;
virtual Skin *createSkin(WbDeviceTag tag) const;
virtual Speaker *createSpeaker(WbDeviceTag tag) const;
virtual TouchSensor *createTouchSensor(WbDeviceTag tag) const;
virtual VacuumGripper *createVacuumGripper(WbDeviceTag tag) const;

private:
Keyboard *mKeyboard;
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Skin : public Device {
public:
explicit Skin(const std::string &name) : Device(name) {}
explicit Skin(WbDeviceTag tag) : Device(tag) {}
virtual ~Skin() {}
void setBoneOrientation(int index, const double orientation[4], bool absolute);
void setBonePosition(int index, const double position[3], bool absolute);
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class Speaker : public Device {
public:
explicit Speaker(const std::string &name) : Device(name) {} // Use Robot::getSpeaker() instead
explicit Speaker(WbDeviceTag tag) : Device(tag) {}
virtual ~Speaker() {}
static void playSound(Speaker *left, Speaker *right, const std::string &sound, double volume, double pitch, double balance,
bool loop);
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ namespace webots {
typedef enum { BUMPER = 0, FORCE, FORCE3D } Type;

explicit TouchSensor(const std::string &name) : Device(name) {} // Use Robot::getTouchSensor() instead
explicit TouchSensor(WbDeviceTag tag) : Device(tag) {}
virtual ~TouchSensor() {}

virtual void enable(int samplingPeriod);
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@ namespace webots {
class VacuumGripper : public Device {
public:
explicit VacuumGripper(const std::string &name) : Device(name) {} // Use Robot::getVacuumGripper() instead
explicit VacuumGripper(WbDeviceTag tag) : Device(tag) {}
virtual ~VacuumGripper() {}
virtual void enablePresence(int samplingPeriod);
virtual void disablePresence();
Original file line number Diff line number Diff line change
@@ -136,7 +136,7 @@ def __init__(self):
if type == Node.ACCELEROMETER:
self.devices[name] = Accelerometer(tag)
elif type == Node.ALTIMETER:
self.devices[name] = Altimeter(name)
self.devices[name] = Altimeter(tag)
elif type == Node.BRAKE:
self.devices[name] = Brake(tag)
elif type == Node.CAMERA:
4 changes: 4 additions & 0 deletions webots_ros2_driver/webots/src/controller/cpp/Device.cpp
Original file line number Diff line number Diff line change
@@ -26,6 +26,10 @@ Device::Device(const string &deviceName) : name(deviceName) {
tag = wb_robot_get_device(name.c_str());
}

Device::Device(WbDeviceTag deviceTag) : tag(deviceTag) {
name = wb_device_get_name(deviceTag);
}

int Device::getNodeType() const {
return wb_device_get_node_type(tag);
}
151 changes: 75 additions & 76 deletions webots_ros2_driver/webots/src/controller/cpp/Robot.cpp
Original file line number Diff line number Diff line change
@@ -199,8 +199,8 @@ Accelerometer *Robot::getAccelerometer(const string &name) {
return dynamic_cast<Accelerometer *>(getOrCreateDevice(tag));
}

Accelerometer *Robot::createAccelerometer(const string &name) const {
return new Accelerometer(name);
Accelerometer *Robot::createAccelerometer(WbDeviceTag tag) const {
return new Accelerometer(tag);
}

Altimeter *Robot::getAltimeter(const string &name) {
@@ -210,8 +210,8 @@ Altimeter *Robot::getAltimeter(const string &name) {
return dynamic_cast<Altimeter *>(getOrCreateDevice(tag));
}

Altimeter *Robot::createAltimeter(const string &name) const {
return new Altimeter(name);
Altimeter *Robot::createAltimeter(WbDeviceTag tag) const {
return new Altimeter(tag);
}

Brake *Robot::getBrake(const string &name) {
@@ -221,8 +221,8 @@ Brake *Robot::getBrake(const string &name) {
return dynamic_cast<Brake *>(getOrCreateDevice(tag));
}

Brake *Robot::createBrake(const string &name) const {
return new Brake(name);
Brake *Robot::createBrake(WbDeviceTag tag) const {
return new Brake(tag);
}

Camera *Robot::getCamera(const string &name) {
@@ -232,8 +232,8 @@ Camera *Robot::getCamera(const string &name) {
return dynamic_cast<Camera *>(getOrCreateDevice(tag));
}

Camera *Robot::createCamera(const string &name) const {
return new Camera(name);
Camera *Robot::createCamera(WbDeviceTag tag) const {
return new Camera(tag);
}

Compass *Robot::getCompass(const string &name) {
@@ -243,8 +243,8 @@ Compass *Robot::getCompass(const string &name) {
return dynamic_cast<Compass *>(getOrCreateDevice(tag));
}

Compass *Robot::createCompass(const string &name) const {
return new Compass(name);
Compass *Robot::createCompass(WbDeviceTag tag) const {
return new Compass(tag);
}

Connector *Robot::getConnector(const string &name) {
@@ -254,8 +254,8 @@ Connector *Robot::getConnector(const string &name) {
return dynamic_cast<Connector *>(getOrCreateDevice(tag));
}

Connector *Robot::createConnector(const string &name) const {
return new Connector(name);
Connector *Robot::createConnector(WbDeviceTag tag) const {
return new Connector(tag);
}

Display *Robot::getDisplay(const string &name) {
@@ -265,8 +265,8 @@ Display *Robot::getDisplay(const string &name) {
return dynamic_cast<Display *>(getOrCreateDevice(tag));
}

Display *Robot::createDisplay(const string &name) const {
return new Display(name);
Display *Robot::createDisplay(WbDeviceTag tag) const {
return new Display(tag);
}

DistanceSensor *Robot::getDistanceSensor(const string &name) {
@@ -276,8 +276,8 @@ DistanceSensor *Robot::getDistanceSensor(const string &name) {
return dynamic_cast<DistanceSensor *>(getOrCreateDevice(tag));
}

DistanceSensor *Robot::createDistanceSensor(const string &name) const {
return new DistanceSensor(name);
DistanceSensor *Robot::createDistanceSensor(WbDeviceTag tag) const {
return new DistanceSensor(tag);
}

Emitter *Robot::getEmitter(const string &name) {
@@ -287,8 +287,8 @@ Emitter *Robot::getEmitter(const string &name) {
return dynamic_cast<Emitter *>(getOrCreateDevice(tag));
}

Emitter *Robot::createEmitter(const string &name) const {
return new Emitter(name);
Emitter *Robot::createEmitter(WbDeviceTag tag) const {
return new Emitter(tag);
}

GPS *Robot::getGPS(const string &name) {
@@ -298,8 +298,8 @@ GPS *Robot::getGPS(const string &name) {
return dynamic_cast<GPS *>(getOrCreateDevice(tag));
}

GPS *Robot::createGPS(const string &name) const {
return new GPS(name);
GPS *Robot::createGPS(WbDeviceTag tag) const {
return new GPS(tag);
}

Gyro *Robot::getGyro(const string &name) {
@@ -309,8 +309,8 @@ Gyro *Robot::getGyro(const string &name) {
return dynamic_cast<Gyro *>(getOrCreateDevice(tag));
}

Gyro *Robot::createGyro(const string &name) const {
return new Gyro(name);
Gyro *Robot::createGyro(WbDeviceTag tag) const {
return new Gyro(tag);
}

InertialUnit *Robot::getInertialUnit(const string &name) {
@@ -320,8 +320,8 @@ InertialUnit *Robot::getInertialUnit(const string &name) {
return dynamic_cast<InertialUnit *>(getOrCreateDevice(tag));
}

InertialUnit *Robot::createInertialUnit(const string &name) const {
return new InertialUnit(name);
InertialUnit *Robot::createInertialUnit(WbDeviceTag tag) const {
return new InertialUnit(tag);
}

LED *Robot::getLED(const string &name) {
@@ -331,8 +331,8 @@ LED *Robot::getLED(const string &name) {
return dynamic_cast<LED *>(getOrCreateDevice(tag));
}

LED *Robot::createLED(const string &name) const {
return new LED(name);
LED *Robot::createLED(WbDeviceTag tag) const {
return new LED(tag);
}

Lidar *Robot::getLidar(const string &name) {
@@ -342,8 +342,8 @@ Lidar *Robot::getLidar(const string &name) {
return dynamic_cast<Lidar *>(getOrCreateDevice(tag));
}

Lidar *Robot::createLidar(const string &name) const {
return new Lidar(name);
Lidar *Robot::createLidar(WbDeviceTag tag) const {
return new Lidar(tag);
}

LightSensor *Robot::getLightSensor(const string &name) {
@@ -353,8 +353,8 @@ LightSensor *Robot::getLightSensor(const string &name) {
return dynamic_cast<LightSensor *>(getOrCreateDevice(tag));
}

LightSensor *Robot::createLightSensor(const string &name) const {
return new LightSensor(name);
LightSensor *Robot::createLightSensor(WbDeviceTag tag) const {
return new LightSensor(tag);
}

Motor *Robot::getMotor(const string &name) {
@@ -364,8 +364,8 @@ Motor *Robot::getMotor(const string &name) {
return dynamic_cast<Motor *>(getOrCreateDevice(tag));
}

Motor *Robot::createMotor(const string &name) const {
return new Motor(name);
Motor *Robot::createMotor(WbDeviceTag tag) const {
return new Motor(tag);
}

Pen *Robot::getPen(const string &name) {
@@ -375,8 +375,8 @@ Pen *Robot::getPen(const string &name) {
return dynamic_cast<Pen *>(getOrCreateDevice(tag));
}

Pen *Robot::createPen(const string &name) const {
return new Pen(name);
Pen *Robot::createPen(WbDeviceTag tag) const {
return new Pen(tag);
}

PositionSensor *Robot::getPositionSensor(const string &name) {
@@ -386,8 +386,8 @@ PositionSensor *Robot::getPositionSensor(const string &name) {
return dynamic_cast<PositionSensor *>(getOrCreateDevice(tag));
}

PositionSensor *Robot::createPositionSensor(const string &name) const {
return new PositionSensor(name);
PositionSensor *Robot::createPositionSensor(WbDeviceTag tag) const {
return new PositionSensor(tag);
}

Radar *Robot::getRadar(const string &name) {
@@ -397,8 +397,8 @@ Radar *Robot::getRadar(const string &name) {
return dynamic_cast<Radar *>(getOrCreateDevice(tag));
}

Radar *Robot::createRadar(const string &name) const {
return new Radar(name);
Radar *Robot::createRadar(WbDeviceTag tag) const {
return new Radar(tag);
}

RangeFinder *Robot::getRangeFinder(const string &name) {
@@ -408,8 +408,8 @@ RangeFinder *Robot::getRangeFinder(const string &name) {
return dynamic_cast<RangeFinder *>(getOrCreateDevice(tag));
}

RangeFinder *Robot::createRangeFinder(const string &name) const {
return new RangeFinder(name);
RangeFinder *Robot::createRangeFinder(WbDeviceTag tag) const {
return new RangeFinder(tag);
}

Receiver *Robot::getReceiver(const string &name) {
@@ -419,8 +419,8 @@ Receiver *Robot::getReceiver(const string &name) {
return dynamic_cast<Receiver *>(getOrCreateDevice(tag));
}

Receiver *Robot::createReceiver(const string &name) const {
return new Receiver(name);
Receiver *Robot::createReceiver(WbDeviceTag tag) const {
return new Receiver(tag);
}

Skin *Robot::getSkin(const string &name) {
@@ -430,8 +430,8 @@ Skin *Robot::getSkin(const string &name) {
return dynamic_cast<Skin *>(getOrCreateDevice(tag));
}

Skin *Robot::createSkin(const string &name) const {
return new Skin(name);
Skin *Robot::createSkin(WbDeviceTag tag) const {
return new Skin(tag);
}

Speaker *Robot::getSpeaker(const string &name) {
@@ -441,8 +441,8 @@ Speaker *Robot::getSpeaker(const string &name) {
return dynamic_cast<Speaker *>(getOrCreateDevice(tag));
}

Speaker *Robot::createSpeaker(const string &name) const {
return new Speaker(name);
Speaker *Robot::createSpeaker(WbDeviceTag tag) const {
return new Speaker(tag);
}

TouchSensor *Robot::getTouchSensor(const string &name) {
@@ -452,8 +452,8 @@ TouchSensor *Robot::getTouchSensor(const string &name) {
return dynamic_cast<TouchSensor *>(getOrCreateDevice(tag));
}

TouchSensor *Robot::createTouchSensor(const string &name) const {
return new TouchSensor(name);
TouchSensor *Robot::createTouchSensor(WbDeviceTag tag) const {
return new TouchSensor(tag);
}

VacuumGripper *Robot::getVacuumGripper(const string &name) {
@@ -463,8 +463,8 @@ VacuumGripper *Robot::getVacuumGripper(const string &name) {
return dynamic_cast<VacuumGripper *>(getOrCreateDevice(tag));
}

VacuumGripper *Robot::createVacuumGripper(const string &name) const {
return new VacuumGripper(name);
VacuumGripper *Robot::createVacuumGripper(WbDeviceTag tag) const {
return new VacuumGripper(tag);
}

Device *Robot::getDeviceFromTag(int tag) {
@@ -495,84 +495,83 @@ Device *Robot::getOrCreateDevice(int tag) {
deviceList[0] = NULL;
for (int i = 0; i < count; i++) {
WbDeviceTag otherTag = wb_robot_get_device_by_index(i);
const char *name = wb_device_get_name(otherTag);
assert(otherTag <= count);
switch (wb_device_get_node_type(otherTag)) {
case WB_NODE_ACCELEROMETER:
deviceList[otherTag] = createAccelerometer(name);
deviceList[otherTag] = createAccelerometer(otherTag);
break;
case WB_NODE_ALTIMETER:
deviceList[otherTag] = createAltimeter(name);
deviceList[otherTag] = createAltimeter(otherTag);
break;
case WB_NODE_BRAKE:
deviceList[otherTag] = createBrake(name);
deviceList[otherTag] = createBrake(otherTag);
break;
case WB_NODE_CAMERA:
deviceList[otherTag] = createCamera(name);
deviceList[otherTag] = createCamera(otherTag);
break;
case WB_NODE_COMPASS:
deviceList[otherTag] = createCompass(name);
deviceList[otherTag] = createCompass(otherTag);
break;
case WB_NODE_CONNECTOR:
deviceList[otherTag] = createConnector(name);
deviceList[otherTag] = createConnector(otherTag);
break;
case WB_NODE_DISPLAY:
deviceList[otherTag] = createDisplay(name);
deviceList[otherTag] = createDisplay(otherTag);
break;
case WB_NODE_DISTANCE_SENSOR:
deviceList[otherTag] = createDistanceSensor(name);
deviceList[otherTag] = createDistanceSensor(otherTag);
break;
case WB_NODE_EMITTER:
deviceList[otherTag] = createEmitter(name);
deviceList[otherTag] = createEmitter(otherTag);
break;
case WB_NODE_GPS:
deviceList[otherTag] = createGPS(name);
deviceList[otherTag] = createGPS(otherTag);
break;
case WB_NODE_GYRO:
deviceList[otherTag] = createGyro(name);
deviceList[otherTag] = createGyro(otherTag);
break;
case WB_NODE_INERTIAL_UNIT:
deviceList[otherTag] = createInertialUnit(name);
deviceList[otherTag] = createInertialUnit(otherTag);
break;
case WB_NODE_LED:
deviceList[otherTag] = createLED(name);
deviceList[otherTag] = createLED(otherTag);
break;
case WB_NODE_LIDAR:
deviceList[otherTag] = createLidar(name);
deviceList[otherTag] = createLidar(otherTag);
break;
case WB_NODE_LIGHT_SENSOR:
deviceList[otherTag] = createLightSensor(name);
deviceList[otherTag] = createLightSensor(otherTag);
break;
case WB_NODE_LINEAR_MOTOR:
case WB_NODE_ROTATIONAL_MOTOR:
deviceList[otherTag] = createMotor(name);
deviceList[otherTag] = createMotor(otherTag);
break;
case WB_NODE_PEN:
deviceList[otherTag] = createPen(name);
deviceList[otherTag] = createPen(otherTag);
break;
case WB_NODE_POSITION_SENSOR:
deviceList[otherTag] = createPositionSensor(name);
deviceList[otherTag] = createPositionSensor(otherTag);
break;
case WB_NODE_RADAR:
deviceList[otherTag] = createRadar(name);
deviceList[otherTag] = createRadar(otherTag);
break;
case WB_NODE_RANGE_FINDER:
deviceList[otherTag] = createRangeFinder(name);
deviceList[otherTag] = createRangeFinder(otherTag);
break;
case WB_NODE_RECEIVER:
deviceList[otherTag] = createReceiver(name);
deviceList[otherTag] = createReceiver(otherTag);
break;
case WB_NODE_SKIN:
deviceList[otherTag] = createSkin(name);
deviceList[otherTag] = createSkin(otherTag);
break;
case WB_NODE_SPEAKER:
deviceList[otherTag] = createSpeaker(name);
deviceList[otherTag] = createSpeaker(otherTag);
break;
case WB_NODE_TOUCH_SENSOR:
deviceList[otherTag] = createTouchSensor(name);
deviceList[otherTag] = createTouchSensor(otherTag);
break;
case WB_NODE_VACUUM_GRIPPER:
deviceList[otherTag] = createVacuumGripper(name);
deviceList[otherTag] = createVacuumGripper(otherTag);
break;
default:
deviceList[otherTag] = NULL;
160 changes: 84 additions & 76 deletions webots_ros2_driver/webots/src/controller/java/controller.i
Original file line number Diff line number Diff line change
@@ -118,6 +118,9 @@ using namespace std;
//handling std::string
%include "std_string.i"

//handling WbDeviceTag
%include <webots/types.h>

//----------------------------------------------------------------------------------------------
// ANSI Support
//----------------------------------------------------------------------------------------------
@@ -836,6 +839,7 @@ namespace webots {
%ignore webots::Robot::getCamera(const std::string &name);
%ignore webots::Robot::getCompass(const std::string &name);
%ignore webots::Robot::getConnector(const std::string &name);
%ignore webots::Robot::getDevice(const std::string &name);
%ignore webots::Robot::getDisplay(const std::string &name);
%ignore webots::Robot::getDistanceSensor(const std::string &name);
%ignore webots::Robot::getEmitter(const std::string &name);
@@ -878,8 +882,8 @@ namespace webots {
private Keyboard keyboard = new Keyboard();
private Mouse mouse = new Mouse();

protected Accelerometer createAccelerometer(String name) {
return new Accelerometer(name);
protected Accelerometer createAccelerometer(int tag) {
return new Accelerometer(tag);
}

public Accelerometer getAccelerometer(String name) {
@@ -889,8 +893,8 @@ namespace webots {
return (Accelerometer)getOrCreateDevice(tag);
}

protected Altimeter createAltimeter(String name) {
return new Altimeter(name);
protected Altimeter createAltimeter(int tag) {
return new Altimeter(tag);
}

public Altimeter getAltimeter(String name) {
@@ -900,8 +904,8 @@ namespace webots {
return (Altimeter)getOrCreateDevice(tag);
}

protected Brake createBrake(String name) {
return new Brake(name);
protected Brake createBrake(int tag) {
return new Brake(tag);
}

public Brake getBrake(String name) {
@@ -911,8 +915,8 @@ namespace webots {
return (Brake)getOrCreateDevice(tag);
}

protected Camera createCamera(String name) {
return new Camera(name);
protected Camera createCamera(int tag) {
return new Camera(tag);
}

public Camera getCamera(String name) {
@@ -922,8 +926,8 @@ namespace webots {
return (Camera)getOrCreateDevice(tag);
}

protected Compass createCompass(String name) {
return new Compass(name);
protected Compass createCompass(int tag) {
return new Compass(tag);
}

public Compass getCompass(String name) {
@@ -933,8 +937,8 @@ namespace webots {
return (Compass)getOrCreateDevice(tag);
}

protected Connector createConnector(String name) {
return new Connector(name);
protected Connector createConnector(int tag) {
return new Connector(tag);
}

public Connector getConnector(String name) {
@@ -944,8 +948,13 @@ namespace webots {
return (Connector)getOrCreateDevice(tag);
}

protected Display createDisplay(String name) {
return new Display(name);
public Device getDevice(String name) {
int tag = getDeviceTagFromName(name);
return getOrCreateDevice(tag);
}

protected Display createDisplay(int tag) {
return new Display(tag);
}

public Display getDisplay(String name) {
@@ -955,8 +964,8 @@ namespace webots {
return (Display)getOrCreateDevice(tag);
}

protected DistanceSensor createDistanceSensor(String name) {
return new DistanceSensor(name);
protected DistanceSensor createDistanceSensor(int tag) {
return new DistanceSensor(tag);
}

public DistanceSensor getDistanceSensor(String name) {
@@ -966,8 +975,8 @@ namespace webots {
return (DistanceSensor)getOrCreateDevice(tag);
}

protected Emitter createEmitter(String name) {
return new Emitter(name);
protected Emitter createEmitter(int tag) {
return new Emitter(tag);
}

public Emitter getEmitter(String name) {
@@ -977,8 +986,8 @@ namespace webots {
return (Emitter)getOrCreateDevice(tag);
}

protected GPS createGPS(String name) {
return new GPS(name);
protected GPS createGPS(int tag) {
return new GPS(tag);
}

public GPS getGPS(String name) {
@@ -988,8 +997,8 @@ namespace webots {
return (GPS)getOrCreateDevice(tag);
}

protected Gyro createGyro(String name) {
return new Gyro(name);
protected Gyro createGyro(int tag) {
return new Gyro(tag);
}

public Gyro getGyro(String name) {
@@ -999,8 +1008,8 @@ namespace webots {
return (Gyro)getOrCreateDevice(tag);
}

protected InertialUnit createInertialUnit(String name) {
return new InertialUnit(name);
protected InertialUnit createInertialUnit(int tag) {
return new InertialUnit(tag);
}

public InertialUnit getInertialUnit(String name) {
@@ -1018,8 +1027,8 @@ namespace webots {
return keyboard;
}

protected LED createLED(String name) {
return new LED(name);
protected LED createLED(int tag) {
return new LED(tag);
}

public LED getLED(String name) {
@@ -1029,8 +1038,8 @@ namespace webots {
return (LED)getOrCreateDevice(tag);
}

protected Lidar createLidar(String name) {
return new Lidar(name);
protected Lidar createLidar(int tag) {
return new Lidar(tag);
}

public Lidar getLidar(String name) {
@@ -1040,8 +1049,8 @@ namespace webots {
return (Lidar)getOrCreateDevice(tag);
}

protected LightSensor createLightSensor(String name) {
return new LightSensor(name);
protected LightSensor createLightSensor(int tag) {
return new LightSensor(tag);
}

public LightSensor getLightSensor(String name) {
@@ -1051,8 +1060,8 @@ namespace webots {
return (LightSensor)getOrCreateDevice(tag);
}

protected Motor createMotor(String name) {
return new Motor(name);
protected Motor createMotor(int tag) {
return new Motor(tag);
}

public Motor getMotor(String name) {
@@ -1066,8 +1075,8 @@ namespace webots {
return mouse;
}

protected Pen createPen(String name) {
return new Pen(name);
protected Pen createPen(int tag) {
return new Pen(tag);
}

public Pen getPen(String name) {
@@ -1077,8 +1086,8 @@ namespace webots {
return (Pen)getOrCreateDevice(tag);
}

protected PositionSensor createPositionSensor(String name) {
return new PositionSensor(name);
protected PositionSensor createPositionSensor(int tag) {
return new PositionSensor(tag);
}

public PositionSensor getPositionSensor(String name) {
@@ -1088,8 +1097,8 @@ namespace webots {
return (PositionSensor)getOrCreateDevice(tag);
}

protected Radar createRadar(String name) {
return new Radar(name);
protected Radar createRadar(int tag) {
return new Radar(tag);
}

public Radar getRadar(String name) {
@@ -1099,8 +1108,8 @@ namespace webots {
return (Radar)getOrCreateDevice(tag);
}

protected RangeFinder createRangeFinder(String name) {
return new RangeFinder(name);
protected RangeFinder createRangeFinder(int tag) {
return new RangeFinder(tag);
}

public RangeFinder getRangeFinder(String name) {
@@ -1110,8 +1119,8 @@ namespace webots {
return (RangeFinder)getOrCreateDevice(tag);
}

protected Receiver createReceiver(String name) {
return new Receiver(name);
protected Receiver createReceiver(int tag) {
return new Receiver(tag);
}

public Receiver getReceiver(String name) {
@@ -1121,8 +1130,8 @@ namespace webots {
return (Receiver)getOrCreateDevice(tag);
}

protected Skin createSkin(String name) {
return new Skin(name);
protected Skin createSkin(int tag) {
return new Skin(tag);
}

public Skin getSkin(String name) {
@@ -1132,8 +1141,8 @@ namespace webots {
return (Skin)getOrCreateDevice(tag);
}

protected Speaker createSpeaker(String name) {
return new Speaker(name);
protected Speaker createSpeaker(int tag) {
return new Speaker(tag);
}

public Speaker getSpeaker(String name) {
@@ -1143,8 +1152,8 @@ namespace webots {
return (Speaker)getOrCreateDevice(tag);
}

protected TouchSensor createTouchSensor(String name) {
return new TouchSensor(name);
protected TouchSensor createTouchSensor(int tag) {
return new TouchSensor(tag);
}

public TouchSensor getTouchSensor(String name) {
@@ -1154,8 +1163,8 @@ namespace webots {
return (TouchSensor)getOrCreateDevice(tag);
}

protected VacuumGripper createVacuumGripper(String name) {
return new VacuumGripper(name);
protected VacuumGripper createVacuumGripper(int tag) {
return new VacuumGripper(tag);
}

public VacuumGripper getVacuumGripper(String name) {
@@ -1191,34 +1200,33 @@ namespace webots {
devices = new Device[count + 1];
for (int i = 0; i < count; i++) {
int otherTag = getDeviceTagFromIndex(i);
String name = getDeviceNameFromTag(otherTag);
switch(getDeviceTypeFromTag(otherTag)) {
case Node.ACCELEROMETER: devices[otherTag] = createAccelerometer(name); break;
case Node.ALTIMETER: devices[otherTag] = createAltimeter(name); break;
case Node.BRAKE: devices[otherTag] = createBrake(name); break;
case Node.CAMERA: devices[otherTag] = createCamera(name); break;
case Node.COMPASS: devices[otherTag] = createCompass(name); break;
case Node.CONNECTOR: devices[otherTag] = createConnector(name); break;
case Node.DISPLAY: devices[otherTag] = createDisplay(name); break;
case Node.DISTANCE_SENSOR: devices[otherTag] = createDistanceSensor(name); break;
case Node.EMITTER: devices[otherTag] = createEmitter(name); break;
case Node.GPS: devices[otherTag] = createGPS(name); break;
case Node.GYRO: devices[otherTag] = createGyro(name); break;
case Node.INERTIAL_UNIT: devices[otherTag] = createInertialUnit(name); break;
case Node.LED: devices[otherTag] = createLED(name); break;
case Node.LIDAR: devices[otherTag] = createLidar(name); break;
case Node.LIGHT_SENSOR: devices[otherTag] = createLightSensor(name); break;
case Node.ACCELEROMETER: devices[otherTag] = createAccelerometer(otherTag); break;
case Node.ALTIMETER: devices[otherTag] = createAltimeter(otherTag); break;
case Node.BRAKE: devices[otherTag] = createBrake(otherTag); break;
case Node.CAMERA: devices[otherTag] = createCamera(otherTag); break;
case Node.COMPASS: devices[otherTag] = createCompass(otherTag); break;
case Node.CONNECTOR: devices[otherTag] = createConnector(otherTag); break;
case Node.DISPLAY: devices[otherTag] = createDisplay(otherTag); break;
case Node.DISTANCE_SENSOR: devices[otherTag] = createDistanceSensor(otherTag); break;
case Node.EMITTER: devices[otherTag] = createEmitter(otherTag); break;
case Node.GPS: devices[otherTag] = createGPS(otherTag); break;
case Node.GYRO: devices[otherTag] = createGyro(otherTag); break;
case Node.INERTIAL_UNIT: devices[otherTag] = createInertialUnit(otherTag); break;
case Node.LED: devices[otherTag] = createLED(otherTag); break;
case Node.LIDAR: devices[otherTag] = createLidar(otherTag); break;
case Node.LIGHT_SENSOR: devices[otherTag] = createLightSensor(otherTag); break;
case Node.LINEAR_MOTOR:
case Node.ROTATIONAL_MOTOR: devices[otherTag] = createMotor(name); break;
case Node.PEN: devices[otherTag] = createPen(name); break;
case Node.POSITION_SENSOR: devices[otherTag] = createPositionSensor(name); break;
case Node.RADAR: devices[otherTag] = createRadar(name); break;
case Node.RANGE_FINDER: devices[otherTag] = createRangeFinder(name); break;
case Node.RECEIVER: devices[otherTag] = createReceiver(name); break;
case Node.SKIN: devices[otherTag] = createSkin(name); break;
case Node.SPEAKER: devices[otherTag] = createSpeaker(name); break;
case Node.TOUCH_SENSOR: devices[otherTag] = createTouchSensor(name); break;
case Node.VACUUM_GRIPPER: devices[otherTag] = createVacuumGripper(name); break;
case Node.ROTATIONAL_MOTOR: devices[otherTag] = createMotor(otherTag); break;
case Node.PEN: devices[otherTag] = createPen(otherTag); break;
case Node.POSITION_SENSOR: devices[otherTag] = createPositionSensor(otherTag); break;
case Node.RADAR: devices[otherTag] = createRadar(otherTag); break;
case Node.RANGE_FINDER: devices[otherTag] = createRangeFinder(otherTag); break;
case Node.RECEIVER: devices[otherTag] = createReceiver(otherTag); break;
case Node.SKIN: devices[otherTag] = createSkin(otherTag); break;
case Node.SPEAKER: devices[otherTag] = createSpeaker(otherTag); break;
case Node.TOUCH_SENSOR: devices[otherTag] = createTouchSensor(otherTag); break;
case Node.VACUUM_GRIPPER: devices[otherTag] = createVacuumGripper(otherTag); break;
default: devices[otherTag] = null; break;
}
}