Comments (21)
Happy to help. I am okay with incorrect TFs.
from motoros2.
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.
from motoros2.
@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.
@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.
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.
@acbuynak: if you would be ok with incorrect TFs for now, we'd gladly take you up on that offer.
from motoros2.
Missing mpGetEncoderTemp
.
from motoros2.
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.
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.
@gavanderhoorn our DX200 is NOT on a track.
from motoros2.
@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.
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.
Oh, also rcutils_get_error_string
doesn't have any information. It just reports error not set
.
from motoros2.
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.
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.
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.
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.
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.
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.
#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)
- Previously generated INFORM job detected as invalid on next boot HOT 10
- Incorrect TF broadcast for robots-on-tracks HOT 6
- Suggestion: create separate 'tests' VS project
- Alarm `4229[40]` (`ETHERNET PROCESS ERROR`) with MR2 installed, but LAN not connected HOT 13
- MH900 axis configuration won't work HOT 9
- Unexpected `8011[63]` (`Invalid motion type`) (YRC, GP25, linear track) HOT 5
- Add support for controller variable read/write HOT 2
- Unclear message in `ResetError` response for major alarms
- Investigate how to best make use of F/T data on HC platforms HOT 16
- mpExRcsIncrementMove is constantly sending zero pulse increments after each motion
- Incorrect error message for StartTrajMode
- `/tf` incorrect on `R1+R2+B1+B2` configuration HOT 1
- Use `mpGetFBPulsePosEx` instead of `mpGetFBPulsePos` HOT 4
- Cycle-switch-mode during setup procedure HOT 8
- Compatibility with "Absolute Accuracy Compensation" HOT 20
- Document compatibility with the Absolute Accuracy Compensation feature HOT 1
- Missing check for energy-savings mode HOT 1
- `Ros_MotionControl_ValidateMotionModeIsOk()` should only check, not act HOT 1
- `Must call queue_traj_point service` returned when motion mode is not 'streaming' HOT 2
- Controlling two Yaskawa Robots via Moveit
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from motoros2.