Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
Brand Logo

ModalAI Forum

  1. ModalAI Support Forum
  2. VOXL Compute & Autopilot
  3. VOXL 2
  4. ModalAI uORB topic file handle location

ModalAI uORB topic file handle location

Scheduled Pinned Locked Moved VOXL 2
12 Posts 2 Posters 2.8k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Eric KatzfeyE Eric Katzfey

    @Dan I'm not familiar with the /obj directory. That must be a Nuttx specific thing. What exactly are you trying to find out? Can you use the PX4 listener command?

    D Offline
    D Offline
    Dan
    Contributor
    wrote on last edited by
    #3
    This post is deleted!
    1 Reply Last reply
    0
    • D Offline
      D Offline
      Dan
      Contributor
      wrote on last edited by
      #4
      This post is deleted!
      1 Reply Last reply
      0
      • Eric KatzfeyE Eric Katzfey

        @Dan I'm not familiar with the /obj directory. That must be a Nuttx specific thing. What exactly are you trying to find out? Can you use the PX4 listener command?

        D Offline
        D Offline
        Dan
        Contributor
        wrote on last edited by
        #5

        @Eric-Katzfey
        Re: ModalAI uORB topic file handle location

        Hi Eric. Thanks for getting back to me.

        Quite possibly this is a Nuttx thing. I can use the listener just fine however I'm interested to dive a bit deeper into how you ship this data comes across from the DSP and whether I can potentially access that data directly without using uORB. I know I can use uORB to subscribe and get a file descriptor but I thought I'd ask and see if there are alternatives.

        Is there documentation on ModalAI uORB implementation for the DSP?

        Eric KatzfeyE 1 Reply Last reply
        0
        • D Dan

          @Eric-Katzfey
          Re: ModalAI uORB topic file handle location

          Hi Eric. Thanks for getting back to me.

          Quite possibly this is a Nuttx thing. I can use the listener just fine however I'm interested to dive a bit deeper into how you ship this data comes across from the DSP and whether I can potentially access that data directly without using uORB. I know I can use uORB to subscribe and get a file descriptor but I thought I'd ask and see if there are alternatives.

          Is there documentation on ModalAI uORB implementation for the DSP?

          Eric KatzfeyE Offline
          Eric KatzfeyE Offline
          Eric Katzfey
          ModalAI Team
          wrote on last edited by
          #6

          @Dan It's not really documented anywhere other than the source code. The best place to look is at the muorb module code. That is what implements the uorb communicator interface to allow advertisements, subscription requests, and topic data to flow between the DSP and the Linux side.

          D 1 Reply Last reply
          1
          • Eric KatzfeyE Eric Katzfey

            @Dan It's not really documented anywhere other than the source code. The best place to look is at the muorb module code. That is what implements the uorb communicator interface to allow advertisements, subscription requests, and topic data to flow between the DSP and the Linux side.

            D Offline
            D Offline
            Dan
            Contributor
            wrote on last edited by
            #7

            @Eric-Katzfey

            OK great. Thanks Eric. I'll take a look and come back here if I have any further questions.

            Eric KatzfeyE 1 Reply Last reply
            0
            • D Dan

              @Eric-Katzfey

              OK great. Thanks Eric. I'll take a look and come back here if I have any further questions.

              Eric KatzfeyE Offline
              Eric KatzfeyE Offline
              Eric Katzfey
              ModalAI Team
              wrote on last edited by
              #8

              @Dan BTW: MUORB stands for multiprocessor UORB just in case you were wondering.

              D 1 Reply Last reply
              0
              • Eric KatzfeyE Eric Katzfey

                @Dan BTW: MUORB stands for multiprocessor UORB just in case you were wondering.

                D Offline
                D Offline
                Dan
                Contributor
                wrote on last edited by
                #9

                @Eric-Katzfey

                I was actually. That's useful - Thanks!

                1 Reply Last reply
                0
                • D Offline
                  D Offline
                  Dan
                  Contributor
                  wrote on last edited by
                  #10

                  @Eric-Katzfey

                  Please correct me if my understanding is wrong. I just want to catch you whilst our time zones overlap.

                  I've just briefly looked through the code for MuORB and uORB. It seems that MuORB registers as a communicator with the uORB Manager and provides a bunch of callbacks that eventually invoke particular functions in the manager when the respective action happens (subscribe, callback, advertise, unsubscribe). I see process_remote_topic() calling orb_advertise() which ends up calling uORB::Utils::node_mkpath(nodepath, messageName) which in the implementation is:

                  //-----------------------------------------------------------------------------
                  //-----------------------------------------------------------------------------
                  int uORB::Utils::node_mkpath(char *buf, const char *orbMsgName)
                  {
                  	unsigned len;
                  
                  	unsigned index = 0;
                  
                  	len = snprintf(buf, orb_maxpath, "/%s/%s%d", "obj", orbMsgName, index);
                  
                  	if (len >= orb_maxpath) {
                  		return -ENAMETOOLONG;
                  	}
                  
                  	return OK;
                  }
                  

                  This path (notice the /obj) then goes into node_open() which should create a file descriptor using px4_open() with the name /obj/<topic_name><index>.

                  Can you see point me to where I'm going wrong in my understanding as we've discussed before this directory doesn't exist on VOXL2.

                  Eric KatzfeyE 1 Reply Last reply
                  0
                  • D Dan

                    @Eric-Katzfey

                    Please correct me if my understanding is wrong. I just want to catch you whilst our time zones overlap.

                    I've just briefly looked through the code for MuORB and uORB. It seems that MuORB registers as a communicator with the uORB Manager and provides a bunch of callbacks that eventually invoke particular functions in the manager when the respective action happens (subscribe, callback, advertise, unsubscribe). I see process_remote_topic() calling orb_advertise() which ends up calling uORB::Utils::node_mkpath(nodepath, messageName) which in the implementation is:

                    //-----------------------------------------------------------------------------
                    //-----------------------------------------------------------------------------
                    int uORB::Utils::node_mkpath(char *buf, const char *orbMsgName)
                    {
                    	unsigned len;
                    
                    	unsigned index = 0;
                    
                    	len = snprintf(buf, orb_maxpath, "/%s/%s%d", "obj", orbMsgName, index);
                    
                    	if (len >= orb_maxpath) {
                    		return -ENAMETOOLONG;
                    	}
                    
                    	return OK;
                    }
                    

                    This path (notice the /obj) then goes into node_open() which should create a file descriptor using px4_open() with the name /obj/<topic_name><index>.

                    Can you see point me to where I'm going wrong in my understanding as we've discussed before this directory doesn't exist on VOXL2.

                    Eric KatzfeyE Offline
                    Eric KatzfeyE Offline
                    Eric Katzfey
                    ModalAI Team
                    wrote on last edited by
                    #11

                    @Dan You have to look for the definition of the px4_open function. On Nuttx it is defined as the OS open function. Otherwise it is defined as an external function. Look at src/lib/cdev/posix/cdev_platform.cpp

                    D 1 Reply Last reply
                    1
                    • Eric KatzfeyE Eric Katzfey

                      @Dan You have to look for the definition of the px4_open function. On Nuttx it is defined as the OS open function. Otherwise it is defined as an external function. Look at src/lib/cdev/posix/cdev_platform.cpp

                      D Offline
                      D Offline
                      Dan
                      Contributor
                      wrote on last edited by
                      #12

                      @Eric-Katzfey

                      Thanks again Eric. Looks like that was the part I was missing. I'll take a look.

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      ModalAI
                      Categories Recent Tags ModalAI.com Docs
                      © 2026 ModalAI® · Accelerating autonomy for smaller, smarter, safer drones · Powered by NodeBB
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups