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)
|