Asked — Edited

My New Project?

I'd like to ask the group for some input on what my next software project should be. Here is my list of software project currently:

1.) Automated learning for EZ-Face (to make it easier to train faces during run time) 2.) An Instant Message type chat interface to ARC (this would allow you to chat with ARC and your robot through text chat rather than speech. I invision this used more for children or adults with disabilities.) 3.) A KITT Knight Rider voice screen and data display for ARC (this would display the text-to-speech in a graphic display) 4.) An IronMan Jarvis voice and data display interface for ARC (this would provide a sort of Jarvis themed front end for ARC) 5.) An Email interface for ARC (so ARC can send and recieve emails with text messages and file attachments) 6.) Weather interface for ARC (so ARC can pull weather data and report on condition) 7.) An Amber Alert feed for ARC (not very practicle, but it might be cool to feed in Amber Alert (A US based child in danager alert system) data to ARC with a possible integration with EZ-Face that on the off chance that your robot spots a missing child, it would recognize them based on the Amber Alert) 8.) Roborealm interface with ARC (Roborealm for $50 really does a lot of neat video processing and hopefully they will integrate an interface for EZ-Robot, but I'd like to make my own until they do because the features in Roborealm I really like are locating a laser, finding the floor, path finding and most importantly Object Recogntion!)

As I work on these, I plan to integrate them with ARC just like I did for EZ-Face and I plan to make them open source, just like EZ-Face.

I would like your input on which ones you'd like to see first and would want to use with your robot.

Thanks! :)


ARC Pro

Upgrade to ARC Pro

Stay on the cutting edge of robotics with ARC Pro, guaranteeing that your robot is always ahead of the game.

#1  

@JustinRatliff I like the weather interface idea, roborealm interface and the Ironman Jarvis voice, or maybe even a female robotic voice of some kind. Looks like you got your work cut out for you on all the things you want to do :-}

#2  

For most of us iRobot (Create, Roomba) owners, I would think a room mapping application would be really nice.

#3  

Justin, I like the automated learning idea for EZ Face. Great program, any improvement features would be an added plus. I frequently use the RSS feed from RICH. A weather interface would also be useful and practical. An Ironman or Woman voice and data display sounds interesting. I would use the female voice. Not sure if you mean like an A.I.? I agree with Robot-Doc, any navigation system for IRobot Create and Roomba users would be nice. The EZB4 will have send and receive serial commands. I currently can send serial commands to Create having it move calculating angles and distance in realtime, but I will need help with an interface that can translate data from the Create with the new EZB4. There was also talk about an EZ Robot navigation system. An interface program that could fully communicate with these Irobot platforms would be very welcomed and a users dream. Thank you, Steve S

United Kingdom
#4  

I got to Weather Interface and just wanted to say that I have already successfully added weather to my Jarvis/ARC using Weather Underground's API. While I don't currently use ARC for this as my "other software" handles this better (better parsing of the information) I have got a script (somewhere) where it requests the info and speaks it. I'll see if I can dig out the info on it to help you with yours.

Here's Jarvis dynamically responding to me telling him I'm going out, based on the weather report (using Weather Underground's API)

And here's Jarvis giving the weather report (visually and verbally)

If I have time later I'll dig out my notes on the api etc. In my opinion, weather underground is the best of the weather report apis out there. It's also what I use on a few other things (such as my heating control which compensates for the weather conditions so in reality I need it to be fairly accurate)

#5  

I'm all for the room mapping and the Jarvis Front end.

Im actually using a jarvis application i helped develop for the AI core of my bot. it's kinda similar to rich's. With it i can carry on conversations, check internet sites, run searches, and control different appliances and lighting in my apartment through a z-wave system i have set up. it doesn't integrate directly with ARC though which would be an awesome feature.

#6  

Rich, the Weather Underground's API looks interesting. Are you building your custom Jarvis app in .Net or something else? I was learning towards using Google weather call function. I was going to use Google's email interface as well for sending and recieving email. I know EZ-Robot has a Twitter interface, but I thought an email interface would be more private. I think it would be cool for people to have their robot email them on condition around the house or if it needs help. Likewise you could send your robot an email to issue it a command. And I know there are several other ways to do that, I just really like the idea of an email interface.

Our robots could email eachother too, LOL. :D

United Kingdom
#7  

I'm just learning C# so using Jarvis as the examples. I wont claim to be anything more than just a beginner at this stage. I have used other software (vox commando, event ghost) for a few years to run Jarvis with the Wunder API plugins.

At this stage I'm just studying other peoples code or modifying it to suit my needs and get familiar with C#. Heres some, slightly modified code for a quick wunder api app.

// Example Wunderground API test code for C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Xml;
using System.IO;

namespace Wunderground_API_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            //Start program
            Console.WriteLine("Starting Weather Undeground Web API Test...");
            string wunderground_key = "XXXXXXXXXXXXXX"; // You'll need to goto http://www.wunderground.com/weather/api/, and get a key to use the API.

            parse("http://api.wunderground.com/api/" + wunderground_key + "/conditions/q/UK/Cheltenham.xml");


            // End.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }

        //Takes a url request to wunderground, parses it, and displays the data.
        private static void parse(string input_xml)
        {
            //Variables
            string place = "";
            string obs_time = "";
            string weather1 = "";
            string temperature_string = "";
            string relative_humidity = "";
            string wind_string = "";
            string pressure_mb = "";
            string dewpoint_string = "";
            string visibility_km = "";
            string latitude = "";
            string longitude = "";
            string feelslike = "";

            var cli = new WebClient();
            string weather = cli.DownloadString(input_xml);

            using (XmlReader reader = XmlReader.Create(new StringReader(weather)))
            {
                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            if (reader.Name.Equals("full"))
                            {
                                reader.Read();
                                place = reader.Value;
                            }
                            else if (reader.Name.Equals("observation_time"))
                            {
                                reader.Read();
                                obs_time = reader.Value;
                            }
                            else if (reader.Name.Equals("weather"))
                            {
                                reader.Read();
                                weather1 = reader.Value;
                            }
                            else if (reader.Name.Equals("temp_c"))
                            {
                                reader.Read();
                                temperature_string = reader.Value;
                            }
                            else if (reader.Name.Equals("relative_humidity"))
                            {
                                reader.Read();
                                relative_humidity = reader.Value;
                            }
                            else if (reader.Name.Equals("wind_string"))
                            {
                                reader.Read();
                                wind_string = reader.Value;
                            }
                            else if (reader.Name.Equals("pressure_mb"))
                            {
                                reader.Read();
                                pressure_mb = reader.Value;
                            }
                            else if (reader.Name.Equals("dewpoint_string"))
                            {
                                reader.Read();
                                dewpoint_string = reader.Value;
                            }
                            else if (reader.Name.Equals("visibility_km"))
                            {
                                reader.Read();
                                visibility_km = reader.Value;
                            }
                            else if (reader.Name.Equals("latitude"))
                            {
                                reader.Read();
                                latitude = reader.Value;
                            }
                            else if (reader.Name.Equals("longitude"))
                            {
                                reader.Read();
                                longitude = reader.Value;
                            }
                            else if (reader.Name.Equals("feelslike_c"))
                            {
                                reader.Read();
                                feelslike = reader.Value;
                            }

                            break;
                    }
                }
            }

            Console.WriteLine("********************");
            Console.WriteLine("Place:             " + place);
            Console.WriteLine("Observation Time:  " + obs_time);
            Console.WriteLine("Weather:           " + weather1);
            Console.WriteLine("Temperature:       " + temperature_string + "°C");
            Console.WriteLine("Feels Like:        " + feelslike + "°C");
            Console.WriteLine("Relative Humidity: " + relative_humidity);
            Console.WriteLine("Wind:              " + wind_string);
            Console.WriteLine("Pressure (mb):     " + pressure_mb);
            Console.WriteLine("Dewpoint:          " + dewpoint_string);
            Console.WriteLine("Visibility (km):   " + visibility_km);
            Console.WriteLine("Location:          " + longitude + ", " + latitude);
        }

    }
}

I'm sure that would be very simple to pass the details through to ARC.

Basically, it just needs something to parse the XML. Here is an example XML of the weather report I just asked for;

Quote:

<response> <version>0.1</version> <termsofService> http://www.wunderground.com/weather/api/d/terms.html </termsofService> <features> <feature>conditions</feature> </features> <current_observation> <image> <url> http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png </url> <title>Weather Underground</title> <link>http://www.wunderground.com</link>; </image> <display_location> <full>Cheltenham, United Kingdom</full> <city>Cheltenham</city> <state/> <state_name>United Kingdom</state_name> <country>UK</country> <country_iso3166>GB</country_iso3166> <zip>00000</zip> <magic>7</magic> <wmo>03633</wmo> <latitude>51.90000153</latitude> <longitude>-2.08333302</longitude> <elevation>62.00000000</elevation> </display_location> <observation_location> <full>Lansdown - G4GVZ, Cheltenham, GLOUCESTERSHIRE</full> <city>Lansdown - G4GVZ, Cheltenham</city> <state>GLOUCESTERSHIRE</state> <country>UNITED KINGDOM</country> <country_iso3166>GB</country_iso3166> <latitude>51.894821</latitude> <longitude>-2.089248</longitude> <elevation>243 ft</elevation> </observation_location> <estimated></estimated> <station_id>IGLOUCES14</station_id> <observation_time>Last Updated on March 19, 10:25 PM GMT</observation_time> <observation_time_rfc822>Wed, 19 Mar 2014 22:25:20 +0000</observation_time_rfc822> <observation_epoch>1395267920</observation_epoch> <local_time_rfc822>Wed, 19 Mar 2014 22:25:36 +0000</local_time_rfc822> <local_epoch>1395267936</local_epoch> <local_tz_short>GMT</local_tz_short> <local_tz_long>Europe/London</local_tz_long> <local_tz_offset>+0000</local_tz_offset> <weather>Scattered Clouds</weather> <temperature_string>47.5 F (8.6 C)</temperature_string> <temp_f>47.5</temp_f> <temp_c>8.6</temp_c> <relative_humidity>91%</relative_humidity> <wind_string>Calm</wind_string> <wind_dir>WSW</wind_dir> <wind_degrees>247</wind_degrees> <wind_mph>0.0</wind_mph> <wind_gust_mph>17.0</wind_gust_mph> <wind_kph>0.0</wind_kph> <wind_gust_kph>27.4</wind_gust_kph> <pressure_mb>1019</pressure_mb> <pressure_in>30.09</pressure_in> <pressure_trend>+</pressure_trend> <dewpoint_string>45 F (7 C)</dewpoint_string> <dewpoint_f>45</dewpoint_f> <dewpoint_c>7</dewpoint_c> <heat_index_string>NA</heat_index_string> <heat_index_f>NA</heat_index_f> <heat_index_c>NA</heat_index_c> <windchill_string>48 F (9 C)</windchill_string> <windchill_f>48</windchill_f> <windchill_c>9</windchill_c> <feelslike_string>48 F (9 C)</feelslike_string> <feelslike_f>48</feelslike_f> <feelslike_c>9</feelslike_c> <visibility_mi>6.2</visibility_mi> <visibility_km>10.0</visibility_km> <solarradiation/> <UV>0</UV> <precip_1hr_string>0.00 in ( 0 mm)</precip_1hr_string> <precip_1hr_in>0.00</precip_1hr_in> <precip_1hr_metric>0</precip_1hr_metric> <precip_today_string>0.00 in (0 mm)</precip_today_string> <precip_today_in>0.00</precip_today_in> <precip_today_metric>0</precip_today_metric> <icon>partlycloudy</icon> <icon_url>http://icons-ak.wxug.com/i/c/k/nt_partlycloudy.gif</icon_url>; <forecast_url> http://www.wunderground.com/global/stations/03633.html </forecast_url> <history_url> http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IGLOUCES14 </history_url> <ob_url> http://www.wunderground.com/cgi-bin/findweather/getForecast?query=51.894821,-2.089248 </ob_url> </current_observation> </response>

#8  

I vote for 1.) Automated learning for EZ-Face (to make it easier to train faces during run time)