Code Monkey home page Code Monkey logo

whiskyching / robotics-course Goto Github PK

View Code? Open in Web Editor NEW

This project forked from marctoussaint/robotics-course

0.0 0.0 0.0 6.68 MB

Interfaces used for the Robotics Practical Course. Using equivalent C++ or python interfaces, and direct execution on a baxter or in simulation (linking bullet or physx).

Home Page: https://marctoussaint.github.io/robotics-course/

Makefile 1.60% C++ 31.54% Shell 0.40% Jupyter Notebook 51.13% Python 9.23% GAP 5.19% CMake 0.91%

robotics-course's Introduction

MLR robotics course & practical robotics course

This repo is based on RAI code, including its python bindings. See https://github.com/MarcToussaint/rai for a README of the RAI code.

Table of Contents

Quick Start

The repo is now used for three lecture formats: the robotics lab course in simulation, the robotics lab course in real, and the robotics lectures. Please follow the respective sections.

Documentation

Setup for Robotics Lab Course in Simulation

This assumes a standard Ubuntu 18.04 or 20.04 machine.

  • The following assumes $HOME/git as your git path, and $HOME/opt to install 3rd-party libs -- please stick to this (no system-wide installs)
  • Clone and compile our robotics-course code:
mkdir -p $HOME/git
cd $HOME/git
git clone --recursive https://github.com/MarcToussaint/robotics-course.git
cd robotics-course

make -j1 installUbuntuAll  # calls sudo apt-get install; you can always interrupt
# If this fails, please try `make -j1 printUbuntuAll` to print all packages and install manually

mkdir build
cd build
cmake ..
#cmake -DPYBIND11_PYTHON_VERSION=3.6 .. #if you have multiple python version installed!
make -j $(command nproc)
  • If you use python, install jupyter and some python packages, and run tests:
# export PATH="${PATH}:$HOME/.local/bin"   #if not done already
pip3 install --user jupyter nbconvert matplotlib opencv-python
jupyter-notebook tutorials/1-basics.ipynb
jupyter-notebook course3-Simulation
  • If you use C++, compile and run the tests:
cd course3-Simulation/01-test
make
./x.exe
#and the same for all other course3-Simulation/... tests
  • Alternative non-cmake build system (not recommended, but allows to configure config.mk):
cd $HOME/git/robotics-course
rm -Rf build
make -j $(command nproc)
ln -s rai/lib build
  • When pulling updates for the repo, don't forget to also update the submodules:
git pull
git submodule update
  • We tested this (sometimes) in docker. See here for a collection of docker setups. In mini20 the above install was tested. full18 includes a pre-compiled PhysX.

  • When enabling Physx (as alternative to bullet), first install PhysX from source as described here, then add Physx lib path to LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/opt/physx3.4/lib    # add path (temporary)
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/opt/physx3.4/lib' >> ~/.bashrc     # or add permenantly in bashrc

Setup for Robotics Lecture Exercises

This assumes a standard Ubuntu 18.04 machine.

In this course, check that in 'config.mk' we have (disabling lots of stuff)

ROS=0
OPENCV=0
PHYSX=0
BULLET=0
CERES = 0
NLOPT = 0
git clone --recursive https://github.com/MarcToussaint/robotics-course.git
cd robotics-course

make -j1 installUbuntuAll  # calls sudo apt-get install; you can always interrupt
make -j $(command nproc)   # builds libs and tests
ln -s rai/lib build

pip3 install --user jupyter nbconvert matplotlib

jupyter-notebook tutorials/1-basics.ipynb 

After loading the pr2 and the kitchen (running first 3 cells in the notebook), the simulator window should look similar to: Alt text

Setup for the Robotics Lab Course with the real Baxter Robot Baxter

pip install wstools catkin_pkg --user
source /opt/ros/kinetic/setup.bash
  • The following assumes all git repos are cloned into $HOME/git
  • clone
mkdir -p ~/git
cd ~/git
git clone --recursive https://github.com/MarcToussaint/robotics-course.git
cd robotics-course
  • change ROS = 0 to #ROS = 0 in config.mk
  • install also baxter sources using
cd course1-Lectures/external
./installBaxterSources.sh
  • compile
make -j1 installUbuntuAll  # calls sudo apt-get install; you can always interrupt
make -j4                   # builds libs and tests
  • if using c++, install qtcreator as described here
  • when in the lab, connect to the wifi mlr-robolab (password: mlr-robolab)
  • call source bin/baxterwlansetup.sh from ~/git/robotics-course
  • source ROS and the baxter sources
source /opt/ros/kinetic/setup.bash
source external/devel/setup.bash
  • IF YOU'RE THE ONLY ONE USING BAXTER, turn on baxter and call bin/baxterStart.sh
  • Try rostopic list
  • Try the cpp example
cd course2-Baxter/01-baxterMini
make
./x.exe -useRos 1
  • Try the python example
cd course2-Baxter/01-baxterMini
jupyter-notebook motion.ipynb 
  • Before turning off baxter, run rosrun baxter_tools tuck_arms.py -t

Further Documentation & Installation Pointers

Installation

sudo apt-get install python3 python3-dev python3-numpy python3-pip python3-distutils
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1

rai code

rai examples

Tutorials

  1. Basics: Configurations, Features & Jacobians
  2. Features: Learn about the language to define and query features and their Jacobians. Including querying collision features (whether and which objects are in collision).

More details on handling baxter

Booting

On the back of the robot near the pedestal base, there is a power button. Push it and wait for the machine to finish booting.

Communicating with Baxter

Connect to the lab mlr-robolab WLAN (password: mlr-robolab)

Baxter runs with ROS, and you'll need to set your environment variables to enable ROS communication. The easiest way to do this is to connect to run one of following scripts in Terminal from the mlr folder:

source bin/baxterwlansetup.sh

Start-up

Call the start-up script, which enables baxter, untucks the arms, turns off the ultrasonics (they click very loudly in any videos), and calibrates the grippers.

bin/baxterStart.sh

Kill /end_effector_publisher node which corrupts the /robot/joint_states. This only has to be run once when the robot is turned on.

rosnode kill /end_effector_publisher

Using vacuum gripper

Switch on the air pump. Pull and slowly turn the black valve to make the air pressure around 60-100psi (preferably 70 psi, the pressure will increase slowly so turn the valve slowly as it increases) Once the pressure is set the pump will automatically keep its pressure. Turn off air pump when finished using.

The gripper can be accessed same as the electric gripper.

Accessing camera

  • To launch the ASUS camera, install openni2. Change kinetic to a different ROS version in the command if you're not using Kinetic.
sudo apt-get install ros-kinetic-openni2-launch

Plug in the camera USB and run the following command.

roslaunch openni2_launch openni2.launch depth_registration:="true" hw_registered_processing:="true" color_depth_synchronization:="true" auto_exposure:="false" auto_white_balance:="false"
  • To launch the Kinect camera, install freenect. Change kinetic to a different ROS version in the command if you're not using Kinetic.
sudo apt-get install ros-kinetic-freenect-stack

Plug in the camera USB and run the following command.

roslaunch freenect_launch freenect.launch camera:="kinect"

Shutdown

Always tuck the arms before shutting down, to keep the spring wear to a minimum.

bin/baxterTuck.sh

or

rosrun baxter_tools tuck_arms.py -t

Then press the power button once to turn the robot off.

Alternatively, you can ssh in to the robot (password: rethink) and run:

ssh [email protected]
sudo shutdown -h now

Troubles

  • One some machines, OpenGL with the glfw seems broke. You'll have to change back to an older version which uses freeglut. For this, in rai/Gui/Makefile switch the 0/1 for FREEGLUT and GLFW

  • Beware ros node names!! (Maybe it is good if everybody uses the same rosNodeName? That way they block each other? Behavior undefined!)

Internals

Within the submodules, to set ssh access, call:

git remote set-url origin [email protected]:MarcToussaint/rai.git
git remote set-url origin [email protected]:MarcToussaint/rai-robotModels.git

robotics-course's People

Contributors

marctoussaint avatar yoojinoh avatar jung-su 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.