6 Replies Latest reply on Aug 14, 2017 2:49 PM by JayFrancis

    rostopic echo (on remote machine)

    JayFrancis

      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

        • 1. Re: rostopic echo (on remote machine)
          MeitavKleinfeld

          Hi Jay,

           

          Can you check to see if your euclid is publishing these topics at all? Try using "rostopic hz <topic_name>" 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

          • 2. Re: rostopic echo (on remote machine)
            JayFrancis

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

            • 3. Re: rostopic echo (on remote machine)
              MeitavKleinfeld

              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

              • 4. Re: rostopic echo (on remote machine)
                JayFrancis

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

                • 5. Re: rostopic echo (on remote machine)
                  MeitavKleinfeld

                  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

                  • 6. Re: rostopic echo (on remote machine)
                    JayFrancis

                    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