GithubHelp home page GithubHelp logo

base's Introduction

JdeRobot

Current Release Version

THIS REPOSITORY HAS BEEN ARCHIVED AND IS DEPRECATED. Since 2020 we have adopted ROS as our main framework for developing Robotics, AI and ComputerVision applications and tools.

Introduction

JdeRobot is a software development suite for robotics, home-automation and computer vision applications. These domains include sensors for instance, cameras, actuators, and intelligent software in between. It has been designed to help in programming with such intelligent softwares. It is mainly written in C++ language and provides a distributed component-based programming environment where the application program is made up of a collection of several concurrent asynchronous components. Each component may run in different computers and they are connected using Ice communication middleware. Components may be written in C++, python, Java... and all of them interoperate through explicit Ice interfaces.

JdeRobot simplifies the access to hardware devices from the control program. Getting sensor measurements is as simple as calling a local function, and ordering motor commands as easy as calling another local function. The platform attaches those calls to the remote invocation on the components connected to the sensor or the actuator devices. They can be connected to real sensors and actuators or simulated ones, both locally or remotely using the network. Those functions build the API for the Hardware Abstraction Layer. The robotic application get the sensor readings and order the actuator commands using it to unfold its behavior. Several driver components have been developed to support different physical sensors, actuators and simulators. The drivers are used as components installed at will depending on your configuration. They are included in the official release. Currently supported robots and devices:

  • RGBD sensors: Kinect from Microsoft, Asus Xtion
  • Pioneer robot from MobileRobotics Inc.
  • Kobuki robot (TurtleBot) from Yujin Robot
  • Nao humanoid from Aldebaran
  • ArDrone quadrotor from Parrot
  • Firewire cameras, USB cameras, video files (mpeg, avi...), IP cameras (like Axis)
  • Pantilt unit PTU-D46 from Directed Perception Inc.
  • Laser Scanners: LMS from SICK and URG from Hokuyo
  • EVI PTZ camera from Sony
  • Gazebo and Stage simulators
  • Wiimote
  • X10 home automation devices

JdeRobot includes several robot programming tools and libraries. First, viewers and teleoperators for several robots, its sensors and motors. Second, a camera calibration component and a tuning tool for color filters. Third, VisualStates tool for programming robot behavior using hierarchical finite state machines. It includes many sample components using OpenCV, PCL, OpenGL, etc.. In addition, it also provides a library to develop fuzzy controllers, a library for projective geometry and some computer vision processing.

Each component may have its own independent Graphical User Interface or none at all. Currently, GTK and Qt libraries are supported, and several examples of OpenGL for 3D graphics with both libraries are included.

JdeRobot is open-source software, licensed as GPL and LGPL. It also uses third-party softwares like Gazebo simulator, OpenGL, GTK, Qt, Player, Stage, Gazebo, GSL, OpenCV, PCL, Eigen, Ogre.

JdeRobot is a project developed by Robotics Group of Universidad Rey Juan Carlos (Madrid, Spain).

Installation

Table of Contents

  • Add the latest ROS sources:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  • Add the latest Gazebo sources:
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 67170598AF249743
  • Add the latest zeroc-ice sources:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv B6391CB2CFBA643D
sudo apt-add-repository "deb http://zeroc.com/download/Ice/3.7/ubuntu18.04 stable main"
  • Add JdeRobot repository (using dedicated file /etc/apt/sources.list.d/jderobot.list):
sudo sh -c 'echo "deb [arch=amd64] http://wiki.jderobot.org/apt `lsb_release -cs` main" > /etc/apt/sources.list.d/jderobot.list''
  • Get and add the public key from the JdeRobot repository
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 24E521A4
  • Update the repositories
sudo apt update
  • Install JdeRobot:
sudo apt install jderobot
sudo apt install jderobot-assets
  • After installing the package, you can close the terminal and reopen it to source the environment variables, OR just type:
source ~/.bashrc
  • If you already have a previous version of the packages installed, you only have to do:
sudo apt update && sudo apt upgrade

If you want to run JdeRobot in MS-Windows, MacOS or other Linux distributions you can use Docker containers. We have created a Docker image with current JdeRobot Release and all the necessary components to be used with JdeRobot-Academy. To download it, use:

docker pull jderobot/jderobot

For more information follow this link

Downloading the source code from the GitHub is strongly NOT RECOMMENDED for new users unless you know what you are doing.

You have two options here:

  1. Install all the dependencies from a binary package
  2. Install all the dependencies manually (NOT RECOMMENDED)

For the first one, you only have to type the following:

sudo apt install jderobot-deps-dev

and skip to the next section of this README.

For the second one... keep reading

JdeRobot has different external dependencies to build its structure. There are two types of dependencies: necessary dependencies and other dependencies. The firsts are needed to compile and install the basics of JdeRobot, that is, all its libraries and interfaces that are needed for the components or to develop components that use JdeRobot. The seconds are needed just for some components, but are not really necessary unless you want to use that components. For instance, the component gazeboserver uses Gazebo, a 3D robot simulator, so to use this component you may install Gazebo first.

First of all repeat the step Getting environment ready

Some libraries are required to compile, link or run JdeRobot. Just type the following commands:

  • Basic libraries:

sudo apt install build-essential libtool cmake g++ gcc git make

  • OpenGL libraries:

sudo apt install freeglut3 freeglut3-dev libgl1-mesa-dev libglu1-mesa

  • GTK2 libraries:
sudo apt install libgtk2.0-0 libgtk2.0-bin libgtk2.0-cil libgtk2.0-common libgtk2.0-dev libgtkgl2.0-1
sudo apt install libgtkgl2.0-dev libgtkglext1 libgtkglext1-dev libglademm-2.4-dev libgtkmm-2.4-dev 
sudo apt install libgnomecanvas2-0 libgnomecanvas2-dev  libgtkglext1-doc libgnomecanvasmm-2.6-dev
sudo apt install libgnomecanvasmm-2.6-1v5 libgtkglextmm-x11-1.2-0v5 libgtkglextmm-x11-1.2-dev
  • Gtk3 libraries:

sudo apt install libgoocanvasmm-2.0-6 libgoocanvasmm-2.0-dev

  • GSL libraries:

sudo apt install libgsl23 gsl-bin libgsl-dev

  • LibXML:

sudo apt install libxml++2.6-2v5 libxml++2.6-dev libtinyxml-dev

  • Eigen:

sudo apt install libeigen3-dev

  • Fireware:

sudo apt install libdc1394-22 libdc1394-22-dev

  • USB:

sudo apt install libusb-1.0-0 libusb-1.0-0-dev

  • CWIID:

sudo apt install libcwiid-dev

  • Python components:

sudo apt install python-matplotlib python-pyqt5 python-pip python-numpy python-pyqt5.qtsvg

  • Qfi

It can be compiled and installed from source: https://github.com/JdeRobot/ThirdParty/tree/master/qflightinstruments

  • Qt 5

sudo apt install qtbase5-dev libqt5script5 libqt5svg5-dev

  • Boost

sudo apt install libboost-system-dev libboost-filesystem-dev

  • ROS
sudo apt install ros-melodic-roscpp ros-melodic-std-msgs ros-melodic-cv-bridge ros-melodic-image-transport ros-melodic-roscpp-core ros-melodic-rospy ros-melodic-nav-msgs ros-melodic-geometry-msgs ros-melodic-mavros ros-melodic-gazebo-plugins ros-melodic-kobuki-msgs

Once all ros packages are installed, install the script that tunes the environment variables ROS in your .bashrc configuration file, and run it for the current shell:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc 
source ~/.bashrc 
  • Google glog (logging)

sudo apt install libgoogle-glog-dev

  • GStreamer

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

  • ICE
sudo apt install libdb5.3-dev libdb5.3++-dev libssl-dev libbz2-dev libmcpp-dev \
            libzeroc-ice3.7 libzeroc-icestorm3.7 zeroc-ice-slice libzeroc-ice-dev

compile ice:

git clone -b 3.7 https://github.com/zeroc-ice/ice.git 
cd ice/cpp
make CPP11=yes OPTIMIZE=yes
make install

Configure ICE for Python with pip

sudo pip2 install --upgrade pip
sudo pip2 install zeroc-ice==3.7.2
  • OpenNI 2

sudo apt-get install libopenni2-dev libopenni-dev

  • Point Cloud Library

sudo apt-get install libpcl-dev

  • OpenCV

sudo apt-get install libopencv-dev

  • NodeJS

sudo apt-get install nodejs

  • Kobuki robot libraries

You can find the source code in our git repository (http://github.com/jderobot/thirdparty.git)

  • SDK Parrot for ArDrone

If you want to install it manually from our third party repository, you only have to:

  1. Create a folder to compile the code mkdir ardronelib-build && cd ardronelib-build

  2. Download the installer, a CMakeLists.txt file

wget https://raw.githubusercontent.com/RoboticsURJC/JdeRobot-ThirdParty/master/ardronelib/CMakeLists.txt
wget https://raw.githubusercontent.com/RoboticsURJC/JdeRobot-ThirdParty/master/ardronelib/ffmpeg-0.8.pc.in
wget https://raw.githubusercontent.com/RoboticsURJC/JdeRobot-ThirdParty/master/ardronelib/ardronelib.pc.in
  1. Compile and install as usual:
cmake .
make
sudo make install

After installing all the dependencies you can compile the project, you can clone this repo and build it doing the following:

  • Download the source code from git:
git clone http://github.com/RoboticsURJC/JdeRobot.git
cd JdeRobot/
  • Check system and dependencies
mkdir build && cd build
cmake ..
  • Compile
make
  • Install
sudo make install

How To Contribute

To see the collaborate workflow and coding style of JdeRobot community, please refer to the wiki page.

Copyright and license

Copyright 2015 - JdeRobot Developers

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

=======

base's People

Contributors

abhinav275 avatar ahcorde avatar aitormf avatar almartinflorido avatar andresjhe avatar bmenendez avatar cawadall avatar chanfr avatar crodriguezgarci avatar danielys avatar dattadebrup avatar diegojnb avatar fgonzalezr1998 avatar fqez avatar hustcalm avatar igarag avatar jmplaza avatar kibotics avatar lr-morales avatar mmoya avatar ojgarciab avatar okanasik avatar pmvera avatar reysam93 avatar rocapal avatar rperezgonz avatar scarrionv avatar shady-cs15 avatar varhub avatar vmartinezf avatar

Stargazers

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

Watchers

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

base's Issues

About the installation of python components

Hi,

I have some question about the python components:
1/ I found a cmake function to find depedencies for python components ( 1 ), my idea is to add the function to JdeRobot repository, is correct create a CMakeLists.txt with the function code under Deps/findPythonModules directory for that another dependencies can use this function?

2/ Now the installation process copy de executables, libraries, configurations files, ... to different installation directories. In python we don't have executables only .py files and other resource how .png, .ui files,... I think that we can create the directory /usr/local/share/jderobot/python to copy the python components and after we can create symbolic links from the principal .py of the component to /usr/local/bin. What do you think?

regards

Warning about sscanf string format

There is a warning while compile that is about sscanf string format:

Scanning dependencies of target rgbdManualCalibrator
[ 91%] Building CXX object src/stable/components/rgbdManualCalibrator/CMakeFiles/rgbdManualCalibrator.dir/controller.cpp.o
[ 92%] Building CXX object src/stable/components/rgbdManualCalibrator/CMakeFiles/rgbdManualCalibrator.dir/drawarea.cpp.o
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/components/rgbdManualCalibrator/drawarea.cpp: In member function ‘int rgbdManualCalibrator::DrawArea::load_line(FILE*)’:
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/components/rgbdManualCalibrator/drawarea.cpp:520:162: warning: format ‘%s’ expects a matching ‘char*’ argument [-Wformat=]
   number=sscanf(buffer_file,"%s %s %s %s %s %s %s %s %s %s %s %s",word1,words[0],words[1],words[2],words[3],words[4],words[5],words[6],words[7],words[8],words[9]);
                                                                                                                                                                  ^
[ 92%] Building CXX object src/stable/components/rgbdManualCalibrator/CMakeFiles/rgbdManualCalibrator.dir/rgbdManualCalibrator.cpp.o
[ 93%] Building CXX object src/stable/components/rgbdManualCalibrator/CMakeFiles/rgbdManualCalibrator.dir/view.cpp.o
Linking CXX executable rgbdManualCalibrator
[ 93%] Built target rgbdManualCalibrator
Scanning dependencies of target rgbdViewer
[ 93%] Building CXX object src/stable/components/rgbdViewer/CMakeFiles/rgbdViewer.dir/rgbdViewer.cpp.o
[ 93%] Building CXX object src/stable/components/rgbdViewer/CMakeFiles/rgbdViewer.dir/drawarea.cpp.o
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/components/rgbdViewer/drawarea.cpp: In member function ‘int rgbdViewer::DrawArea::load_line(FILE*)’:
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/components/rgbdViewer/drawarea.cpp:524:162: warning: format ‘%s’ expects a matching ‘char*’ argument [-Wformat=]
   number=sscanf(buffer_file,"%s %s %s %s %s %s %s %s %s %s %s %s",word1,words[0],words[1],words[2],words[3],words[4],words[5],words[6],words[7],words[8],words[9]);
                                                                                                                                                                  ^
[ 94%] Building CXX object src/stable/components/rgbdViewer/CMakeFiles/rgbdViewer.dir/rgbdViewergui.cpp.o
[ 94%] Building CXX object src/stable/components/rgbdViewer/CMakeFiles/rgbdViewer.dir/myprogeo.cpp.o

I do not know why this issue has not been fixed so far. It makes me think that the reason is to avoid another problem.

If this code was wrote this way to avoid some strange behavior when the line parsed has more data than expected then I think that is better to do this in files drawarea.cpp from rgbdViewer and rgbdManualCalibrator components:

@@ -477,7 +477,7 @@
 DrawArea::load_line(FILE *myfile)
 {
    const int limit = 256;  
-   char word1[limit],words[10][limit];
+   char word1[limit],words[11][limit];
    int i=0;
    char buffer_file[limit];  
    int number;
@@ -517,7 +517,7 @@
        return 0; 
    /* return EOF; empty line*/
    else {
-       number=sscanf(buffer_file,"%s %s %s %s %s %s %s %s %s %s %s %s",word1,words[0],words[1],words[2],words[3],words[4],words[5],words[6],words[7],words[8],words[9]);
+       number=sscanf(buffer_file,"%s %s %s %s %s %s %s %s %s %s %s %s",word1,words[0],words[1],words[2],words[3],words[4],words[5],words[6],words[7],words[8],words[9],words[10]);
        if (strcmp(word1,"worldline")==0){
            if (number == 9){
                if (numlines <MAX_LINES){

So there is a extra space for data (if it exists) or do this if this is not the problem:

@@ -517,7 +517,7 @@
        return 0; 
    /* return EOF; empty line*/
    else {
-       number=sscanf(buffer_file,"%s %s %s %s %s %s %s %s %s %s %s %s",word1,words[0],words[1],words[2],words[3],words[4],words[5],words[6],words[7],words[8],words[9]);
+       number=sscanf(buffer_file,"%s %s %s %s %s %s %s %s %s %s %s",word1,words[0],words[1],words[2],words[3],words[4],words[5],words[6],words[7],words[8],words[9]);
        if (strcmp(word1,"worldline")==0){
            if (number == 9){
                if (numlines <MAX_LINES){

To get the exact number of string as parameters.

Could someone test this patches to decide between one solution or another?

Thanks.

Properly implement the C interfaces in progeo

When compiling code there is some warnings that have to be avoided:

Scanning dependencies of target progeo
[ 29%] Building C object src/stable/libs/progeo/CMakeFiles/progeo.dir/progeo.c.o
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:581:6: warning: conflicting types for ‘update_camera_matrix’ [enabled by default]
 void update_camera_matrix(TPinHoleCamera *camera)
      ^
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:345:2: note: previous implicit declaration of ‘update_camera_matrix’ was here
  update_camera_matrix(&camera);
  ^
Linking C static library libprogeo.a
[ 29%] Built target progeo
Scanning dependencies of target progeoshare
[ 29%] Building C object src/stable/libs/progeo/CMakeFiles/progeoshare.dir/progeo.c.o
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:581:6: warning: conflicting types for ‘update_camera_matrix’ [enabled by default]
 void update_camera_matrix(TPinHoleCamera *camera)
      ^
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:345:2: note: previous implicit declaration of ‘update_camera_matrix’ was here
  update_camera_matrix(&camera);
  ^
Linking C shared library libprogeo.so

This problem is due to lack of definition of the functions in C compiler at the header file:

#ifdef __cplusplus
extern "C" {
    TPinHoleCamera xmlReader(TPinHoleCamera* camera, const char *filename);
    void xmlWriter(TPinHoleCamera camera, const char *filename);
    void update_camera_matrix(TPinHoleCamera *camera);
    void reverse_update_camera_matrix(TPinHoleCamera *camera);
    void update_stereocamera_matrix(TPinHoleStereocamera *stereo);
    int project(HPoint3D in, HPoint2D *out, TPinHoleCamera camera);
    int backproject(HPoint3D *out, HPoint2D in, TPinHoleCamera camera);
    int displayline(HPoint2D p1, HPoint2D p2, HPoint2D *a, HPoint2D *b, TPinHoleCamera camera);
    void display_camerainfo(TPinHoleCamera camera);
}
#endif

It could be fixed creating a "else" case:

#ifdef __cplusplus
extern "C" {
    TPinHoleCamera xmlReader(TPinHoleCamera* camera, const char *filename);
    void xmlWriter(TPinHoleCamera camera, const char *filename);
    void update_camera_matrix(TPinHoleCamera *camera);
    void reverse_update_camera_matrix(TPinHoleCamera *camera);
    void update_stereocamera_matrix(TPinHoleStereocamera *stereo);
    int project(HPoint3D in, HPoint2D *out, TPinHoleCamera camera);
    int backproject(HPoint3D *out, HPoint2D in, TPinHoleCamera camera);
    int displayline(HPoint2D p1, HPoint2D p2, HPoint2D *a, HPoint2D *b, TPinHoleCamera camera);
    void display_camerainfo(TPinHoleCamera camera);
}
#else
TPinHoleCamera xmlReader(TPinHoleCamera* camera, const char *filename);
void xmlWriter(TPinHoleCamera camera, const char *filename);
void update_camera_matrix(TPinHoleCamera *camera);
void reverse_update_camera_matrix(TPinHoleCamera *camera);
void update_stereocamera_matrix(TPinHoleStereocamera *stereo);
int project(HPoint3D in, HPoint2D *out, TPinHoleCamera camera);
int backproject(HPoint3D *out, HPoint2D in, TPinHoleCamera camera);
int displayline(HPoint2D p1, HPoint2D p2, HPoint2D *a, HPoint2D *b, TPinHoleCamera camera);
void display_camerainfo(TPinHoleCamera camera);
#endif

But this change will fire a critical compile error:

[ 29%] Built target JderobotInterfaces
Scanning dependencies of target progeo
[ 29%] Building C object src/stable/libs/progeo/CMakeFiles/progeo.dir/progeo.c.o
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c: In function ‘reverse_update_camera_matrix’:
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:536:2: error: incompatible type for argument 3 of ‘backproject’
  backproject(&out, in, camera);
  ^
In file included from /home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:23:0:
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.h:105:5: note: expected ‘TPinHoleCamera’ but argument is of type ‘struct TPinHoleCamera *’
 int backproject(HPoint3D *out, HPoint2D in, TPinHoleCamera camera);
     ^
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:561:2: error: incompatible type for argument 3 of ‘backproject’
  backproject(&p3, p2_rt_complete, camera);
  ^
In file included from /home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.c:23:0:
/home/redstar/Documentos/jderobot/temp/JdeRobot/src/stable/libs/progeo/progeo.h:105:5: note: expected ‘TPinHoleCamera’ but argument is of type ‘struct TPinHoleCamera *’
 int backproject(HPoint3D *out, HPoint2D in, TPinHoleCamera camera);
     ^
make[2]: *** [src/stable/libs/progeo/CMakeFiles/progeo.dir/progeo.c.o] Error 1
make[1]: *** [src/stable/libs/progeo/CMakeFiles/progeo.dir/all] Error 2
make: *** [all] Error 2

So we need to change proceo.c too:

@@ -533,7 +533,7 @@
    in.y = 0;
    in.h = 0;

-   backproject(&out, in, camera);
+   backproject(&out, in, *camera);

    camera->foa.X = out.X;
    camera->foa.Y = out.Y;
@@ -558,7 +558,7 @@
    p2_rt_complete.y = 1;
    p2_rt_complete.h = 0;

-   backproject(&p3, p2_rt_complete, camera);
+   backproject(&p3, p2_rt_complete, *camera);

    TPinHoleCamera cameraAux; 
    cameraAux = *camera;

But I don't want to upload this fix because I don't use progeo.

Please, could someone that use progeo test my patch?

Thanks!

Compressed images in camera interface

Currently, the images are sent through camera interface using always a static size (320x240x3). It's interesting give the option to send the data (RGB or depth images) compressed.

For this, camera interface has to change and every components that use this interface.

Refactor all the source code comments to English

I also saw there is a discussion in the mailing list about language. As I'm reading the source code of JdeRobot, I find there are some comments maybe in Spanish which can be confused to other developers.

There are a few lines of comments in the root CMakeLists.txt and I don't for sure if there are any in other source code files either.

Though this is not a big issue, using English might make other developers feel easier to get onboard:-)

Gazebo crashes with the quadrotor plugin

Hi,

I compiled and installed Jderobot in a clean Ubuntu 14.04 x86 virtual machine, the compile process not show any error but when I execute gazebo with the gato_raton_1.world gazebo crashes. The gazebo server log show the next:

(1431684590 762793077) [Err] [Plugin.hh:153] Failed to load plugin /usr/local/share/jderobot/gazebo/plugins/quadrotor/libquadrotorplugin.so: /usr/local/share/jderobot/gazebo/plugins/quadrotor/libquadrotorplugin.so: undefined symbol: _ZN11colorspaces9ImageRGB811FORMAT_RGB8E

To fix it I added the library colorspacesmm to CMakeLists.txt .

regards

default

The installation process not copy the quadrotor and refereeplugin to the installation directory

Hi,

I compiled and installed JdeRobot from sources, the installation process not copy the quadrotor and refereeplugin plugins to the installation directory (/usr/local/share/jderobot/gazebo/plugins). To solve it I rewrote the double quotes in CMakeLists.txt of gazeboserver component for these plugins. The line to modify is the next:

SET(PLUGINS "kinect" "nao" "pioneer" "quadrotor" "refereeplugin")

In my next pull request I'll upload the changes.

regards

Add md5sum to image interface

Add md5sum to image interface. The image server can add the md5sum of the image transmitted and the client can check if everything goes well after the send.

Multicamera calibration component

A new component JdeRobot is needed to calibrate many cameras at the same time. This component will calculate the intrinsic parameters at the same time as the extrinsic from a known pattern (chessboard), giving also the Rotation and Translation matrix between each pair of cameras.

Referee refactoring

Hi!

Since there's a plugin for Gazebo in charge of measuring distances and a python program that ask for those and creates a graph, it would be a great idea to fuse both in one.

That's the purpose of this issue. As soon as I finish I will pull request so we can add it to our components.

Support for kinect2 device (K4W2)

A server component is needed to serve the depth and color information of this new device. This information will be given using the standard cameras interface.

HowTo create a chroot environment on wiki

Hi,
I've just added a new page on the wiki describing the process to make a chroot environment in Debian/Ubuntu distributions. It's very simple, and you can find it here
Any change is welcome!

Regards.

Avoid add library/component directories without CMakeLists.txt file

When created an empty directory, for testing purposes or because it could not be compiled with cmake because (for example) is a android project, cmake will throw this error:

CMake Error at src/stable/libs_or_components/CMakeLists.txt:xx (ADD_SUBDIRECTORY):
  The source directory

    /local_repository/JdeRobot/src/stable/libs_or_components/dir_without_cmakefiles

  does not contain a CMakeLists.txt file.

opencvdemo component runtime error

While running the opencvdemo component I get the following errors -
"
Loading glade
Network.cpp:2169: Ice::ConnectionRefusedException:
connection refused: Connection refused
"

Please help me cope with the issue.

Regards,
Abhishek

Include a block get method into parallelce

At the moment parallelce returns directly the last copy of the data that parallelce has on the pool. If your applications asks for new data in a short period of time, parallelce won't give you new data and can be the same data to the last request.

That is why we need to include a new request method in order to avoid getting the same data in some consecutive requests.

Generate java interfaces at same time that cpp and python

I wish to include the java interfaces generation in cmake chain.

  • Set INTERFACES_JAVA_DIR in root CMakeLists.txt.
  • Set SLICE2JAVA_COMMAND in slice/jderobot CMakeLists.txt.
  • Add execute_process for Java in slice/jderobot CMakeLists.txt.

ArDroneServer compilation is broken and its integration in git

ArDroneServer, the driver for the Parrot ArDrone quadrotor, is broken since the last changes in camera ICE interface.

In addition, it doesn't compile in the MK802 microprocessor and that is required to have two computers (the original Parrot one and an additional MK802) on board the quadrotor. This would open the door to more local image processing and new autonomous applications.

Generic infrastructure

Issue to pool all the minor changes that affect to infrastructure and JdeRobot compilation.

Reformat opencvdemo component

I would like to fix, as an exercise/practice, this:

Syntax and language refactoring:

  • Correct syntax as proposed (Google C++ Style Guide).
    • Convert real tabs in 2 space characters.
    • Variable names: lower case, only underscore as separator and be descriptive.
    • Class members: add trailing slash.
    • Function names: should start with a capital letter and have a capital letter for each new word without underscores.
  • Fixing OpenCV code:
    • Remove using namespace cv; (it is a bad practice).
    • Add cv:: prefix to all OpenCV functions/clases.
    • Fix old naming conventions (C styled OpenCV, as cvLine -> cv::line).
    • Remove all instance destructors managed by OpenCV's automatic memory management.
  • Remove unused dependencies in cmake.

Comments and learning value of them:

  • Delete old comments holding unused code.
  • Add new comments to aid new developers:
    • Descriptive comments.
    • References to OpenCV manual.

New enhancements:

  • Fixing glade "IDs".
  • Fix convolution code.
  • Let glade XML set initial visible state, and not viewer constructor.
  • Remove unused code.
  • Fix filter order to let Gaussian Blur do it's job before Color Filter, Pyramid before all others, ect.
  • Reorder code for readability and/or optimize tasks as show/hide glade blocks.
  • Inmunize code against common network errors:
    • Initial connection for proxy creation.
    • Connection issues like timeout (remote server offline) and connection refused (remote server online but remote ice endpoint not running).
  • Add support for more image formats:
    • Support for GRAY8 (grey scale).
    • Support for NV21 (AndroidCameraServer).
    • Refactor image conversion to RGB8 using colorspaces.
  • Add Doxygen support for automatic documentation generation.

Best regards.

Merge AndroidCameraServer into stable components

Srinivas Rao (@gsssrao) and me (@ojgarciab) are working hard to make a full featured android component with lots of improvements since first (February 2013) version.

We will follow up on this issue until the process is completed.

There is some task to achieve before merging the project:

  • Integrate android project in cmake chain to generate paths to ICE jar libraries and jderobot interfaces automatically.
  • Implement and test new Image interface and image compression.
  • Reorder directory and files in AndroidCameraServer to allow merging.
  • Finally: merge repositories.

Add backward compatibility in Image interface using addition

As commented in developer list, I'll implement backward compatibility using addition:
http://gsyc.escet.urjc.es/pipermail/jde-developers/2015-April/003755.html

Right now there is some components broken because this issue:

  • kinect2server
  • gazeboserver
  • naoserver

I'll rename getImageData(string format) to getImageDataWithFormat(string format).

The roadmap will be:

  • Refactor getImageData(string format) to getImageDataWithFormat(string format):
    • cameraserver
    • cameraview
    • recorder
    • replayer
    • naoviewer
    • teleoperator
    • followBall
    • colorTuner
    • basic_component_qt
    • openniServer
    • others (I'll check them all)
  • Enabling backward compatibility to reference client and server:
    • cameraserver
    • cameraview
    • parallelIce

When the issue is assigned I'll start working with it.

PS: Please, write a coment If another name (instead getImageDataWithFormat) is suggested.

JdeRobot packages for drone contest.

Hi,

I'm creating this issue to let you give me feedback about the debian packages that I made for the next drone contest. Please leave here all the problems you face about the installation of JdeRobot from packages.
You can see the instructions of the installation here

Regards!

Installation of quadrotor plugins

Hi,

there is a problem with the installation of the new quadrotor plugins, they are not installed in its own directory after typing sudo make install . In fact they are not installed anywhere.
Maybe those installation directives are missing in the CMakeLists file of the gazeboserver component.

camera_dump compilation fails.

Hi!

I'm trying to compile the gazebo plugins in ~/jderobot/src/stable/components/gazeboserver/plugins/$plugin/
but when it comes to compile camera_dump.cc (both nao and pioneer plugins) the following error appears:

[ 68%] Building CXX object src/stable/components/gazeboserver/plugins/nao/CMakeFiles/camera_nao.dir/camera_dump.cc.o
/home/fran/JdeRobot/src/stable/components/gazeboserver/plugins/nao/camera_dump.cc: In function ‘void* myMain(void*)’:
/home/fran/JdeRobot/src/stable/components/gazeboserver/plugins/nao/camera_dump.cc:269:81: error: cannot allocate an object of abstract type ‘CameraI’
/home/fran/JdeRobot/src/stable/components/gazeboserver/plugins/nao/camera_dump.cc:87:7: note:   because the following virtual functions are pure within ‘CameraI’:
/home/fran/JdeRobot/src/stable/interfaces/cpp/jderobot/image.h:1364:37: note:   virtual jderobot::ImageFormat jderobot::ImageProvider::getImageFormat(const Ice::Current&)
/home/fran/JdeRobot/src/stable/interfaces/cpp/jderobot/image.h:1367:18: note:   virtual void jderobot::ImageProvider::getImageData_async(const AMD_ImageProvider_getImageDataPtr&, const string&, const Ice::Current&)
                                                                    make[2]: *** [src/stable/components/gazeboserver/plugins/nao/CMakeFiles/camera_nao.dir/camera_dump.cc.o] Error 1
make[1]: *** [src/stable/components/gazeboserver/plugins/nao/CMakeFiles/camera_nao.dir/all] Error 2
make: *** [all] Error 2

I guess that the error is caused by the refactorization of the image.ice interface in ~/jderobot/src/stable/interfaces/jderobot. I've tried to fix the plugin with the current version of image.ice but I'm not able to make it compile. Any help?

Thanks in advance!

Add an IceDemo component for getting started with Ice and contributing to JdeRobot

I'v been thinking about a good way to get started with JdeRobot components, after reading the source code, it comes to my mind that grasping the skeleton of JdeRobot is very essential. As JdeRobot is built upon Ice, so I think it is a good choice to add an IceDemo component to the source tree, this will need to deal with Slice and basic Ice server and client component.

The demo will follow the documentation Ice Hello World Application, the basic steps:

  1. Write a Slice definition and compile it
  2. Write a server and compile it
  3. Write a client and compile it

Hopefully, by getting familiar with the demo component, new developers or contributors will soon know better of the source tree of JdeRobot and able to do some help. Also the demo will follow the programming style and coding conventions(see #22) once settled down, this will help developers to be better involved.

Creating deb packages for the new release of JdeRobot

Hi, I'm opening this issue to discuss all the changes related with the new release of JdeRobot (v5.3) in which I'm working right now. The idea of the new release is to upate all our third party softwares to their last versions, for instance:

  • Gazebo 1.8.1 --> Gazebo 5.1
  • OpenCV 2.3.1 --> OpenCV 2.4
  • Ice 3.4 --> Ice 3.5
  • etc

modifying the components affected by the update. The goal is to make a deb package easy to install from our repository with the following command:

sudo apt-get install jderobot and sudo apt-get install jderobot-dev (to download the headers, etc).

I've been doing some changes to some CMakeLists files into the project in order to make the new versions compatible with JdeRobot, but due to we are un a hurry now because of the Drones contest that is coming (next month) the changes are not clean and elegant, so it's certain that we will need to look over them after the contest. But from now, I've managed to create a package with CPack, but I have a little problem when I try to install it with dpkg -i:

$ sudo dpkg -i jderobot_5.2.4-rc1_i386.deb 
[sudo] password for fran: 
(Reading database ... 246408 files and directories currently installed.)
Preparing to unpack jderobot_5.2.4-rc1_i386.deb ...
Unpacking jderobot (5.2.4-rc1) over (5.2.4-rc1) ...
dpkg: dependency problems prevent configuration of jderobot:
 jderobot depends on openni2; however:
  Package openni2 is not installed.

dpkg: error processing package jderobot (--install):
 dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
Errors were encountered while processing:
 jderobot

If I install JdeRobot from source cmake . and make work fine and find OpenNi2, but if I try to install JdeRobot from the package I've already created it shows the error above 😞
I've modified the CMakeLists of openni2 folder adding the following line (to make it compile) SET(OPENNI2_LIB_PATH /usr/lib) for your information. Any ideas?

Discussions about Programming Style and Coding Conventions

I'm reading the source code of JdeRobot and wondering if we got a common programming style guide or coding conventions? I do find here is a Programming Style section, but not talking too much except for Doxygen.

For better collaboration, the coherent of coding conventions are important, especially for new developers trying to help and contribute source code.

I find two good references and hopefully we can have some discussions, then come out with our own JdeRobot Programming Style and Coding Conventions according to the existed code base. Maybe also do some code refactoring.

The references are Google C++ Style Guide and C++ Programming Style Guidelines. They mainly cover C++, we can also make adaptions to Python and Java, etc.

Cheers,
Lihang

Add doc target and doxygen support

I'll implement document generation system.

There will a common target for every document system doc and a local dependency on every component/library.

Error when running `cmake .`, no python files

Hi there,

Trying to build JdeRobot following the instructions here, however when running cmake ., I got the following errors:

/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/body_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/exceptions_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/common_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/bodyencoders_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/motors_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/replayControl_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/namingService_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/varcolor_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/remoteConfig_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/bodymovements_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/kinectleds_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/datetime_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/sonars_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/ptmotors_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/remoteCloud_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/naofollowball_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/pose3d_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/camera_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/pointcloud_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/containers_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/image_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/recorder_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/pose3dencoders_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/wiimote_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/jcm_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/encoders_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/bodymotors_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/naomotions_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/laser_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/pose3dmotors_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/jointmotor_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/genericData_ice.py': No such file or directory
/usr/bin/slice2py: error: cannot open`/home/lihang/dev/gsoc2015/JdeRobot/src/stable/interfaces/slice/jderobot/../../python/jderobot/ptencoders_ice.py': No such file or directory

However, these issues don't bother too much, since cmake still succeeds and generates the Makefile.

Maybe we need to clean the CMakeLists.txt file a bit?

Regards,
Lihang

Proposal for a .gitignore file

To prevent tens of untracked files to be shown during every commit it's a good idea to use a .gitignore file.

I propose a minimal pattern (*.a, *.so, Makefile, ect) and if you wish we could add every component's executable name.

But I think that at least a minimal filtering must be implemented to simplify commit and status output.

Failed to load plugin libpgsplugin.so in Gazebo with the quadrotor plugin

Hi,

I compiled and installed Jderobot in a clean Ubuntu 14.04 x86 virtual machine, when I execute gazebo with the gato_raton_1.world the gazebo server log show the next:

Failed to load plugin libpgsplugin.so: libpgsplugin.so: cannot open shared object file: no such file or directory

To fix it I comment the libgpsplugin.so declaration in the model.sdf file for ArDrone and RedArDrone models.

Is necessary this plugin? where is it?

regards

libgps

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.