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)
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.
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
Wed Jul 21, 2010 10:57 pm
Philip Experienced Roboteer
Joined: 18 Jun 2004
Posts: 3842
Location: Queensland near Brisbane
The weight advantage seems fair. _________________ So even the rain that falls isn't actually going to fill our dams and our river systems
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.
Joined: 30 Sep 2006
Posts: 673
Location: Perth, Western Australia
I'm somewhat interested... kinda... if I can find some money... QQ _________________ They say that he crossed the fine line, from insanity to genius.
Fri Jul 23, 2010 3:51 pm
seanet1310
Joined: 08 Nov 2006
Posts: 1265
Location: Adelaide
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.
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.
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
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.
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
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
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