Code Monkey home page Code Monkey logo

cowriter_letter_learning's Introduction

The CoWriter project: Teaching a robot to write

A set of ROS nodes which facilitate the user interaction allowing a robot to be taught handwriting.

Photo of CoWriter interaction

An example result of the interaction achievable with cowriter_letter_learning: Words are requested by showing cards to the robot with chilitags on them; children correct the robot's simulated handwriting by providing demonstrations on a tablet, which are used to update the robot's shape learning algorithm.

Dependencies

  • shape_learning for the letter learning algorithm,
  • nao_writing for the synchronised trajectory tracing capabilities for the robot,
  • ROS for Android for compiling the tablet app,
  • ros_markers for detecting the word cards,
  • gscam for using an external webcam to detect word cards instead of the Nao's camera.

For more information, see the readmes in internal directories and the parameters which are available for specification in the launch files.

Usage

With only a tablet

(With the shape_learner app deployed on the tablet)

export ROS_IP=(computer's IP)
roslaunch letter_learning_interaction nao_learning.launch use_robot_in_interaction:=false

rostopic pub /words_to_write std_msgs/String "use" -1 to send words to write (e.g. 'use') manually.

Note that console output can be viewed with rosrun rqt_console rqt_console.

Photo of word learning app progress (initial).      Photo of word learning app progress (final).

An example of the system learning the word 'cow' (blue) based on user demonstrations with the tablet (green).

With a webots simulated Nao running

(With the shape_learner app deployed on the tablet, a webcam plugged in, and word cards with fiducial markers printed)

export ROS_IP=(computer's IP)
roslaunch letter_learning_interaction nao_learning.launch

(The camera device may be specified by appending camera_device:=/dev/video1, for example.) (Alternatively, rostopic pub /words_to_write std_msgs/String "use" -1 may be used to send words to write (e.g. 'use') manually, without detecting cards.) Note that console output can be viewed with rosrun rqt_console rqt_console.

(With the shape_learner app deployed on the tablet and word cards with fiducial markers printed (robot's camera will be used))

Install chrony on the computer so that the robot may sync its clock.

On the robot:

sudo /etc/init.d/ntpd stop
sudo ntpdate (computer's IP)
sudo /etc/init.d/ntpd start

ntpdate -q (computer's IP) should then give ~0 offset, indicating that the clocks are synchronised.

export ROS_MASTER_URI=http://(computer's IP):11311
roslaunch nao_bringup nao.launch

On the computer acting as the ROS master:

export ROS_IP=(computer's IP)
roslaunch letter_learning_interaction nao_learning.launch use_sim_nao:=false nao_ip:=(nao's IP) use_external_camera:=false

Note that console output can be viewed with rosrun rqt_console rqt_console.

Tips

  • the following command lets you send random words to Nao for writing (change french accordingly. cut -c1-4 only keeps the first 4 letters. You can change that as well)
watch -n15 'rl -c1 /usr/share/dict/french | cut -c1-4 | xargs rostopic pub -1 words_to_write std_msgs/String'

cowriter_letter_learning's People

Contributors

dhood avatar wafajohal avatar alexis-jacq avatar asselbor avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.