Hi,
I'm looking for someone who would be able to make some amendments to a C program that I have. This program creates a grid based mapping navigation system for a robot with an on board laptop so it is able to plan a route to a destination while avoiding any obstacle that is in its path. Sensors are used to update this map if new objects are placed in front of the robot. I am attaching the C code below Gridnav1.c as well as [login to view URL] which explains what the code does.
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
I require three functions to be updated
1. check_sensors()
2. update_map()
3. move_robot()
1. check_sensors
Serial port COM3 will be required to be opened to receive information from two devantech SRF04 ultrasonic sensors as well as two sharp GP2D02 infrared sensors. These four sensors will send data to the port in turn starting with two 0's which can be used to synchronise the data followed by ultrasonic left, infrared left, ultrasonic right and infrared right. The data is sent out in an 8 bit wide binary word and it will be necessary to be converted into decimal. The information from the ultrasonic sensors must then be converted into metric measurements this is done by dividing by 29 to give the distance in centimeters.
update map()
The map must be updated using the information from the sensors. Only the ultrasonic sensors will be used to update the map. This quite easily done and is detailed in [login to view URL] attached
Move_robot()
A microcore 11 driver module is connected to COM1 parallel port of the laptop with the following connections
D0 = Direction of left motor
D1 = Direction of right motor
D2 = On/Off Left (PWM)
D3 = On/Off Right (PWM)
Two PWM signals must be sent to the microcore 11 driver module to control the speed of the motors. All speed and direction information is calculated by the C program provided so it should not be too difficult. The following website gives an example of how to do this on page 9 <[login to view URL]>
The datasheet for the microcore 11 driver module is attached.
Infrared sensors
The data from the infrared sensors will range from 255-0. With 255 being the closest to the sensor and 0 being the furthest away. I am hoping that the infrared sensors can be used to navigate the robot when an object becomes very close to robot (below 12 cm = 100 inputted by sensor) as they are very accurate. I'm not sure how this would be done perhaps
object to left = move right
object to right = move left
object to left and right = reverse
Maybe you might have an idea of how best to do this but if you can do the rest of the project and not this part that that’s fine. Finally I need this project done as soon as possible so if you’re interested make sure to contact me as quickly as you can.
## Platform
Borland C++ 5.02