ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Pedro_85's profile - activity

2022-05-17 19:02:49 -0500 received badge  Nice Answer (source)
2016-05-03 15:10:23 -0500 received badge  Notable Question (source)
2016-05-03 15:09:27 -0500 commented answer homebrew: Failed to detect successful installation of [gazebo]

I was facing the same issue and brew uninstall gazebo1 and brew uninstall gazebo5 and later brew install gazebo solved it. Thanks William.

2016-03-08 05:03:11 -0500 received badge  Popular Question (source)
2016-01-04 09:43:26 -0500 received badge  Good Answer (source)
2015-12-11 15:53:36 -0500 asked a question rosdep fails brew install homebrew/science/pcl --HEAD

Hi I am trying to install ROS Jade in my mac running Yosemite 10.10.5. When I run

rosdep install --from-paths src --ignore-src --rosdistro jade -y

I get:

executing command [brew install homebrew/science/pcl --HEAD]
==> Installing pcl from homebrew/science
==> Cloning https://github.com/PointCloudLibrary/pcl.git
Updating /Library/Caches/Homebrew/pcl--git
==> Checking out branch master
==> Patching
patching file cmake/pcl_find_cuda.cmake
Hunk #1 FAILED at 1.
Hunk #2 FAILED at 37.
2 out of 2 hunks FAILED -- saving rejects to file cmake/pcl_find_cuda.cmake.rej
Error: Failure while executing: /usr/bin/patch -g 0 -f -p1
ERROR: the following rosdeps failed to install
  homebrew: command [brew install homebrew/science/pcl --HEAD] failed

I thought it was a problem with QT like it is mentioned in:

http://answers.ros.org/question/21154...

But no luck.

Has anyone else faced the same problem?

2015-12-11 15:40:44 -0500 commented answer How can I store the AR.Drone's height in order to control it?

rostopic echo will not call any function, it only works as display of the topic's traffic

2015-10-06 05:57:16 -0500 received badge  Nice Answer (source)
2015-08-10 22:05:06 -0500 marked best answer Linear Algebra operations with ROS

I'm trying to create some example nodes that execute linear algebra commands. I wanted to try the TooN library ( http://www.edwardrosten.com/cvd/toon.... ). I was trying to follow what the package tum_ardrone has done in regards to this.

1) I downloaded the folder containing the TooN library files and moved it to the the directory /thirdparty/TooN/include/.

2) I added the following to my CMakeLists.txt file:

# set required libs and headers
include_directories( ${PROJECT_SOURCE_DIR}/thirdparty/TooN/include )

Based on the file HelperFunctions.h located in /tum_ardrone/src I created a simple program to perform basic matrix operations. I will be using these functions later and since I'm not familiar with any library like this one I need to start from the basics. When I execute rosmake I get the following error:

 /home/pedro/fuerte_workspace/sandbox/controlador_ardrone/src/ejemploalgebralineal.cpp: In member function ‘void LinearAlgebra::InverseMatrix()’:
  /home/pedro/fuerte_workspace/sandbox/controlador_ardrone/src/ejemploalgebralineal.cpp:31:31: error: ‘struct TooN::Matrix<3>’ has no member named ‘inverse’

Here is the code I try to compile:

#include <ros/ros.h>
#include <std_msgs/Empty.h>
#include <geometry_msgs/Twist.h>
#include <math.h>
#include <TooN/TooN.h>
#include <TooN/so3.h>

  using namespace std;
  using namespace TooN;

  struct LinearAlgebra
  {
    ros::NodeHandle n;

    void InverseMatrix(){
        TooN::Matrix<3,3> mat;
        mat = Data(1,2,3,4,5,6,7,8,9);
        TooN::SO3<> res = mat.inverse();
        std::cout << "m3_4\n" << mat << "\nm3_5\n"<<res  << std::endl;
    }

    void Commands(){
        InverseMatrix();
    }
  };

////////////

int main(int argc, char **argv)
{
  ros::init(argc,argv,"Linear_Algebra_ROS");

  LinearAlgebra linearalgebra;
  ros::Duration wait_time = ros::Duration(3,0);

  while(linearalgebra.n.ok()) {
      wait_time.sleep();
      linearalgebra.Commands();
      ros::spinOnce();
  }
  return 0;

Does anybody have experience with this library and/or other libraries that I can use? Any help is appreciated.

2015-08-04 12:01:19 -0500 received badge  Notable Question (source)
2015-08-04 12:01:19 -0500 received badge  Famous Question (source)
2015-04-17 07:51:51 -0500 received badge  Popular Question (source)
2015-04-09 10:37:46 -0500 commented answer How can I store the AR.Drone's height in order to control it?

Are you using the coe above to get this measurements or rostopic echo /ardrone/navdata? I strongly recommend performing an update to your ardrone_autonomy package with git pull and recompiling it.

2015-04-08 15:07:28 -0500 commented answer How can I store the AR.Drone's height in order to control it?

Odd. It seems like you will need to rebuild your package. I've been using ardrone_autonomy in fuerte, groovy, and hydro with no problems. How did you install it?

2015-04-08 08:24:50 -0500 commented answer How can I store the AR.Drone's height in order to control it?

Was the drone flying when you looked at altd? The AR.Drone won't publish the altd value unless its flying.

2015-04-08 05:29:43 -0500 marked best answer How can I store the AR.Drone's height in order to control it?

I am trying to get the int32 message published in /ardrone/navdata/altd in order to control the ARDrone's height. Here is the code I have:

#include <ros/ros.h>
#include "std_msgs/Int32.h"

using namespace std;

void heightControl(const std_msgs::Int32::ConstPtr& height)
{
  cout << height << endl;
}

from ardrone_autonomy.msg import Navdata

int main(int argc, char **argv)
{
  ros::init(argc,argv,"Height_Control");
  ros::NodeHandle n;
  ros::Subscriber sub = n.subscribe("ardrone/navdata/altd", 1, heightControl);
  ros::spin();
  return 0;
}

When I run this, the altitude value is not shown in the terminal screen. However, if I do rostopic echo /ardrone/navdata/altd I do get the height shown in the terminal window. Using rosmsg show ardrone_autonomy/Navdata I can see that altd is type int32.

2015-04-05 11:08:19 -0500 asked a question How to publish "real-time" trajectory using markers and Rviz

I have a trajectory generator and I want to visualize it using Rviz. The marker publishing function obtains the coordinates from the main.cpp through geometry_msgs::Vector3 these are later converted to points and added to the marker data. I have tried with both Marker and MarkerArray and I am not able to visualize the markers. I am new to publishing markers in Rviz and I have based the code on the Points and Lines tutorial. I have included a cout command to make sure the information was being added to the Points data and I can see the information in the terminal window.

I am using Unbuntu 12.04 and Ros Fuerte. I have copied the algorithm below. I apologize for the Spanish text in it but it is for my thesis project. Also I appreciate any suggestions on how to improve it and make this code look better.

---marcadores_tf.h---

#ifndef _MARCADORES_TF
#define _MARCADORES_TF

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#include <geometry_msgs/Point.h>
#include <tf/transform_broadcaster.h>
#include <visualization_msgs/Marker.h>
#include <visualization_msgs/MarkerArray.h>
#include <Eigen/Core>

struct marcadores_trayectoria{
  void publicar_marcadores(const geometry_msgs::Vector3 coordenadas);

  marcadores_trayectoria(){
    pub_trayectoria = nh.advertise<visualization_msgs::MarkerArray>("trayectoria_array", 10 );
    pub_marcador = nh.advertise<visualization_msgs::Marker>("marcador_trayectoria", 10 );
  }

  ros::NodeHandle nh;
  ros::Publisher pub_trayectoria, pub_marcador;

  tf::TransformBroadcaster br;
  geometry_msgs::Point puntos;
};

#endif

---marcadores_tf.cpp---

#include <planif_tray_ardrone/marcadores_tf.h>

using namespace std;

void marcadores_trayectoria::publicar_marcadores(const geometry_msgs::Vector3 coordenadas){

  visualization_msgs::MarkerArray lista_marcadores;
  visualization_msgs::Marker marcador;

  marcador.header.frame_id = "/world";
  marcador.ns = "trayectoria_ns";
  marcador.header.stamp = ros::Time::now();

  marcador.type = visualization_msgs::Marker::LINE_STRIP;
  marcador.action = visualization_msgs::Marker::ADD;
  marcador.id = 404;

  marcador.scale.x = 1.0;

  marcador.color.a = 1.0;
  marcador.color.b = 1.0;

  marcador.pose.orientation.w = 1.0;

  //coordenadas
  puntos.x = coordenadas.x;
  puntos.y = coordenadas.y;
  puntos.z = coordenadas.z;

  cout << "puntos x: " << puntos.x << endl;
  marcador.points.push_back(puntos);
  lista_marcadores.markers.push_back(marcador);

  if (pub_marcador.getNumSubscribers() > 0)
      pub_marcador.publish(marcador);

  if (pub_trayectoria.getNumSubscribers() > 0)
      pub_trayectoria.publish(lista_marcadores);

  ros::Rate r(30);
  r.sleep();

}
2015-03-04 06:08:13 -0500 received badge  Famous Question (source)
2015-02-04 15:26:55 -0500 received badge  Student (source)
2015-01-28 09:17:24 -0500 received badge  Notable Question (source)
2014-12-16 12:43:21 -0500 received badge  Popular Question (source)
2014-12-12 12:28:19 -0500 commented question Problem with simple controller for ardrone quadricopter based on visual tags.

Can you tell me which camera parameters did you use for the ar_pose node? Are the positition and rotation measurements accurate with the marker/ardrone location in gazebo?

2014-12-12 12:02:18 -0500 answered a question tf, translation between frames

This information should be located in the /tf topic. What I used to select the header frame and child frame is:

  • subscribe to the /tf topic, your callback function will get a message of the type tf::tfMessageConstPtr let's call this message msg_in
  • msg_in will have information such as (See tfMessage.msg):
  • geometry_msgs/TransformStamped transforms
    • std_msgs/Header header
    • string child_frame_id
    • geometry_msgs/Transform transform
      • geometry_msgs/Vector3 translation
      • geometry_msgs/Quaternion rotation

You are interested in the translation and rotation components so you can access them with:

  • msg_in ->transforms[i].transform.rotation.(x, y, z, or w)
  • msg_in ->transforms[i].transform.translation(x, y, or z)

Where i is the number of the transform message. You can store them in a tf::Quaternion and a tf::Vector3 respectively. Here is a portion of an algorithm that can help you:

#include "tf/tf.h"
#include "tf/tfMessage.h"

void tfCB(const tf::tfMessageConstPtr msg)
{
  //Go through all the tf frame information and select the one you are interested in
  for(int i=0; i < msg->transforms.size();i++){
    if (msg->transforms[i].child_frame_id == "/name_of_your_child_frame"){
      cout << "Msg Size: " << msg->transforms.size() << endl;
      cout << "Header Frame: " << msg->transforms[i].header.frame_id << endl;
      cout << "Child Frame: " << msg->transforms[i].child_frame_id << endl;
      cout << "Transform: " << endl << msg->transforms[i].transform << endl;
      cout << "Vector3: " << endl << msg->transforms[i].transform.translation << endl;
      cout << "Quaternion: " << endl << msg->transforms[i].transform.rotation << endl;

      tf::Matrix3x3 Rotation;
      Rotation.setRotation(tf::Quaternion(msg->transforms[i].transform.rotation.x,
         msg->transforms[i].transform.rotation.y, msg->transforms[i].transform.rotation.z, 
         msg->transforms[i].transform.rotation.w));                                   

      tf::Vector3 traslation;
      traslation = tf::Vector3(msg->transforms[i].transform.translation.x, 
        msg->transforms[i].transform.translation.y, 
        msg->transforms[i].transform.translation.z);

      double roll, pitch, yaw;
      Rotation.getEulerYPR(yaw, pitch, roll); 

      tf::Matrix3x3 RotationYPR;
      RotationYPR.setEulerYPR(yaw,pitch,roll);
    }
  }
}

sub_tf = nh_.subscribe("/tf",100,&Marker_info::tfCB, this); //the call back function belongs to a struct called Marker_info. The idea is to show you the subscriber. You can change this to fit your code.

As you can see, you will store the rotation and translation information in a matrix and a vector that complies with the tf format. You can convert them using tools like tf::VectorTFToEigen.

Hope this helps. Good luck!

2014-12-07 15:40:27 -0500 commented question how to fly ardrone in tum simulator ?

You can clone a particular branch from the git repository by using the flag -b <name_of_the_branch>. So it would be: git clone https://github.com/AutonomyLab/ardrone_autonomy.git -b fuerte. With tum_simulator: git clone https://github.com/tum-vision/tum_simulator.git -b fuerte

2014-11-27 15:42:04 -0500 commented question how to fly ardrone in tum simulator ?

Right, you need to publish to the topics that I mentioned and you don't seem to have in order to make the ardrone move. Try reinstalling the ardrone_autonomy and tum_simulator packages. When you clone them from the git repository make sure you select the fuerte branch

2014-11-26 17:16:31 -0500 commented question how to fly ardrone in tum simulator ?

What kind of error do you get? Is gazebo gui launched at all? did you install the ardrone_autonomy and tum_simulator from the fuerte branch?

2014-11-26 14:02:37 -0500 commented question how to fly ardrone in tum simulator ?

I don't see in your answer the topic /ardrone/navdata, /ardrone/takeoff, /ardrone/land, and /cmd_vel. Can you confirm if you see them and forgot to include them?

2014-11-24 14:17:54 -0500 commented question tum_ardrone installation problem

Is there any reason why you are using rosmake instead of caktin_make?

Try using the ardrone_autonomy package from Autonomy Labs make sure you clone the hydro branch.

2014-11-24 14:00:51 -0500 answered a question Camera calibration parameters not appropriate for SVO package

As you can see in OpenCV Camera Calibration your file will end up being:

cam_model: Pinhole
cam_width: 1024
cam_height: 768
cam_fx: 1114.338842
cam_fy: 1483.616573
cam_cx: 488.044082
cam_cy: 384.580052
cam_d0: 0.089323
cam_d1: -0.327338
cam_d2: -0.003856
cam_d3: -0.002099

The values of fx, fy, cx, and cy are located in the 3x3 camera_matrix and the d0, d1, d2, and d3 in the 1x5 distortion_coefficients array.

Modify your camera parameters file manually and see if this works.

Good luck!

2014-11-24 13:21:45 -0500 commented question how to fly ardrone in tum simulator ?

Hi, a couple of questions first. Where you able to run the simulator successfully? What topics do you get when you run rostopic list?

tum_simulator replicates the topics created by ardrone_autonomy to match the ardrone_driver node. Let me know so we can go on.

2014-11-22 19:49:34 -0500 asked a question Can't import mesh using roslaunch and gazebo

I just created a simple world using Blender 2.7.2. I exported the file to .dae (collada) and successfully imported it running:

gazebo test.world

test.world is detailed like this:

<?xml version="1.0"?>
<sdf version="1.4">
  <world name="default">
    <include>
      <uri>model://ground_plane</uri>
    </include>
    <include>
      <uri>model://sun</uri>
    </include>
    <model name="my_mesh">
      <pose>0 0 0  0 0 0</pose>
      <static>true</static>
      <link name="body">
        <visual name="visual">
          <pose>0 0 0.1 0 0 0</pose>
        <geometry>
          <mesh> 
            <uri>file://piso_madera.dae </uri>
         </mesh>
        </geometry>
        </visual>
      </link>
    </model>
  </world>
</sdf>

I have placed the file piso_madera.dae and the .jpg file that it uses for the ground texture in the same directory as test.world. The path is within the ros package cvg_sim_gazebo in a folder named worlds. The directory tree is like this:

cvg_sim_gazebo\
   worlds\
      test.world
      piso_madera.dae
      woodsample.jpg
   launch\
      testworld.launch

As I mentioned before Gazebo is able to import the file and the texture. When I try to use a roslaunch file I get the following error:

Error [SystemPaths.cc:367] File or path does not exist[""]
Error [Visual.cc:2133] No mesh specified

My launch file is:

<?xml version="1.0"?>
<launch>
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find cvg_sim_gazebo)/worlds/test.world"/>
  </include>
</launch>

I want to be able to store all my files in this directory and not have to move them to the Gazebo directory. I am using ROS Indigo, Gazebo 2.2 and Ubuntu 14.03.

2014-08-19 16:43:54 -0500 received badge  Famous Question (source)
2014-05-29 23:19:48 -0500 received badge  Famous Question (source)