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

francoisdtf's profile - activity

2020-10-13 07:34:10 -0500 commented question Groot: how finds models? how connects to running BT?

Digging this out, I also encounter the second error, even though I'm using ROS1 (Kinetic). I'm not sure which port I sho

2020-10-13 03:48:58 -0500 commented question Groot: how finds models? how connects to running BT?

Digging this out, I also encounter the second error, even though I'm using ROS1 (Kinetic). I'm not sure which port I sho

2019-10-06 16:27:01 -0500 received badge  Favorite Question (source)
2018-11-26 09:15:48 -0500 received badge  Good Question (source)
2018-10-08 09:19:40 -0500 commented answer MoveIt problem. error: Trajectory message contains waypoints that are not strictly increasing in time

Fixed it for me two. When printing all the trajectory points' time from start, I noticed that the two firsts were 0. Eit

2018-05-18 22:33:39 -0500 received badge  Famous Question (source)
2018-02-17 08:48:29 -0500 received badge  Nice Question (source)
2016-10-18 01:00:39 -0500 received badge  Famous Question (source)
2016-08-19 14:28:23 -0500 received badge  Famous Question (source)
2016-03-01 13:22:57 -0500 received badge  Notable Question (source)
2016-01-03 00:01:55 -0500 received badge  Notable Question (source)
2015-09-04 15:59:09 -0500 received badge  Popular Question (source)
2015-06-29 05:00:33 -0500 commented question Using 3rd party TCP socket within ROS service fails

Okay I'm really confused right now. I was opening the TCP connection in my class constructor, saving the socket ID in a class attribute. So I tried to open it directly in the service instead, and close it immediately. It worked, so I put it back as it was before, and surprisingly it worked this time

2015-06-27 03:26:46 -0500 received badge  Popular Question (source)
2015-06-25 08:33:11 -0500 received badge  Notable Question (source)
2015-06-25 04:38:57 -0500 asked a question Using 3rd party TCP socket within ROS service fails

Greetings,

Following my previous post (not necessary to read it, I decided to open a new topic since the following issue is quite different an could be encountered in a different situation), I decided, in short, to create a node advertising services aiming to communicate with the DAQ card Labjack UE9 through a TCP socket.

So, when the service is called, a command is sent to a previously opened (and stored as class member) TCP socket and an answer is expected from this same socket.

The problem is, it seems that this TCP communication interfers with the one ROS uses to call it services. Indeed, no answer is received (recv function returns -1), and the card doesn't execute the command. Plus, I get an error message from the client node, saying

a message of over a gigabyte was predicted in tcpros. that seems highly unlikely, so I'll assume protocol synchronization is lost.

I read a few issues regarding this message, but they seem to be all different and kind of esoteric, though it seems to be linked to TCPROS implementation.

In my case, the TCP connection used to call the service seems to interfer with the one I use to communicate the Labjack. Do you think it's accurate? Would there be a way to fix it?

I must add that, when I use the same program but use USB instead of TCP via ethernet to send commands to the card, it works perfectly, so the problem definitely comes from TCP communication.

EDIT :

When running roswtf while I send service requests, it tells me :

WARNING The following nodes are unexpectedly connected :

Te "somenumber" thingy changes everytime I run it, and strongly looks like a port number (44259 for example). Maybe it could be that the Labjack is sending back the TCP message to rosout instead of the node calling the command or something like this... I'm actually not that good in networking so I've got a hard time guessing where the issue comes from...

I configured my network with

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

So it can communicate with the Labjack which IP address is 192.168.1.209

2015-06-23 21:06:34 -0500 received badge  Popular Question (source)
2015-06-23 07:45:00 -0500 asked a question Sending data to a single TCP connection from different nodes

Hi,

So I have this DAQ card called Labjack link , that I used as an interface to real world for a whole system. It will then take measurements from different sets of sensors, output commands or analog voltages, etc...

And, in an endeavor to maintain a modular software architecture, I would have liked to have several nodes, each managing a specific "low-level" functionality (because yes, it's not that low since it has to go through the daq first). For example, one node would retrieve data from my distance sensor and publish it to a topic, another node would receive speed commands from a subscribed topic and output them on Labjack.

The problem is, the daq card is connected to my PC via ethernet, and having multiple nodes able to send commands over this single connection could easily imply packet interference if two nodes try to use it at the same time.

So my question is, what would be the best way to deal with that? I considered several options, but I'm still unsure of which would be the best, or if there is a better solution I didn't think of.

  • I could have another node providing specific services corresponding to the different labjack's commands I want to use, so all the communication would be kept in a single process and processed one at a time, the other nodes would then have to call this services to send commands. But this will lose a bit of the modular architecture I wanted.

  • I could also have a shared memory space with a semaphore, containing the TCP socket, so each node would have to wait for the other to finnish their tcp communication before beginning a new one. But I fear this would be too complicated compared to the performance improvement it would bring.

  • Similarly, I read about nodelet, so I thought about having all the "low-level" functionnality in a single nodelet, so they could share memory, but this time only between threads. But it might be needlessly complicated too.

If anyone has comments/suggestions about this issue they would all be welcome :)

2015-06-02 09:13:28 -0500 answered a question Undefined reference on roscpp functions

That was an actual copy paste. Thank you and sorry for the trouble, that was the issue.

2015-06-02 09:09:25 -0500 received badge  Editor (source)
2015-06-02 09:02:56 -0500 asked a question Undefined reference on roscpp functions

Hi everyone,

I'm stuck with a linking problem for a while now, I tried many stuff and browsed the forum but couldn't find my exact problem. It must be quite stupid though, since it seems to be a simple fail in linking roscpp.

When I tried to catkin_make my workspace, I get an undefined reference to any function from roscpp. It does not seem to be an inclusion problem since I have no error message about that, only this undefined reference issue.

I simplified my .cpp and my CMakelist.txt to the maximum but still get the same problem. Here are the exact files I'm trying :

CMakelist.txt :

cmake_minimum_required(VERSION 2.8.3)
project(myproject)

if(UNIX)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif()


find_package(
  catkin REQUIRED COMPONENTS
  roscpp
  rospy
  )

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
  )


catkin_package(
  INCLUDE_DIRS include
  LIBRARIES myproject
  CATKIN_DEPENDS roscpp rospy
  DEPENDS system_lib
  )

add_executable(lj_cmd_interface src/lj_cmd_interface.cpp)


target_link_libraries(lj_cmd_interface ${CATKIN_LIBRARIES})

package.xml :

<?xml version="1.0"?>
<package>
  <name>myproject</name>
  <version>0.0.0</version>
  <description></description>

  <maintainer email="me@me.com">Me</maintainer>

  <license>BSD</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <run_depend>roscpp</run_depend>
  <run_depend>rospy</run_depend>

</package>

And even the simplest cpp code doesn't work :

#include "ros/ros.h"

int main(int argc, char **argv){

  ros::init(argc, argv, "mynode");

  return 0;
}

I guess the solution must be quite straightforward once you get it, but after almost a whole day searching for it I must admit I couldn't see it...

2015-04-03 02:27:46 -0500 marked best answer Making ROS real-time : is it magic?

Greetings,

I was wondering about real-time patches for ROS, such as Orocos, and their actual efficiency.

I am quite new in the field of RT stuff, but as I read that ROS wasn't an real-time software, I consider that it is lacking the ability to make sure that its cycles, communication protocols and other will be done each in a given time.

So the actual question is, in which way does the use of any RT tool kit make ROS real-time? I mean, the core process would still be the same, with the same timing uncertainty problems, so at which level does the RT patch acts? And is it really efficient?

2015-04-03 02:27:46 -0500 received badge  Supporter (source)
2015-04-03 02:26:32 -0500 received badge  Scholar (source)
2015-04-03 02:26:20 -0500 received badge  Enthusiast
2015-04-02 10:09:02 -0500 commented answer Making ROS real-time : is it magic?

Thank you a lot, all of this was really helpful and greatly improved my understanding of the whole thing.

2015-03-30 11:05:34 -0500 received badge  Famous Question (source)
2015-03-27 19:08:52 -0500 received badge  Notable Question (source)
2015-03-27 08:25:08 -0500 received badge  Student (source)
2015-03-27 08:11:55 -0500 received badge  Popular Question (source)
2015-03-27 05:54:51 -0500 commented question Making ROS real-time : is it magic?

@gvdhoorn Okay, sorry for the misuse of the word. My question remains though, but maybe this formulation would be better : if using a real-time tool together with ROS within a system, wouldn't the use of ROS make the whole system non-realtime?