www.robowars.org

RoboWars Australia Forum Index -> General Chatter

Towards Autonomous Combat
Goto page 1, 2, 3, 4, 5, 6, 7, 8, 9  Next

Post new topic   Reply to topic
  Author    Thread
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  
Towards Autonomous Combat

So I have been thinking more about autonomous combat and would really like to push it as I think its really the way to involve a wider range of people.

There is a few problems with autonomous robots.
- Firstly its already hard to build a reliable robot let alone
- Autonomy is expensive
- The skill required to build an autonomous robot is fairly high.
- Autonomous fights could end up boring.

I think a lot of these can be overcome and I think if we could have respectable autonomous and non-autonomous matches it would to attract more people interested in building small robots. I think building a autonomous combat robot would be much more fun and interesting than building a line following robot which is what everyone seems to build. There is always robot sumo but that is a little boring and has become more of a competition about who has the best wheels and drive.

Firstly I don't think we will be seeing autonomous robots in any of the larger classes anytime soon but I think there is potential to develop this for the smaller robot classes particularly antweights.

Initially we would probably integrate the autonomous robots into the RC competition and to give incentives for people to build autonomous robots.

My proposal would be:
125% for teleoperated robots
150% for autonomous robots with off board sensors processing.
200% for robots with onboard sensors and processing

So 200% sounds a lot but if we are talking ants by the time you get a few sensors and a microcontroller on there thats probably 75g at least. And even then its probably going to be a bit stupid. (Note these weights do not scale well) A 27kg autonomous feather might be a bit advantaged no matter how stupid it is.

I know most people here are probably not interested in building autonomous robots. As those interested in autonomous bots as a hobby are probably off building line following or sumo robots somewhere else. But I would like to know what peoples thoughts are on integrating autonomous robots into normal competitions.

Would fighting a robot with these sorts of weight advantages be a problem for most people?
Would this add too much complexity to the running of events?
What would be peoples biggest barrier to building something autonomous? (Electronics, programming, time, cost)

Just throwing it out there again.

Steve
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Wed Jul 21, 2010 9:37 pm 
 View user's profile Send private message Send e-mail MSN Messenger
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  
Overcoming Listed Problems

I think that the difficulty of building/programming an autonomous robot could be greatly decreased by incorporating a standardised framework for offboard processing and control.

You may remember an earlier discussion with regards to this.

The framework I would propose is a system which provides robot positional data to a computer which is accessible through an API and also an interface to a PPM signal generator. This signal can then be passed to a transmitter which is bound to the robots receiver.

The positional information can be obtained from a camera. There is two ways to make identifying a robot tractable. One is to place a known identification image on top of the robot, the second is to use IR beacons.

If using a camera the SSL-vision system is the most likely candidate for our needs. This has been developed for the small robot soccer robots and has been set up nicely with templates for the robot images and an API. It is freely available and runs on the ubuntu linux distribution. It is able to identify up to 8 robots simultaneously and can track them at high speeds. The down side of this system is that it currently only works with high end firewire cameras although development is underway on an implementation which will function with low cost usb devices.

The second option is to us IR beacons on the robots. The remaining light spectrum can then be filtered from the camera and the brightest spots represent the beacons. This segmentation has already been implemented on the nintendo wiimote which can conveniently provide the position of 4 IR beacons within its field of view. In order to calculate the position and direction of a robot within a plane at least 3 points must be visible. This means that it is not possible to track 2 robots simultaneously. One possible solution to this is to pulse the IR beacons in each robot allowing detection of individual robots. Another solution is to add an IR pass filter to an IR sensitive webcam and perform the segmentation in software.

Once the position is available this information may be accessed via an API or possibly published via Willow Garages ROS.

To control the robot a USB->PPM interface would be written. A proof of concept interface has already been developed to output set servo commands via a USB-Serial interface. The PPM signal can then be passed to a variety of control modules, such as the HK, Corona, Assan modules. (Haven't looked into DSM/2 [spektrum] modules yet)

These commands could be accessed via an API or ROS.

The main goal of this system is to provide an autonomous control solution for a combat robot with little or no modification of the robot from RC to autonomous.

The current required modifications are:
- An image attached to the top/bottom of the robot for segmentation
or
- An ir beacon attached to the robot.

Edit: Upon further research most transmitters are compatible with PPM signals on the trainer port including the spektrums. HK isn't but you can have that. Also the PCTx module which is popular is only $50 last time I check may have been a few years ago it was much more than that.

Steve
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com


Last edited by marto on Thu Jul 22, 2010 1:25 am; edited 1 time in total

Post Wed Jul 21, 2010 10:07 pm 
 View user's profile Send private message Send e-mail MSN Messenger
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  
Robots Anywhere.

Another advantage of implementing such a framework is the possibility of competing remote in robot combat events.

Streaming video is great but there is generally too much delay in the video stream for real time control due to the size of the data being transmitted. Using a tracking system such as the one described above would allow position and direction information to be streamed to remote competitors with minimal time delay. If this was accompanied by a suitable GUI and low frame rate video streaming competitors would be able to compete remotely with RC or autonomous robots.

The ROS platform has this capability already integrated and if being used to control the robot a VPN connection and an IP address would be all that was necessary to allow access. This would provide a seamless interface for running exactly the same code both locally and remotely to control robots.
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Wed Jul 21, 2010 10:57 pm 
 View user's profile Send private message Send e-mail MSN Messenger
Philip
Experienced Roboteer


Joined: 18 Jun 2004
Posts: 3826
Location: Queensland near Brisbane


 Reply with quote  

The weight advantage seems fair.
_________________
So even the rain that falls isn't actually going to fill our dams and our river systems

Post Thu Jul 22, 2010 4:50 am 
 View user's profile Send private message
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  

Development Goals.

1 - Complete RC Computer interface
2 - Complete Tracking System
3 - Test System with single robot local teleop fights
4 - Test System with single robot remote teleop fights (NSW/Vic ants in QLD comps)
5 - Test out some simple autonomous code
6 - Develop Nice UI to allow noobs to develop simple autonomous robots.
7 - Implement a two robot system

Edit: Looking for volunteers for remote testing if anyone is interested in competing in our QLD ant comps.

Timeline - Goal 1 is currently ~50% complete. Goal 2 is probably the most critical and time consuming. Maybe 2 weekends if I worked just on it. Could probably get it up and running in a month but depends on interest.

Steve
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Fri Jul 23, 2010 12:49 pm 
 View user's profile Send private message Send e-mail MSN Messenger
Fish_in_a_Barrel



Joined: 30 Sep 2006
Posts: 673
Location: Perth, Western Australia


 Reply with quote  

I'm somewhat interested... kinda... if I can find some money... QQ
_________________
They say that he crossed the fine line, from insanity to genius.

Post Fri Jul 23, 2010 3:51 pm 
 View user's profile Send private message MSN Messenger
seanet1310



Joined: 08 Nov 2006
Posts: 1265
Location: Adelaide


 Reply with quote  

i am interested by biggest hold-up would be programming and cost atm
i have a dx6 so hopefully that will work
_________________
Remember to trust me, I am an Engineer.

http://www.youtube.com/watch?v=rp8hvyjZWHs

Post Sat Jul 24, 2010 12:56 pm 
 View user's profile Send private message Send e-mail Yahoo Messenger MSN Messenger
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  

Goal 1 - Status Update

Equipment needed:

    Teensy Microcontroller
    RC Transmitter (I am using HK transmitter but should work others)
    USB mini-B cable
    1K resistor, bit of wire & misc parts


So the basic setup is the Teensy microcontroller is connected to the PC through a USB. It appears on the PC as a virtual serial port. The Teensy generates a PPM signal which is sent to the RC Transmitter. This is then encoded into whatever signal the transmitter is using then sent to the robot.

The PPM signal output is controlled over the serial interface. Sending an $ symbol followed by a number in ascii selects the channel. The % followed by an integer (not encoded in ascii) sets that channel to a value ranging from 0 - 255. This is scaled to the a PPM signal corresponding to 1ms to 2ms on the RC side.

On most radios this signal can be fed in through the trainer port. I do not know the specifics of how this works on other models but it should be fairly straight forward you should just need a common ground and I am using a 1k resistor on the signal line JIC. [*This setup will not affect the signals from the HK radio when in high impedance mode or unplugged, so you can wire this up and then just have a USB cable which you plug in to turn it into a PC interface.]

The HK radio has no trainer option so there is a bit of hacking involved. The internals of the HK radio consist of two main parts a controller board and a transmitter board. The controller board reads in the values from the pots attached to the sticks and then applies mixing, exponential scaling, ect then sends a PPM signal to the transmitter board. There is three wires running between the two a signal, +5v and ground. A common ground and a signal line from the teensy are soldered directly to these wires.

The software for the teensy has been completed and is working. But there is still a few things which could be fixed up. These include better timing code, incorporation of a heartbeat signal for failsafe and interrupts for USB inputs. It is available through a bazaar repository.
(Insert link to repo here)

I am currently writing some software for ROS to receive a RC channels message containing 6 int8 numbers which it then writes to the serial line. This is being written in python and will accompanied by a program to control the channels from the keyboard. I have also written a driver for the Novint Falcon Joystick (google it) and I may include a node which takes info from the joystick to RC. This software is also available through a bazaar repository.
(Insert link to repo here)

Hopefully I can has something working by the end of the week. Though it might take me a bit longer.

Steve
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Sun Jul 25, 2010 1:27 am 
 View user's profile Send private message Send e-mail MSN Messenger
kkeerroo
Experienced Roboteer


Joined: 17 Jun 2004
Posts: 1459
Location: Brisbane


 Reply with quote  

Wow. I wish I could help with some of the programing but I don't get much time to sit in front of a computer anymore.
_________________
Get Some!!!

Secretary of the Queensland Robotics Sports Club inc.

Post Sun Jul 25, 2010 12:07 pm 
 View user's profile Send private message Send e-mail Yahoo Messenger MSN Messenger
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  

Any linux gurus know how to write udev rules?
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Sun Jul 25, 2010 12:19 pm 
 View user's profile Send private message Send e-mail MSN Messenger
Valen
Experienced Roboteer


Joined: 07 Jul 2004
Posts: 4425
Location: Sydney


 Reply with quote  

anything in paticular you are trying to do?
_________________
Mechanical engineers build weapons, civil engineers build targets

Post Sun Jul 25, 2010 5:05 pm 
 View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger ICQ Number
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  

So my rule is as follows.

code:

ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="047a", MODE="0666", SYMLINK+="USBPPM_%n",SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device",  NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"




I am trying to get it to have a static name and I wish to have multiple devices attached. Currently it appears as USBPPM_1 but I can't connect to the device through serial terminal. So not sure....
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Sun Jul 25, 2010 5:45 pm 
 View user's profile Send private message Send e-mail MSN Messenger
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  

Ok sorta got it fixed but I appear to have two symlinks for the one device. But the first one works. Not sure about the second.

code:

ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="047a", MODE="0666", SYMLINK+="USBPPM_%n"




This is my udev rule. Not sure why it makes two but it works so not complaining. Not too sure how I am going to connect for more than one device but will work that out later.

Unfortunately the Teensy microcontroller I was using has been repurposed for another project so will have to order another one before I can keep working too much more.

I also discovered that ROS has a built in driver for the wiimote which makes my life easier if I end up using that to track the robots. So until I order and receive the new teensy I might look at this. I have a wiimote and some IR Leds which I will hook up. I might also look at getting an IR pass filter which I can use on a webcam.

Update: New Teensy modules have been purchased. So hopefully next week can get back into development. My aim is to hack one into my Tx Permanently so I can use it as a bit more of a dedicated development platform.


Steve
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Mon Jul 26, 2010 1:06 am 
 View user's profile Send private message Send e-mail MSN Messenger
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  

Well got my teensy back for use in this project so made it a permanent addition to my TX.





Simply remove back of the TX and connect USB then you are running in PC interface mode. Teensy is powered through USB, while unpowered does not affect TX transmission so works normally.
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Sun Aug 01, 2010 9:39 pm 
 View user's profile Send private message Send e-mail MSN Messenger
marto
Experienced Roboteer


Joined: 08 Jul 2004
Posts: 5443
Location: Brisbane, QLD


 Reply with quote  

So been thinking a bit more about this tonight.

So my current plan is to put 4 Leds on each robot and trigger them @ 5 - 10Hz by a signal on possibly CH5/6. Hopefully the wiimote is able to pick them up fast enough and so then I can switch between two bots at a fast enough rate. This could be a problem for fast robots but hopefully 10Hz is enough in antweight class.

I have some IR leds and teensy micros on the way for this. A bit of a bulky solution but should be easy enough to wire up and test. Got a few ways to do the calcs for the position tracking biggest thing I think I will have to worry about is the change in relative size of the dots as it moves around the surface. Not sure exactly how much of an issue this will be yet but will see.
_________________
Steven Martin
Twisted Constructions
http://www.botbitz.com

Post Mon Aug 02, 2010 11:47 pm 
 View user's profile Send private message Send e-mail MSN Messenger
  Display posts from previous:      

Forum Jump:
Jump to:  

Post new topic   Reply to topic
Page 1 of 9

Goto page 1, 2, 3, 4, 5, 6, 7, 8, 9  Next

Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Last Thread | Next Thread  >
Powered by phpBB: © 2001 phpBB Group
millenniumFalcon Template By Vereor.