Items with no label
3335 Discussions

rostopic echo (on remote machine)

JFran14
Novice
3,099 Views

Hi all,

I apologize in advance if this is a real ROS beginner's question...

I believe I've properly configured a remote machine to use the Euclid as ROS master. I can 'rostopic list' just fine, and I can 'rostopic echo' topics that have generic messages.

For example:

- 'rostopic echo /rosout' works fine.

- running 'rostopic pub /test_topic std_msgs/Bool true' on the Euclid, and

'rostopic echo /test_topic' on the remote machine also works fine.

What I can't echo are any of the Euclid specific topics:

/cpu_info /hardware_status /nodes_status /usb_status /wifi_status

jay@Jay-MacBookPro:~$ rostopic echo /cpu_info

ERROR: Cannot load message class for [system_monitor/CpuStatus]. Are your messages built?

jay@Jay-MacBookPro:~$ rostopic echo /nodes_status

ERROR: Cannot load message class for [configuration_node/NodesStatus]. Are your messages built?

jay@Jay-MacBookPro:~$ rostopic echo /usb_status

ERROR: Cannot load message class for [system_monitor/USBStatus]. Are your messages built?

jay@Jay-MacBookPro:~$ rostopic echo /wifi_status

ERROR: Cannot load message class for [system_monitor/WifiStatus]. Are your messages built?

Digging around online seems to point to these messages types not being published properly (?). Or, maybe I still don't have something configured properly between the two machines?

I'm sure someone will know right away what I'm doing wrong... Any help would be appreciated :-)

Thanks,

Jay

0 Kudos
6 Replies
Meitav_K_Intel
Employee
1,662 Views

Hi Jay,

Can you check to see if your euclid is publishing these topics at all? Try using "rostopic hz " to check the rate of data in that topic.

I believe that you might have the msg type missing from your remote machine. In that case I think you can get them with "sudo apt-get install ros-kinetic-system-monitor ros-kinetic-configuration-node"

Let me know if this works.

Meitav

Intel Euclid Development Team

0 Kudos
JFran14
Novice
1,662 Views

Hi Meitav,

Yes, the Euclid is publishing the messages.

You're correct, the remote machine is missing the two packages you mentioned. What repository should I be using to obtain those packages? They look like they're Intel Euclid specific and don't indicate where to find them (via apt-cache policy). My remote machine can't find them with the standard repositories (including deb http://packages.ros.org/ros/ubuntu http://packages.ros.org/ros/ubuntu xenial main).

(on the Euclid)

'dpkg -s ros-kinetic-system-monitor'

Package: ros-kinetic-system-monitor

Status: install ok installed

Priority: extra

Section: misc

Maintainer: Intel Euclid Support <</span>mailto:euclid.support@intel.com euclid.support@intel.com>

Architecture: amd64

Source: ros-kinetic-system-monitor

Version: 1.0.1

Depends: ros-kinetic-message-runtime, ros-kinetic-roscpp, ros-kinetic-rospy, ros-kinetic-std-msgs

Description: Euclid system_monitor package

'apt-cache policy ros-kinetic-system-monitor'

ros-kinetic-system-monitor:

Installed: 1.0.1

Candidate: 1.0.1

Version table:

*** 1.0.1 100

100 /var/lib/dpkg/status

Thanks,

Jay

0 Kudos
Meitav_K_Intel
Employee
1,662 Views

Hi Jay,

While I'm not sure if this is the best method, a good workaround would be to copy the packages from the Euclid (located at "/usr/share/ubuntu/scripts/oem-config.d/data/ros/") and install the ones you need (mainly ros-kinetic-system-monitor and ros-kinetic-configuration-node).

Doing this enabled me to echo these 4 topics on my remote machine without a problem.

Let me know if this works for you.

Meitav

Intel Euclid Development Team

0 Kudos
JFran14
Novice
1,662 Views

Hi Meitav,

Interesting... my Euclid doesn't have the /data/ros directory:

euclid@EUCLID_71C5:/usr/share/ubuntu/scripts/oem-config.d$ ls

custom early late

But, following your thought process, I came up with another solution.

On my remote machine:

- I created a new catkin workspace (I called it euclid_ws)

- I then cloned euclid_configuration_node and euclic_system_monitor into that workspace from the Euclid GitHub (https://github.com/IntelEuclid Intel® Euclid™ · GitHub )

- sourced the euclid_ws/devel/setup.bash

Now my remote machine can understand the messages.

Certainly in this case this method works. I could see other cases where it wouldn't be desirable to rebuild an entire package just to create the message definitions. This is where my ROS inexperience shows - maybe there's a proper way to just build messages from a package?

My general problem is solved. Would love to get pointers on better ways to do this.

Thanks,

Jay

0 Kudos
Meitav_K_Intel
Employee
1,662 Views

Hi Jay,

I'm glad you found the solution.

As far as I know there really isn't a proper way to do it normally, other than building some package that has those msg types, so making a solution for less experienced users such as an installation script will probably be handy. That's a good idea!

I will add this to our development backlog. Maybe something along the lines of having a remote machine sdk for Euclid.

Meitav

Intel Euclid Development Team

0 Kudos
JFran14
Novice
1,662 Views

Hi Meitav,

Sounds like a lightweight package just with message definitions (plus other exposed service definition?) would be helpful.

I'm sure this won't be a high priority :-) Your team must have more critical things in the development backlog.

Thanks again for talking through the problem.

--Jay

0 Kudos
Reply