Giter Club home page Giter Club logo

vizzy's Introduction

vizzy

This is Vizzy's "oh so amazing" repository!

This repository contains the necessary tools to interact with Vizzy - both on simulation and real robot usage.

The real robot uses two different middlewares for distinct body parts (YARP for the upperbody and ROS for the mobile base). In simulation there are two options in terms of middleware - one aligned with the real robot (using YARP and ROS) and one aiming simulation experiences (using exclusively ROS).

vizzy grasping red ball

Packages Description

  • vizzy_launch: Contains the launch files to interact with Vizzy (both on simulation and real robot usage). For most users it is the only package they need to directly use.
  • vizzy_description: Contains all of Vizzy's description files (regarding mechanical, kinematic, visual, etc). You can use its launcher called display.launch to check the model with the Rviz graphical tool.
  • vizzy_gazebo: Holds the launch files needed to simulate the robot on the GAZEBO simulator.
  • vizzy_navigation: Contains the launch files for several packages of the ROS navigation stack.
  • vizzy_control: Low-level controllers for Vizzy's simulation.
  • vizzy_sensors: Package holding the Hokuyo filters for better scannings.
  • vizzy_yarp_icub: YARP based controllers, drivers, libraries and modules. Cartesian controllers, gaze controller, ball tracker grasping demo, yoga demo.

External Packages

Environment

Note that for simulation purposes one can ignore all YARP dependencies as explained on the repository description.

  • Operating System
    • Ubuntu 16.04 - Currently supported version for both the real robot and the simulation, Ubuntu 16.04 and ROS Kinetic-Kame.
    • Ubuntu 18.04 - Supported only for simulation, Ubuntu 18.04 and ROS Melodic-Morenia.
  • Middleware
    • ROS - Currently supported version Kinetic for Ubuntu 16.04
    • YARP - we try to keep everything working with the most recent version of YARP
  • Other Dependencies
    • GAZEBO - It needs GAZEBO greather or equal than 9 to run all the simulation plugins and packages.
    • gazebo-yarp-plugins - we try to keep everything working with the most recent version of gazebo-yarp-plugins

At any time you might need to install some more specific dependencies (like some missing ROS packages). Please open an issue in case you can't solve these or other dependencies.

Download and Setup

You should have a catkin workspace on your file system to be able to compile the code. If you don't know how to do this please follow these instructions.

As soon as you have your catkin_workspace configured you are ready to open a terminal and run the following instructions:

git clone https://github.com/vislab-tecnico-lisboa/vizzy_install

Ubuntu 16.04

Run the scripts in the vizzy-install repostory in the following order. You will be asked about the ROS version, which in this case is kinetic, and the location of your catkin workspace (e.g. /home/user/my_catkin_ws)

cd  vizzy_install
./ros_install.sh
source ~/.bashrc
./ros_packages_install.sh
source ~/.bashrc
./install_yarp.sh
source ~/.bashrc

Ubuntu 18.04

Run the scripts in the vizzy-install repostory in the following order. You will be asked about the ROS version, which in this case is melodic, and the location of your catkin workspace (e.g. /home/user/my_catkin_ws)

cd  vizzy_install
./ros_install.sh
source ~/.bashrc
./ros_packages_install.sh
source ~/.bashrc
./install_yarp_1804.sh
source ~/.bashrc

Run

For now let's focus on simulation. Open a terminal:

roslaunch vizzy_launch vizzy_simulation.launch

This configuration starts Vizzy in the ROS-mode, meaning that all the controllers are emulated using ROS. This configuration works with Gazebo 7.x and ROS kinetic (The default install procedure of ROS kinetic) and also with Gazebo 9 and ROS kinetic

The upper body controllers simulated by the gazebo-yarp-plugins can be started by

yarpserver
roslaunch vizzy_launch vizzy_simulation.launch use_yarp:=true

Don't forget you'll need to have yarpserver running when you have the use_yarp argument set as true.

Feel free to play with the arguments as you want or to change the low-level launchers with more functionality.

3D-2D image projection - Using the correct parameters

When using ROS camera interface, be careful to use the correct matrix for point (back-)projection

  • In case of using ROS topic .../image_rect_color the correct projection matrix is P (with zero distorsion parameters)
  • In case of using ROS topic .../image_raw the correct projection matrix is K (with distortion parameters)

AUDIO (ON REAL VIZZY)

First time configuration

To access pulseaudio and all the sound options through the network you need to make it discoverable. For that use:

paprefs

Add the vizzy user to the audio group

sudo usermod -aG audio,pulse,pulse-access `whoami`

In order to access the audio configurations via SSH you need to define the the following environment variable on Vizzy:

export PULSE_SERVER=127.0.0.1

Furthermore, without a X11 session the PulseAudio server will not launch automatically since it normally requires X11. To run PulseAudio in a headless machine you need to run it in daemon mode:

pulseaudio -D

This should be launched automatically, but if the audio is not working you should check if the pulseaudio server is running. If not, execute the previous command and it should work.

To control the audio volume use

alsamixer

Now you can access audio configurations via ssh -X. Useful commands:

gnome-control-center
pavucontrol
pacmd

Documentation

For more details see the following reference:

@inproceedings{moreno2016vizzy,
  title={Vizzy: A humanoid on wheels for assistive robotics},
  author={Moreno, Plinio and Nunes, Ricardo and Figueiredo, Rui and Ferreira, Ricardo and Bernardino, Alexandre and Santos-Victor, Jos{\'e} and Beira, Ricardo and Vargas, Lu{\'\i}s and Arag{\~a}o, Duarte and Arag{\~a}o, Miguel},
  booktitle={Robot 2015: Second Iberian Robotics Conference},
  pages={17--28},
  year={2016},
  organization={Springer}
 }

Issues

Compile error:

CMakeFiles/charging_action_server.dir/src/charging_action_server_node.cpp.o: In function pcl::PPFHashMapSearch::setInputFeatureCloud(boost::shared_ptr<pcl::PointCloud<pcl::PPFSignature> const>): charging_action_server_node.cpp:(.text+0xd0): multiple definition of pcl::PPFHashMapSearch::setInputFeatureCloud(boost::shared_ptr<pcl::PointCloud<pcl::PPFSignature> const>) CMakeFiles/charging_action_server.dir/src/charging_action_server.cpp.o:charging_action_server.cpp:(.text+0x170): first defined here...

The solution is to edit your "ppf_registration.hpp" and inline the functions: setInputFeatureCloud and nearestNeighborSearch:

sudo vim /usr/include/pcl-1.7/pcl/registration/impl/ppf_registration.hpp
inline void
pcl::PPFHashMapSearch::setInputFeatureCloud (PointCloud<PPFSignature>::ConstPtr feature_cloud)
{
inline void
pcl::PPFHashMapSearch::nearestNeighborSearch (float &f1, float &f2, float &f3, float &f4,
                                              std::vector<std::pair<size_t, size_t> > &indices)
{

All kind of issues and contributions will be very welcome. Please get in touch on our issues page when help is needed!

vizzy's People

Contributors

carlos-cardoso avatar joao-avelino avatar joao-borrego avatar joaosaramago avatar mikearagao avatar nigno17 avatar pliniomoreno avatar rafaelnunezcruz avatar richardson0811 avatar ruimgf avatar ruipimentelfigueiredo avatar tpaulino7 avatar vicentepedro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vizzy's Issues

Add realistic navigation algorithm in simulation

The current navigation algorithm in simulation is the "fake_localization", which for initial debugging was very useful, but for testing code for the real robot does not consider the execution times of the amcl in the real robot.

The amcl should be available in simulation, in order to have a more realistic simulation of the navigation algorithm.

Move large map files to Git Large File Storage

Hi @plinioMoreno @ruipimentelfigueiredo @joao-avelino!

I noticed that the whole vizzy repository takes about 200MB at the moment, the majority of which due to the larges files in vizzy_navigation/maps (115MB).

Suggestion: host those large files elsewhere using Git Large File Storage, which looks like a nice possibility for these cases. Cloning/Working with the vizzy repository will be faster, while those files will still be available and maintainable on the "external" LFS reference.

Vizzy manual and documentation

Hi @plinioMoreno (+ @ruipimentelfigueiredo @joao-avelino),

Last summer, we started copying the documentation of Vizzy on the wiki associated to this repository, here:
https://github.com/vislab-tecnico-lisboa/vizzy/wiki

Personally, I think it would be good to put the remaining documentation (i.e., the PDF manual) on the wiki too, in order to (1) have it all in one place, (2) make it easily and quickly updatable in the browser, (3) facilitate the transition of knowledge if some of you ever leave the lab (I hope not! but just in case :) ).

Furthermore, it will still be possible to generate printable PDFs (from GitHub wiki Markdown syntax) by using tools like this one: https://www.npmjs.com/package/markdown-pdf

Simplify robot collision model

The simulated robot is currently checking collisions with the high-polygon count meshes instead of using a simpler blocky model.
This may be why the performance is so low with gazebo.
Essentially means the urdf must be revised.

Regenerate MoveIt! config files

Following the changes made in the gazebo-performance branch, since the urdf has been changed, the MoveIt! package needs to be regenerated before it can work once again.
Preferably we could have two versions: one which uses a simplified model of the hand and another with a more detailed mesh for collision (maybe even capable of grasping experiments).
As of right now, the detailed hand is not yet implemented, but the arm description file has an empty slot where it should be instanced.

[iKinGazeCtrl] Fix "random" spikes during control

The Gaze changes abruptly during some demos when the points are sent in a continuous way.

Possible problems:

  • Target points with strange values.
  • Bridge ROS/YARP, since this happens when controlling from ROS (we need to test with YARP).
  • YARP BufferedPort reads only the last value (this can explain spikes during a sine trajectory).
  • The operating system is not controlling in real time.

/cc @joao-avelino

Error on running vizzy_simulation.launch when the flag use_yarp:=true

After downloading the content of the whole Vizzy repository, when I tried to run, I got the following error

$ roslaunch vizzy_launch vizzy_simulation.launch use_yarp:=true navigation:=true

< a lot of stuff and then the error >
roslaunch.substitution_args.ArgException: use_yarp
while processing /home/pedro/catworkspace/src/vizzy-master/vizzy_moveit_config/launch/moveit.launch:
while processing /home/pedro/catworkspace/src/vizzy-master/vizzy_moveit_config/launch/planning_context.launch:
Invalid tag: Cannot load command parameter [robot_description]: command [/opt/ros/hydro/share/xacro/xacro.py '/home/pedro/catworkspace/src/vizzy-master/vizzy_description/robots/vizzy.urdf.xacro'] returned with code [1].

Param xml is < param command="$(find xacro)/xacro.py '$(find vizzy_description)/robots/vizzy.urdf.xacro'" if="$(arg load_robot_description)" name="$(arg robot_description)"/>

It seems that the file vizzy-master/vizzy_moveit_config/launch/planning_context.launch is incomplete.

Change local planner

Update the local planner from the eband (Elastic Band) local planner to the teb_local_planner (Timed Elastic Band)

Fixation point and ball position (from yarp to ROS)

We should use Miguel Aragão's master thesis work to send vizzy's current fixation point (provided by the Ikin gaze controller) and the ball position (provided by Matteo's ball tracker) to ROS side, for visualization purposes.

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.