Ask Your Question

Murilo F. M.'s profile - activity

2017-07-31 11:32:28 -0600 received badge  Good Answer (source)
2017-06-27 09:35:55 -0600 commented answer Problem using callback with multiple arguments via ApproximateTime synchronizer

You can either use a message type which has a header, or create a custom message with a header and the primitive data ty

2016-10-28 13:03:45 -0600 received badge  Nice Answer (source)
2016-05-08 15:40:04 -0600 received badge  Guru (source)
2016-05-01 09:20:26 -0600 received badge  Nice Answer (source)
2016-02-26 10:33:26 -0600 received badge  Nice Answer (source)
2016-02-01 11:09:50 -0600 received badge  Nice Answer (source)
2015-08-21 02:20:43 -0600 received badge  Great Answer (source)
2015-04-24 03:20:31 -0600 commented answer dynamixel no motor found

It does sound like your servo might be defective. Have you got another servo to test?

2015-03-18 16:47:40 -0600 received badge  Nice Answer (source)
2015-01-05 12:41:14 -0600 received badge  Nice Answer (source)
2014-12-26 15:42:49 -0600 commented answer Extract time from .bag file

Thanks! I did not know that! I should probably delete my answer as it is inaccurate/misleading.

2014-12-25 06:31:26 -0600 commented answer Extract time from .bag file

Does the time refer to when rosbag received the message?

2014-12-22 18:16:00 -0600 commented question Conflicts when source setup.bash

Also, this question and this question are closely related to your problem.

2014-12-22 18:07:50 -0600 answered a question Extract time from .bag file

Message timestamps are set by their publishers and usually represent the timestamp of when the corresponding data was captured/generated.

If you are referring to when rosbag (as a subscriber) received the messages logged into a bag file, then the answer is no, it is not possible to know.

The time when a subscriber receives the message depends on network latency, CPU load, as well as publisher/subscriber buffer size, and so forth.

Is this helpful or have I missed your point?

2014-12-22 17:29:02 -0600 answered a question Confusion over 'ssh' command for networking

Regarding the command to run ssh, the user must exist on the remote machine, thus your second command is the correct one.

If you'd like to deepen your understanding of how ssh works, the top hits of a google search for ssh tutorial will come handy.

That said, I would also advise you to export the environment variable ROS_IP for each computer. For instance, for computer A: export ROS_IP=xxx.xxx.xxx.xxx (replacing the x's with computer A's IP address).

You may also find the following two links useful:

ROS/NetworkSetup

ROS/Tutorials/MultipleMachines

I hope it helps.

2014-12-08 14:18:30 -0600 commented answer dynamixel no motor found

I have used the USB2Dynamixel and a simple USB to RS485 converter I assembled myself. They both worked fine for me... :-|

2014-12-04 07:45:29 -0600 answered a question dynamixel no motor found

You did not mention whether you configured the servos, so I thought it'd be worth mentioning.

Each servo stores a set of parameters internally. You must configure (or at least check the configuration of) every servo separately before you attempt to communicate with them.

There are 2 key parameters you must ensure are correct in order to communicate with the servos.

The first parameter is the baud rate. You are trying to connect to the servos at 57600 bps, and you said you also tried 1000000 bps. You must ensure all servos are configured to use the same baud rate, and use that value when you load the node.

The second parameter is the servo ID (which should be unique to each servo). You are attempting to communicate with servos which IDs range from 1 to 25. It could be that your servos were configured with IDs out of this range.

Configuring the servos:

You may use RoboPlus (on Windows), which is the official software from Robotis.

Alternatively (if you know the parameter values currently configured), you can also change the servos IDs, as well as set the desired parameter values using these ROS nodes.

Related question: ClamArm using Dynamixel Motors: No Motors Found

I hope it helps!

2014-11-19 09:14:42 -0600 commented answer Multiple roscores synchronize

You need to run 2 nodes on each machine: master_discovery from package master_discovery_fkie, and master_sync from package master_sync_fkie. I created a launch file. Also, there is a GUI you can load by running the node node_manager from package node_manager_fkie. It's that simple!

2014-11-13 14:51:30 -0600 answered a question ROS application using Qt5 qml

I'm not sure if you have already found a solution to your question, but...

I'm not using Qt5, I'm using Qt4, but given that your error is an undefined reference, it means the linker cannot find the QtQuick library.

As far as I can tell, for Qt5 and QtQuick 2, the required components/modules are QtQml and QtQuick.

Would that be the issue?

I hope it helps!

2014-11-13 09:10:52 -0600 answered a question Multiple roscores synchronize

I have been using multimaster_fkie for awhile now and it works very well with my setup.

You do not necessarily need to have the machines synchronised in time, but the result will be messages published with out-of-sync timestamps.

You should ensure the machines are synchronised in time, particularly if you are using TF.

2014-11-11 05:25:17 -0600 received badge  Good Answer (source)
2014-10-29 13:11:31 -0600 answered a question Use PTZ controls on Axis Camera

The teleop.py node subscribes to sensor_msgs/Joy and publishes axis_camera/Axis messages. If you have a joystick, you should be able to control the PTZ using it.

The axis_ptz.py node subscribes to the cmd topic and receives the published axis_camera/Axis in order to control the PTZ unit.

In a nutshell, if you publish axis_camera/Axis messages from your node, you should be able to control the PTZ unit. I based myself on the teleop.py when I wrote my own node.

As for the dynamic reconfigure, I haven't tried that out.

I hope it helps!

2014-10-29 11:27:24 -0600 received badge  Good Answer (source)
2014-10-27 16:06:27 -0600 commented answer How to source only select workspaces ?

You are right, there is no need to delete the CmakeLists.txt. Thanks for pointing that out. I'm editing my answer to remove those commands.

2014-10-27 07:27:24 -0600 received badge  Nice Answer (source)
2014-10-26 16:07:17 -0600 answered a question How to source only select workspaces ?

The behaviour your are observing has to do with how catkin workspaces are chained.

At the time you created your catkin workspace, other workspaces had already been created and sourced within the shell you were using.

A quick fix (if you only want to have the system-wide installed ROS packages and your catkin workspace sourced) is:

cd your_catkin_ws/
rm -rf build/ devel/
source /opt/ros/hydro/setup.bash
catkin_make

Then, remember to have only one line in your .bashrc:

source path_to_your_catkin_ws/devel/setup.bash

See the answers (particularly the second one) to this question for a more detailed explanation on how chaining of catkin workspaces actually works.

2014-10-26 15:46:21 -0600 answered a question How to convert a Hydro launch file to an indigo launch file

The problem is not in your launch file.

A ResourceNotFound error means a resource was not found!

In this case, it is the package you are trying to find in $(find stageroscam). That hints the package is not installed/available on your system.

You should either install the package (if it is available), or clone the git repo in your catkin workspace. Mind you the package may not yet be compatible with ROS Indigo.

2014-10-09 03:44:41 -0600 received badge  Good Answer (source)
2014-10-07 16:35:57 -0600 answered a question Couldn't find executable below /home/leroy/catkin_ws/tum_ardrone

There are two central concepts which you must firstly understand before attempting to do what you are doing.

Firstly, you are mixing up catkin and rosbuild workspaces/build systems. When using catkin workspaces, you should run the command catkin_make to build the packages within the given workspace.

Secondly, the source of all ROS packages compatible with catkin must be in catkin_ws/src/, and not in the root folder of your workspace.

See this link for further information.

I hope it helps!

2014-10-07 16:30:49 -0600 answered a question Couldn't find executable below /home/leroy/catkin_ws/tum_ardrone

There are two main concepts which you must understand better.

Firstly, you are mixing up catkin and `rosbuild

2014-09-25 11:09:58 -0600 answered a question moving mobile robot in zigzag way

You are publishing four different velocity commands (roughly) every 20 milliseconds (50 Hz), and hence the robot will never actually do what you are expecting.

Revise your logic and make sure you send the same velocity command for a given period of time long enough the robot has time to move, then switch to the next velocity command... and so on and so forth...

2014-09-24 16:56:03 -0600 commented answer setting a param from the launch file doesn't work with string

Just to complement, adding type="string" to the launch file solves the problem when you set the parameter in that file. However, if you don't, the default value will be used. Hence, you could also explicitly call private_node_handle_.param<string>(...) to guarantee type safety at compile time.

2014-09-24 07:17:37 -0600 received badge  Nice Answer (source)
2014-09-02 17:00:07 -0600 commented answer Question concerning the movement of a 6DOF + frames

I edited my answer and added an example of how I use the package. You just need to add that to your launch file.

2014-09-02 16:29:33 -0600 answered a question librviz display sensor_msgs/LaserScan

The same way you created your rviz::Display* grid_ (assuming this is what you did), you should create an additional display in your code for each corresponding display you would add if you were using RViz itself.

For instance, to add a LaserScan display, you should add to your header file:

rviz::Display* laser_;

Then, in your source file, you should do something like:

laser_ = manager_->createDisplay("rviz/LaserScan", "Laser scan", true);
// configure rviz/LaserScan
laser_->subProp("Topic")->setValue("fts/laserscan_front");
laser_->subProp("Style")->setValue("Boxes");

You can add the display in RViz and check which settings/properties you would be able to change there. Then just adapt the lines of code above to set the properties you want. The same idea works for any other display type you can add in RViz.

2014-08-28 09:14:58 -0600 commented question obtaining Kinect registered images (X,Y and depth)

Assuming you are running Hydro or Indigo, have you checked the documentation? There you can see which topic publishes depth images, registered or not, in metres or millimetres. It might be a good starting point.

2014-08-27 17:18:27 -0600 received badge  Nice Answer (source)
2014-08-27 16:57:02 -0600 answered a question Question concerning the movement of a 6DOF + frames

Adding to what @tfoote said, my workaround to the fact that floating joints are not available anymore was to broadcast a base_stabilisedframe, which coincides with my quadrotor's base_link, but rotates along the X- and Y-axis according to the IMU's quaternion (transformed to base_link if an existing imu_link does not coincide with base_linkas well).

After implementing it myself, I found out there is a package called hector_imu_attitude_to_tf, which does exactly that.

This way, when I set the fixed frame in RViz to base_stabilised, I can see the quadrotor roll'ing and pitch'ing. Extending that to broadcast rotation along the Z-axis should be straightforward.

EDIT: Below is an example of how I used the hector_imu_attitude_to_tf package:

<node pkg="hector_imu_attitude_to_tf" type="imu_attitude_to_tf_node" name="base_stabilised_node">
    <param name="base_stabilized_frame" type="string" value="base_stabilised" />
    <param name="base_frame" type="string" value="base_link" />
    <remap from="imu_topic" to="/imu" />
</node>
2014-08-26 18:29:50 -0600 commented question rosservice call syncing service starts

Focussing on your question, how about creating another service which takes as request fields the speed of both motors (a bit of a hack, I know)? ROS services are intrinsically asynchronous.

2014-08-26 13:51:32 -0600 commented answer How to subsribe to a ROS topic for several seperate times?

That's because you should not use rospy.spin(). If you delete that line, it should work.

2014-08-26 12:03:27 -0600 edited answer How to subsribe to a ROS topic for several seperate times?

EDIT:

I tested and, with some changes, it works. As long as you make sub1 global and unregister within the callback after processing msg, it works (I updated the code below as well):

def addMarkerCallback(msg):
    ...
    sub1.unregister()

Also, you do not need the while loop if you want to go through scanlist only once.


Originally, I had written:

My suggestion is untested and I might be wrong, but how about having your for loop as the inner loop of:

global sub1
while rospy.is_shutdown():
    for item in scanlist:
        ...

If you want to wait for a certain time at each iteration, then you could:

r = rospy.Rate(1) #1Hz
global sub1
while not rospy.is_shutdown():
    for item in scanlist:
        ...
        r.sleep()

Do not use rospy.spin(). From my understanding, that should work, but I'm not a Python expert.

Someone else might be able to provide you with a better alternative. I hope it helps anyway.

2014-08-26 11:34:06 -0600 commented answer Can anyone share me "roscpp_tutorials/TwoInts.h"

As for the error in Eclipse, make sure you configured the package according to this documentation.

2014-08-26 11:32:56 -0600 commented answer Can anyone share me "roscpp_tutorials/TwoInts.h"

Oh, OK. If you are following that and compiling the package named day2_service, then the header file will be inside your catkin workspace, in devel/include/day2_service. The code is essentially the same as the ROS Tutorials.

2014-08-26 08:37:32 -0600 commented question SICK LMS1xx in Husky (Hydro)

I'm also using a Husky with LMS100 on 12.04 + Hydro. I forked the repo from clearpath and made very minor changes. Have you checked the IP configured on the LMS? Can you show your launch file?

2014-08-26 08:21:54 -0600 answered a question Can anyone share me "roscpp_tutorials/TwoInts.h"

The file you are looking for is automatically generated by the message_generation package, and even if you found the header file (.h), manually adding that to your package would be conceptually wrong.

The fact that you are not aware of that suggests you should follow the ROS Tutorials, particularly tutorial 10, which explains how to create and use ROS message and service files. Then, tutorials 14 and 16 further explain the underlying concepts.

I strongly advise you follow the ROS Tutorials (or one of those recently published books about ROS, if you fancy) if you are starting to learn ROS! :-)