-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for FS100 #19
Comments
Added this to the Untargeted milestone, as this is |
As an update: I've started working on this. YEU provided me with an FS100 -- thank you @yeu-buchholz and colleagues 👍 💯 🤖 🍻 No guarantees -- the FS100 is an old platform and in some ways more limited than the YRC1 and DX2. I've got the binary starting up successfully, but am running into issues which seem to point to problems with the RMW and/or memory management. I'll open a (draft) PR if/when it makes sense. |
@destogl FYI also (we discussed this at the RIC23). |
Update: seems there are some more endianness issues to resolve: micro-ROS/micro-ROS-Agent#197 (comment). |
Hi @saahu27.
great. We're always looking for more community participation.
unless you feel what you're doing is (highly) sensitive, I'd suggest starting a discussion on the Discussion forum. At the moment I'm debugging some endianess issues, as you can read in my previous #19 (comment). I expect basic MotoROS2 to work on FS100 once those get fixed (ie: publications and IO services, no motion yet). But no guarantees. |
I have learnt a lot on how to use ros from your previous contributions for universal robots and i feel very happy to have interacted with you.Thank you for your response. I was not able to express myself clearly earlier. i wanted to request to drop your email so i can get in touch with you. Nothing that i do is classified i wanted some help on how to go about controlling the motoman 100fs using ROS 2 and Move it2. |
nothing personal, but I try to avoid discussing ROS topics in private emails if at all possible. Most of my work is open-source, and I'd like to be able to reuse diagnostic sessions and discussions as much as possible as well.
great, looking forward to it. |
Coming back to this (after a long time): I believe I In addition to topics, services now also seem to work, but I've yet to test something more complex than If it works, it would be the last major hurdle for a bare-bones FS100 version of MotoROS2, although we'd most likely not be able to use the Edit: the approach only works with a little-endian Agent. As most ROS 2 users would be using If we'd want/need more flexibility -- like runtime detection and configuration -- we'd probably need a more fundamental solution. Edit 2: Just tested Edit 3: diff showing the changes that appear to be working: micro-ROS/rmw_microxrcedds@humble...gavanderhoorn:rmw-microxrcedds:le_temp_test. (reminder: rebase this on-top of micro-ROS/rmw_microxrcedds@3.0.0...3.0.2) |
I've got quite some parts of MotoROS2 disabled for this FS100 test and it shows: |
Turns out the FS100 does support SRAM (at least according to Lines 788 to 791 in 10d8f00
and some others to no longer treat the FS100 like the DX200. |
Current state: main...gavanderhoorn:motoros2:fs100_support. Works like the YRC1 version, including updating config file from USB and storing it in SRAM. Number of patches needed is actually quite limited. About half of them add bits and pieces to the build scripts and project configuration for FS100 support. And the other half Main difference: I'm also seeing the |
Test build: NOTE: this is not production ready and for testing purposes only. |
Can you elaborate on this? (Perhaps you already discussed in another thread, but I can't remember.) I know the M+ docs explicitly state there are limits to static memory. But we've blatantly ignored that for DX2 and YRC1, and everything works. Have you experienced issues on the FS? |
I seem to remember to have tried keeping the static buffer at its 'normal' size and seeing loading errors. But that was a long time ago when there were multiple other issues. I just re-enabled 'everything' and the node still comes up. I can start the point queue mode, PP shows servo power is on (virtual, as I have no real hw) and the service returns success. Haven't tried moving the virtual robot yet. Need to try with the buffer at normal capacity and see if that still loads. Controller does have enough memory free btw (about 16 MB if I interpret the stats correctly), just not in the M+ partition. |
I've got a guy who should be able to do some testing the week after next. He's completely new to all this, so it'll take a bit to get up to speed. But I'm hoping to have him start helping with the issues-list. (I know I've said that like 4 or 5 times now. So, who knows if it'll actually happen.) |
@ted-miller: did you / your colleague get a chance to test the alpha I posted? |
No.
... yeeeaaahhhh.... |
@gavanderhoorn |
I'll have to build that specifically, as my FS100 here only has a virtual robot 'connected'. Probably tomorrow. |
So does that mean you already have |
No, there just isn't any manipulator connected. I can't check right now, but I guess it's configured for virtual hw (rotary). The build in #19 (comment) does not have It also doesn't have 'everything enabled'. I did that after I posted that build. |
@ted-miller: I'm not near my FS100 right now, so can't test, but I believe this should at least start and let you interact with it. Things missing are: FJT server, Edit: and a version with the FJT and This also has the static buffer at Edit 2: and a version of
|
I'm getting immediate deserialization errors. But I think my agent might be old. I'll update in the morning. |
Hm. How old is your Agent? I use Just tested What sort of PC are you using to run the Agent? I'm making some assumptions about endianness, word size, etc which may not be true on your side.
Edit: might be that Edit 2: ok, so Only Edit 3: reducing the static buffer to 1MB makes Still can't call |
@ted-miller: please try this build: Has a reduced static buffer (1MB), but everything is enabled (except Loads successfully on my FS100 here. No I can also call Have not tested executing any trajectories yet. @gavanderhoorn wrote:
I forgot to (re)add |
👍
The flash on the FS100 is just really slow. Loading/running directly from USB (fi) is much, much faster. (I'm not claiming 'this is fine', just identifying the most likely cause here) There aren't many options for reducing the binary size I haven't considered I believe, but I do have one or two more ideas. It wouldn't be too pretty though.
O, right. That might not actually be enabled in this build .. re: I'll check again whether there is something not right with the (de)serialisation. I am doing some not-exactly-as-they-should-be-done things.
hm. Not sure what that would be. As I wrote above: this isn't dummy servo mode.
Couldn't you put the FS100 you're testing with now in 'virtual hw' mode? MotoROS2 would not know the difference in that case. Mine is configured like that, and it all just behaves as-if there is an actual manipulator connected.
Might be the same cause. Could you perhaps make a wireshark capture? |
I'm not sure we're on the same page. My current FS100 is in 'virtual' (dummy) mode. I don't have an arm attached. So, when MR2 attempts to read the feedback position, it will always return 0. I'm saying that I need to test again on a physical arm to see if that's indeed the problem. The |
Ah, right. I conflated a couple of things. Ok:
Line 1053 in 5f8c800
I suspect/hope this now makes things 'move' again. |
/tf is static: EDIT: To clarify, this is with |
Regarding /tf, I'm an idiot... my terminal was small and I wasn't seeing the whole message. I was just looking at flange > tcp0. tf is working fine. |
For |
Nice. Have you tried the FJT action server? |
Yes. Both the FJT and Queue seemed to work. I didn't have a visualization of an arm setup. But I saw the correct axes moving on the pendant display. |
Thanks for testing. I'll clean up the branch a little and open a PR tomorrow. Seems like we have a sufficient level of functionality to consider adding FS1 support to mainline. |
I've opened #227 as a first draft. |
tasks:
libmicroros
.mps
)MotoROS_PlatformLib
binaryParameterExtraction
binarympCtrlGrpNo2GrpId(..)
(see 06e7eb2 and 032bcb4)mpGetEncoderTemp
(not available on FS100: Support for DX200 controllers #49 (comment))mpGetCalendar(..)
)The text was updated successfully, but these errors were encountered: