Welcome to Synthiam!

Program robots using technologies created from industry experts. ARC is our free-to-use robot programming software that makes features like vision recognition, navigation and artificial intelligence easy.

Get Started
Asked — Edited

Irobot Create Movement Panel Firmware Update! :(

Alright so, before I updated the firmware I was able to move my Irobot wirelessly via EZ-b. This older version had an option for ports and now it is gone. I used to use D-8 and now it looks like its preset on D-0. Im stuck and so is my robot! Please help ASAP. This is a senior project.. *eek*

I tried moving my servo cable to D-0 but I had to kind of jam it in.

#3  
DJ,

Port D0 doesn't work on i-robot create 2 but port D5 does. Would it be possible to add port D5 to the port options for the roomba control panel and if not what is the reasoning behind this? Port D5 (uart 1) works great at 115 kbaud and port D0 does not, at least for the i-robot create 2. Any reply would be much appreciated even if it is not what I want to hear. Just would like to know your reasoning on this issue ! Rick *stress*
#4  
@rbonari The beauty of ARC is there is always a workaround... I wrote my own code (in the custom movement panel) to control the Roombas... If things are not working right for you, just program it the way you want it yourself. See my example (attached). Controlling the Create 2 is very easy if you take the time to do it .... We can't do everything for you. No offence but eventually you are going to have to learn to do some of this stuff yourself....
Create_2_Example.EZB
The above ARC file works perfectly with the Create 2 (I just re-tested it 2 minutes ago).... The above example uses UART port 0, but you can use any of the UART ports as long as you change the appropriate sections in the code to reflect it. I use the UART port because I wanted to receive sensor data from the Create not just send it commands....

Why do you need to use D0? The UART ports are a much better option because they can receive data as well... You'll notice I use a custom Movement Panel in my Create 2 example... I encourage you to do the same because it is much more (as the name suggests) customizable.
Create_2_Example.EZB
#5  
Hello Richard,

Thanks much for your reply. I'm not using port D0. I tried to use the roomba control panel in ARC that only allows D0. It does not work with my create2 at 115 Kb and D0 port is the only option we have. I tried all options in the ARC roomba control and nothing worked.

Before receiving your reply I had already successfully programmed control of create 2 using port D5 (uart 1) at 115 Kb.

The issue is that I wanted to use the nifty roomba panel in ARC but for some reason DJ won't add the uart ports to the port selection options in the ARC control for roomba, and won't respond to me regarding this issue. Seems it would be easy to add these port selections. Apparently other ports were included in the roomba control at one time but they were removed apparently because they didn't work at 115 Kb which doesn't make sense. Seems the uart ports would work much better. Just really curious about this decision to not include the uart ports?

By the way Richard, have you run into the issue of create 2 going to sleep after @5 minutes of activity? I know that in the FULL mode (132) the create 2 won't sleep, but it also won't charge the battery and of course the power conservation features are disabled. I was considering puting a relay in parallel with the power button (clean) to wake the robot up from its sleep. I have seen where some have pulsed the BRC pin on create 2 every minute to reset the sleep timer but does not seem to work well or reliably. Normally it wouldn't be an issue but my create 2 at times will be unattended for periods of time and be controlled remotely. I need a rock solid method to wake create 2 out of its sleep mode. Your thoughts and experiences with this issue are much appreciated !

Thanks very much for your quick response and for getting your create 2 out to check things out for me. Thanks also for the attachments you have included. I will check them out and compare to what I have. Thanks again Richard !
#6  

Quote:

The issue is that I wanted to use the nifty roomba panel in ARC but for some reason DJ won't add the uart ports to the port selection options in the ARC control for roomba, and won't respond to me regarding this issue.
@DJ has a business to run and can't spoon feed each and everyone of us.... He continues to make changes and add features to ARC which is fantastic... However, he can only do so much... Hence the "plug-in" system... My advice is still to program workarounds for yourself... We're all encouraged to take the initiative and try and solve our own problems as much as possible.... Besides you learn more from doing things yourself, right?... Use the custom Movement Panel and/or scripts and just create your own "niffty" roomba panel... and maybe you can start giving back to the forum now?
I am sure @DJ is aware of your concerns, but I would think he has other major priorities at the moment and I am sure his list isn't getting any shorter....
#7  
Hello Richard,

Thanks for the reply. Evidently you didn't read the rest of my post. I do have a workaround control panel for the Roomba that I coded and it works fine !

Just don't understand what the issue is with the uart ports 1 and 2 not working well at 115 kbaud when the other digital pins will. This is the explanation I am really looking for. And I don't expect to be "spoon fed". I haven't been with ez-robot for very long and don't have the capabilities and expertise that you all have.

I have given back to the community in the sense that I have brought up some issues that others might be interested in too. Don't know how you can make a statement like that? I have also shared my project with the community as best I can using my adventure bot.

The other thing I am well aware of is that DJ is a busy person and he has bigger fish to fry so to speak. Again I'm only asking why uart ports 1 and 2 won't work at 115kbaud like the other digital pins. You don't seem to be able to answere this and apparently DJ is the only one that can. digital port D0 does not work with the Create 2 at 115kbaud.

My final point is that ez-robot products both hardware and software are the best there is and are very awesome. There is alot of awesome capabilities with the ez-robot products and it takes along time to come up to speed and I am very grateful for the help I get in this great community of users. However it serves no purpose to try and be little someone and put them down.

Again, thanks for your help and as soon as I get my project with roomba completed I will be sharing it with the community... Rick
#8  
I read all your posts.... Sharing your project would be awesome.... and that is certainly giving back to the forum....
#9  
Hello Richard,

I have already shared my adventure bot project and replied to other posts so I have already contributed. Certainly not as much as yourself and others but again have only been with ez-robot a short time. Again will share roomba project as it progresses in the future. Maybe I will start another thread to try and get an answere as to why the uart ports 1 and 2 have an issue with 115kbaud. Right now I am using port D5 at 115 kbaud and it works fine where as port D0 doesn't. It seems of all the ports available that the uart ports 0,1 and 2 should work at 115 kbaud. It all stems from DJ's statement above regarding ports and processes. Just want to understand what he means by this better? Thanks again and thanks for the help you have provided..Rick
#10  
I wouldn't open another thread if I were you.... Tomorrow I will try to control my Create 2 using D0 and UART port 1 and 2 (since UART 0 obviously works fine)... I will let you know....

Are you using UART port 1 ( which is D5/D6 with UARTWrite) or SendSerial command on D5?... There is a distinction here...
#11  
Hello Richard,

Thanks much and I appreciate your efforts ! I will get that information and get back with you very soon (within a couple of hours). I created a little mobile app and used the direction buttons for movement and added a script to each of the four directions. Also added buttons to init robot and to go into docking mode, etc. I will check which method I am using to send serial data and get right back to you.

I mentioned also in a previous post above, that there is a pesky issue with the roombas and create robots in that they go to sleep after @ 5 minutes of inactivity. When it is in sleep or off mode the only way you can get it back into OI Mode is to depress power (clean) button and issue (128). In the full mode (132) the robot never sleeps but you can't recharge the battery on the docking station. I have seen where some have used pulsing on the BRC line of the robot every so many minutes but this is messy and doesn't work reliably. I have done some testing and I have come up with a solution that I think will be very reliable. Will use small relay contacts across the power (clean) button and control the relay with a digital output on ez-bv4 controller. I will have to modify the create 2 but that is the fun of it all. Maybe. Again, normally the sleep or stop issue wouldn't be a problem so much but in my application the robot will be operated while I am away from home remotely for periods of time and need a reliable way to deal with the pesky sleep issue. I have come up with what I think is a good hardware/ command structure that will resolve this issue. Would be interested to hear if you have experienced these sleep/stop issues and what you think of my solution?

I will get back with you very soon and again Richard thanks for your help ! Rick
#12  
Richard,

I first init using (uartInit (0,1,115200), then I sleep for 500ms then use (uartWrite (0,1,137,0,100,128,0). This is for the forward command. This seems to work but again have to deal with the sleep issue when not in full mode (132). I use uartWrite to send serial data. Have not tried to get data back from robot on D6 yet.

In the future would still like to try and dig into the roomba Movement Panel in ARC to try and customize it for my needs as an educational exercise. Would I be correct in assuming that I would need the free version of microsoft visual studio and some knowledge of c#? I have some knowledge of c# but it has been a looong time ago. This way I might be able to modify the roomba Movement Panel that maybe could be incorporated into ARC?

Thanks again for your help and quick responses ! Rick
#13  
Ok, so I did some tests and here is what I found.... all the UART ports work perfectly with the Create 2 (I have a Create 1 white version too but have not tested it). However using the SendSerial command (@115200) on ports D0 and D5 gave me issues.... Sometimes the Create would move, sometimes it wouldn't... I usually use the UART ports so this is not really an issue for me.... Saying that I have not tried the sendserial command at 57600 baud with my Create 1 yet....

I find if the create won't charge when issuing a docking command, sending it a reset command (uartWrite(0,0,128,7) after it docks which seems to start the charging cycle...

This is all I got for now... I actually prefer using the old Create 1 because of the better IO interface... For instance you have more access to the wheel encoders. Meaning you can make precise 90 and 180 deg turns or move a certain distance with just commands. Secondly using pin #3 on the 25pin bay port of the Create you can at will (by toggling it high/low) wake up and put the create to sleep.... There are a few more reasons but those 2 are the main reasons I really prefer the old Create model to the new Create 2.... Saying that however, the Create 2 has a much better docking routine.... The Create 1 struggles sometimes to dock properly...
#14  
Hello Richard,

Thanks for all your testing and help ! Am I good to go using uartWrite instead of sendSerial? I would assume so? Also, I modified the Create 2 last night and very carefully soldered a couple of wires to the power switch (clean) and brought the out nicely through the top of the robot. Had to take the create 2 apart but was pretty easy. Brought wires out through one of the screw holes that I left out.

Have you managed to input the data packets and access the various sensor data, etc. With ez-robot scripts. If so it would be helpful to see how you did that. I used the cable that came with create 2 and Realterm on my laptop to try and read the data with no luck. It looks like the command to get the data is (142) but not sure how to read it from ARC script? Any ideas would be helpful.

Thanks again for all your help ! Rick
#15  
I have been able to get at a few sensors, not all at the moment... Below is what I have done. It is specific to my project but I am sure you can adapt it for your use if you wanted to. It's not complete so it probably needs some tweaking...

Bump and IR sensors

Code:


$speed=100
:top
uartWrite(0,0,137,0,$speed,0,0) #forward movement
repeatuntil(0)

uartWrite(0,0,142,45) # Read Roomba IR sensors single byte
sleep(10)

uartWrite(0,0,142,7) # Roomba Bump and wheel drop sensor single byte
sleep(10)

uartWrite(0,0,142,58) # Stasis (Is Rommba moving forward) single byte
sleep(10)

$rx = UartAvailable(0, 0)
if ($rx>2)

# print("Bytes in buffer: " + $rx) checks how many bytes are in the buffer

$RX_DATAd = UARTRead(0, 0, 3) #places all the bytes RX into $RX_DATA
# read 3 data bytes
$RX_0d=GetByteAt($RX_DATAd,0)
$RX_1d=GetByteAt($RX_DATAd,1)
$RX_2d=GetByteAt($RX_DATAd,2)
endif


if ($RX_0d!=0 or $RX_1d!=0)
if ($RX_0d>12 or $RX_1d=1) #ir and bump sensors
uartWrite(0,0,137,0,$speed,0,1) #turn left
sleepRandom(1000,3000)
goto(top)
ELSEif ($RX_0d<12 or $RX_1d=2 )
uartWrite(0,0,137,0,$speed,255,255) #turn right
sleepRandom(1000,3000)
goto(top)
ELSE
uartWrite(0,0,137,255,125,0,0) #reverse
sleepRandom(1000,2000)
uartWrite(0,0,137,0,$speed,255,255) #turn right
sleepRandom(1000,3000)
goto(top)
endif

print($RX_0d+" IR light object detected")
print($RX_1d+" bump detected")
if ($RX_1d>0)
# uartWrite(0,0,137,0,0,0,0) #stop roomba

# halt()
endif
endif


print($RX_0d+" IR light object detected")
print($RX_1d+" bump detected")
print($RX_2d+" Roomba is moving forward")
# uartinit(0, 0, 115200) #have to have this to clear the buffer
sleep(100)
ENDrepeatuntil


Voltage and charge state

Code:


$volt_check=1
$voltage=0
uartinit(0, 0, 115200) #may or may not need
sleep(500)
$dock_flag=0
repeatuntil(IsConnected(0)=0)

$RX_DATA=0
uartWrite(0,0,142,22) # Volatge check
sleep(100)
uartWrite(0,0,142,21) # charge state
sleep(50)
uartWrite(0,0,142,34) # charge source available
sleep(50)
$rx = UartAvailable(0, 0)


if ($rx=4)
$RX_DATA = UARTRead(0, 0, $rx)
$MSB=GetByteAt($RX_DATA,0)
$LSB=GetByteAt($RX_DATA,1)
$Charge=GetByteAt($RX_DATA,2)
$Charge_source=GetByteAt($RX_DATA,3)
$voltage=Round(($LSB+(256*$MSB))/1000,2)

Print("Battery Voltage is: "+$voltage+"V")

$R_batt=abs(17.5-$voltage)
if ($R_batt<1)
$R_batt=1
endif
$R_batt=100/$R_batt
$R_batt=Round($R_batt,0)
print("Charge level = "+$R_batt+"%")


if ($Charge_source = 0)
print("Not Docked")
ELSE
print("Docked")
endif
if ($charge=0)
$dock_flag=0
print("Not charging")
ELSEif ($Charge=1)
$dock_flag=1
print("Recondioning charging")
ELSEif ($Charge=2)
$dock_flag=1
print("Fast charging")
ELSEif ($Charge=3)
$dock_flag=1
print("Trickle charging")
ELSEif ($Charge=4)
# $dock_flag=0
print("Waiting to charge")
ELSEif ($Charge=5)
print("Error not charging/Fault")
halt()
endif

endif
#16  
Thanks much Richard, that helps alot !? Rick
#17  
Hello DJ,

It's not a big issue with me but just wondering if you still plan on coming out with a new Movement Panel for the I-Robot Create/Roomba. You had mentioned previously that you were working on one that works with input as well as output?
Thanks Much.....Rick
PRO
Synthiam
#18  
It's the plan. Rome wasn't built in a day :). Patience young sky walker. As a corporation that's achieved many things to make your robot dreams come true, we obviously have a list of planned deliverables when we say that we'll do something. However, you have to give us time to develop. Ill be stepping away from the forum for a while. lots is delayed because I've been spending too much time here.
#19  
@rbonari

In regards to the waking up a Create 2 from sleep, have you tried the Power Control Toggle pin 3 on the Cargo Bay Connector?

I don't have a Create 2, but that is described as "Turns Create on or off on a low-to-high transition"

User-inserted image


Regards,
Frank
#20  
Thanks DJ, I completely understand.

Faengelm,

The create 2 doesn't have the cargo bay connector so that connector pin isn't available to me. I have resolved the problem of waking the create 2 with a contact closure across the cleaning button controlled by ezb controller. Works very well. Thanks much. Rick
#21  
@rbonari
Thanks for pointing out the lack of a cargo bay connector in the Create 2. I know the Create had one and it was based on the Roomba 400 series that still had the DD line whereas the Create 2 is based on the Roomba 600 series which has replaced that with a BRC line.

I had seen the items removed notice but didn't realize that they took out the whole connector! That is a big change as there were also some interesting features such as battery power @ 1.5 amp

User-inserted image


Thanks,
Frank
#22  
Yes, that battery power at 1.5 amps was a big loss. Just means I will need to go inside and connect heavier guage wire and run from the battery thru a fuse to the outside world. Will use a step down voltage regulator and adust it to about @7.6 volts to power the ezb controller, etc. For my particular project I won't need much power from the create battery. Rick