Skip to content
porting behavioral settings from a webots darwin onto a real darwin
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


----- Project goals -----

- Create a simulation of the DARwIn-OP robot on the Webots simulator as realisitc as possible.
- Allow to run a controller written using exclusively the Webots API (and not the Robotis API) in simulation and in reality

----- Project structure -----

The root of the project should match with the root of Webots.
At each new Webots release, this project can be merged in the root directory of Webots.

----- Installation (beta) -----

A. Get the git repository

- 1. Let say its git repository path is called $GIT_REPOSITORY

B. Install Webots

- 1. Follow the instructions of the user manual of Webots to install Webots

- 2. Let say its installation path is called $WEBOTS_HOME

C. Install default software on the DARwIn-OP

- 1. Let say the root path of the DARwIn-OP is called $DARWINOP

D. Run the simulation

- 1. Merge the "resources" directory git repository with the "resources" directory of Webots
     $ cp -R $GIT_REPOSITORY/resources $WEBOTS_HOME

- 2. Compile the darwin and manager libraries by typing:
     $ cd $WEBOTS_HOME/resources/projects/robots/darwin-op/libraries/darwin
     $ make
     => $WEBOTS_HOME/resources/projects/robots/darwin-op/libraries/darwin/libdarwin is generated
     $ cd $WEBOTS_HOME/resources/projects/robots/darwin-op/libraries/managers
     $ make
     => $WEBOTS_HOME/resources/projects/robots/darwin-op/libraries/managers/libmanagers is generated

- 3. Compile a Soccer controller
     Open Webots and compile the controller:
     $ webots $GIT_REPOSITORY/projects/robots/darwin-op/worlds/soccer.wbt
     From the Webots GUI, open $GIT_REPOSITORY/projects/robots/darwin-op/controllers/soccer/Soccer.cpp and
     hit the "Build / Build" menu item.
     Revert and play the simulation.

E. Run the same controller on the DARwIn-OP

- 1. Make sure you have version 1.5.0 of DARwIn-OP's Framework installed on the robot.
     The version of the Framework can be checked in /darwin/ReleaseNote.txt
     If version 1.5.0 is not installed you can found it here :
     You simply have to merge /darwin with the files present in

- 2. On the DARwIn-OP, merge $GIT_REPOSITORY/resources/projects/robots/darwin-op/libraries/darwin/darwin/ with existing DARwIn-OP source code in /darwin/ directory

     $ cp -R $GIT_REPOSITORY/resources/projects/robots/darwin-op/libraries/darwin/darwin/* /darwin/ 

- 3. On the DARwIn-OP, recompile the Framework

     $ cd /darwin/Linux/build
     $ make clean
     $ make
     $ cd /darwin/Linux/project/demo
     $ make distclean
     $ make
     $ chown darwin.darwin /darwin
- 4. On the DARwIn-OP, create a /darwin/Linux/project/webots directory

- 5. Copy-paste the "libraries/managers/include", "libraries/managers/lib", "transfer", and "libraries/managers/src" directories of the $GIT_REPOSITORY/resources/projects/robots/darwin-op
     directory directly in the /darwin/Linux/project/webots directory

- 6. Do the same with the $GIT_REPOSITORY/projects/robots/darwin-op/controllers directory.
     Note: From now, on the real DARwIn-OP, you should have these directories:

- 7. Compile the wrapper library
     $ cd /darwin/Linux/project/webots/transfer/lib
     $ make

- 8. Compile the managers library
     $ cd /darwin/Linux/project/webots/lib
     $ make -f Makefile.darwin-op

- 9. Compile the controller
     $ cd /darwin/Linux/project/webots/controllers/symmetry
     $ make -f Makefile.darwin-op

-10. Start the controller
     $ ./symmetry
     To stop the controller press Ctrl+c
     You can now try the other examples presents in the directory "controllers"

F. Run your controller on the robot from Webots (remote-control)

- 1. On the DARwIn-OP, copy paste $GIT_REPOSITORY/resources/projects/robots/darwin-op/remote_control directory in /darwin/Linux/project/webots

- 2. Compile remote control serveur on the DARwIn-OP
     $ cd /darwin/Linux/project/webots/remote_control
     $ make -f Makefile.darwin-op

- 3. Start the remote serveur
     $ /darwin/Linux/project/webots/remote_control/remote_control 1 1 (adjust parameters if camera resolution is not 320x240, example 2 1 for a resolution of 160x240)

- 4. Set the robot in remote-control mode on Webots by adding the following lines in the controller
     const char arguments[16] = "";  // adjust IP adress if the robot is connected by wifi
     setMode(MODE_REMOTE_CONTROL, (void *)arguments);

- 5. Compile controller and revert world

----- Known issues ----- 

- 1. In simulation, in the DARwInOPGaitManager, the lateral balance do not work as expected.
     It is recommended to set balance_hip_roll_gain and balance_ankle_roll_gain to 0.0,
     this must be done in the file 'config.ini' attached to the controller.
- 2. In simulation the P gain of the servo affects the speed but on the real robot it affects
     the torque. This can cause differences between simulation and reality in some specific cases.
     Especially when P is small.

----- Contributors -----

Robotis, Cyberbotics, and users ^^

You can’t perform that action at this time.