Asked — Edited

Multiple Robots

I know this topic has been done to death. I know this because I have been reading posts on it until I'm bleary eyed. Out of all the posts I have read there have been some concrete answers and some iffy so I've decided to add yet another to that long list of posts and just ask straight up.

I've only just ordered more EZB4s and some other parts so I won't be able to actually test out anything for at least another month, but I would like to do prep work in the meantime. To do this I need answers on using multiple robots, all under client mode AND using the same ARC instance.

What I gleaned from the posts: You can only send Say commands to the first robot connected. You can set Uart and associated commands on a per board basis. You can send servo commands on a per board basis.

What is not clear: Do all (or any for that matter) Control Commands take an optional board number in the first value position of the arguments? If they do, does that work for anything sent, such as Auto-Position actions? If you sent a Say command via a ControlCommand() would you then be able to route it to other robots? For example, having it in a script such as: Script name is "SayThePhrase" This script is part of a Script Manager called "Base Commands"

The SayThePhrase script is simply:


SayEZB($PhraseToSay)

In turn this can allow for the Control Command:


$PhraseToSay ="hello world"
CC("Base Commands",ScriptStartWait,"SayThePhrase")

#Now, adding a Board Index to it:
$PhraseToSay ="hello world"
CC(2,"Base Commands",ScriptStartWait,"SayThePhrase")

Will that work to robot 2?

Or something like this:


CC(2,"Auto Position",AutoPositionAction,"Move Forward")

Will that automatically route the Action "Move Forward" to robot 2?

Or would you have to create a script that had in it all the servo moves to make Move Forward happen, with the servo instructions having a board number in the first argument position. Then send that via a ControlCommand() (without a board number)?


ARC Pro

Upgrade to ARC Pro

Subscribe to ARC Pro, and your robot will become a canvas for your imagination, limited only by your creativity.

United Kingdom
#1  

@WBS.

I figured I'd bump this thread for you as there's been no response. I don't really know much about connecting multiple v4's to a single project as it's not something I have tried. Apart from what you have mentioned, I know that having a Movement Panel will only work on one board for example. I don't think you can add a board number to the beginning of a ControlCommand() or parse speech to another board, unless someone else knows otherwise. Of course, running 2 instances of ARC would get around this but I gather that's not what you want for your project

This interests me as I plan to have 2 EZ-B's connected together in my E4-B4 project, so would be nice if there was a definitive list of what functions can and cannot be parsed to another board. Sorry I can't be of more help.

#2  

I remember seeing posts on this, but I don't remember what was concluded. I'll investigate this a little bit myself.

#3  

@SteveG Thanks so much for bumping the thread. So far it seems like there are only a couple of things you can send on a per-board basis. Though a post I ran across seems to indicate that you can have more than one camera's video sent via the same WiFi link. And, as I found after I saw that, there is the fact that you can have more than 1 camera control in a given instance of ARC. So I seem to have been wrong about that in my original post (I've removed that paragraph since).

#4  

@WBS

Makes so much sense to be able to use indexes as there is one per IP address. Otherwise, why design ARC to be able to connect to multiple IPs?

Looking forward to learning more about this. Lots of potential for advanced stuff.

Ron

United Kingdom
#5  

@WBS.

No problem about the thread bump. I'm surprised nobody replied. The camera thing sounds right as it uses its own IP address, so running 2 camera makes sense in this regard.

I think creating a script with all the servo moves to make movements with the servo instructions using a ControlCommand() is the only real option here.