Coder Social home page Coder Social logo

Comments (21)

acbuynak avatar acbuynak commented on July 16, 2024 1

Happy to help. I am okay with incorrect TFs.

from motoros2.

ted-miller avatar ted-miller commented on July 16, 2024

Known issues at this time:

  • Need to read robot calibration data (obfuscated in PlatformList)
  • The command to create the node is returning an error code RCL_RET_NODE_INVALID_NAME. (I haven't done any debug on it yet.)
  • Setup build system for libmicroros
  • Update ParameterExtraction
  • Update PlatformList
  • Setup VS project configurations and related support files (mps)

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

@smith-doug @robinsonmm FYI

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

@ted-miller: M+ libmicroros build setup seems functional for DX200.

Test build output: 1685697608_libmicroros_humble-20221102_dx200.zip.


Edit: with this test build and a temporary work-around for need to read robot calibration data, a DX200 build seems to succeed.

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

@smith-doug @robinsonmm: would the robot you could potentially use to test this happen to be mounted on a rail/track? If it isn't, we might be able to provide you with a test-build sooner.

from motoros2.

acbuynak avatar acbuynak commented on July 16, 2024

If helpful as a test case, I can offer a 12-axis (2 x 6R arms) system controlled by two DX200's in a master-slave configuration.

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

@acbuynak: if you would be ok with incorrect TFs for now, we'd gladly take you up on that offer.

from motoros2.

ted-miller avatar ted-miller commented on July 16, 2024

Missing mpGetEncoderTemp.

from motoros2.

ted-miller avatar ted-miller commented on July 16, 2024

hmm... I looks like Ros_CtrlGroup_GetEncoderTemperature is not actually used. I suspect this was copied from MotoROS1 in anticipation of future functionality. We should just remove it for now.

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

I'm almost certain DN3.19.00a does have mpGetEncoderTemp(..), and that's the version I verified symbols against. It's also listed in mpLegApi00.h of the M+ SDK v1.4.4?

hmm... I looks like Ros_CtrlGroup_GetEncoderTemperature is not actually used. I suspect this was copied from MotoROS1 in anticipation of future functionality. We should just remove it for now.

We (I) added that about a year ago. Preparation for publishing controller statistics.

from motoros2.

robinsonmm avatar robinsonmm commented on July 16, 2024

@gavanderhoorn our DX200 is NOT on a track.

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

@robinsonmm: then it would be great if you could perhaps also test the alpha1 binary linked in #49 (comment).

It's expected to not work, but the test would help figure out at which point it breaks.

from motoros2.

ted-miller avatar ted-miller commented on July 16, 2024

wrt #49 (comment)

I did some more "debugging" and got some weird results.

My initial assumption was that there is an problem with the semaphore routines in microxrcedds_client. My thought was that the UXR_LOCK_SESSION was failing in uxr_run_session_until_all_status. So I added some debug broadcasts if those fail. Those broadcasts never happened, so I have to assume that the sems are ok. But at this point, rclc_support_init_with_options is still failing at startup.

So just to get a look at what is failing, I put a broadcast here, where the status-code is checked. When running this build, rclc_support_init_with_options is no longer failing. MotoROS2 initialization completes successfully. (I didn't change anything other than the Ros_Debug_Broadcast.)

However, when I attempt to use any of the CLI utilities, they just freeze up and hang. But I'm not sure whether that's due to failed communication with the robot or because I'm using a Windows Agent and CLI. Frankly, I've seen some oddities with my Windows setup and don't fully trust it.

When I get my Ubuntu machine back, I'll try again to see if it works any better.

But I'm struggling to understand how adding the debug broadcast changed the behavior. I guess it might affect timing a little... but it shouldn't be significant.

from motoros2.

ted-miller avatar ted-miller commented on July 16, 2024

Oh, also rcutils_get_error_string doesn't have any information. It just reports error not set.

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

So just to get a look at what is failing, I put a broadcast here, where the status-code is checked. When running this build, rclc_support_init_with_options is no longer failing. MotoROS2 initialization completes successfully. (I didn't change anything other than the Ros_Debug_Broadcast.)

hm. Maybe some optimisation the compiler can now no longer apply?

Which M+ libmicroros version are you using? The one I shared in #18 (comment), or something else?


Edit: session.c.obj in the build shared in #18 (comment) and the one in the current YRC libmicroros are identical (at least when looking at the uxr_run_session_until_all_status(..) function).


Edit 2: that function calls uxr_millis(..) in multiple places. I'm still not 100% sure the underlying platform code is correct / has the expected resolution on YRC / DX2.

from motoros2.

ted-miller avatar ted-miller commented on July 16, 2024

hm. Maybe some optimisation the compiler can now no longer apply?

Possible. There was once a long time ago that compiler optimizations broke my application. It took me a LONG time to debug that and that's why I always use -O0 for everything.

Which M+ libmicroros version are you using?

I had to build from source to insert my debug broadcasts.

When I get my Ubuntu machine back, I'll try again to see if it works any better.

Yep... my Ubuntu machine is able to list/echo topics just fine. So now I really don't trust my Windows build and I have no idea why the DX200 build is actually working.

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

hm. Maybe some optimisation the compiler can now no longer apply?

Possible. There was once a long time ago that compiler optimizations broke my application. It took me a LONG time to debug that and that's why I always use -O0 for everything.

hmhm.

Which M+ libmicroros version are you using?

I had to build from source to insert my debug broadcasts.

Ok, so that should all be -O0 then.

When I get my Ubuntu machine back, I'll try again to see if it works any better.

Yep... my Ubuntu machine is able to list/echo topics just fine. So now I really don't trust my Windows build and I have no idea why the DX200 build is actually working.

that's 🎉 and 😟 at the same time.

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

Stupid and perhaps unrelated, but sendto(..) is a cancellation point in glibc and on various RTOS. I've not verified whether that's true on VxWorks, but Ros_Debug_BroadcastMsg(..) calls mpSendTo(..). Perhaps calling that allows the scheduler to swap in some other task, something gets updated and that's why it works with the call, but stops working without it?

Would be interesting to see what happens if you replace the Ros_Debug_BroadcastMsg(..) with an mpTaskDelay(1).

from motoros2.

smith-doug avatar smith-doug commented on July 16, 2024

Is it possible to get a Foxy version for the DX200? I don't have the DX200 SDK anymore. Our robot is currently set up for a project using Foxy.

from motoros2.

ted-miller avatar ted-miller commented on July 16, 2024

When I get my Ubuntu machine back, I'll try again to see if it works any better.

Yep... my Ubuntu machine is able to list/echo topics just fine. So now I really don't trust my Windows build and I have no idea why the DX200 build is actually working.

I just did a foxy build (unmodified) and it worked immediately with my Ubuntu agent. I'm wondering if the humble errors were entirely due to my windows agent. I'll need to test a vanilla humble build again tomorrow. (and/or redo my windows setup)

from motoros2.

gavanderhoorn avatar gavanderhoorn commented on July 16, 2024

#61 introduced use of gettimeofday(..) which does not appear to be (directly) supported on DX200.

I've updated the OP.

from motoros2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.