Giter Club home page Giter Club logo

sdp's People

Contributors

paulmorio avatar royh avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

paulmorio

sdp's Issues

[Related to 11] : How often to send plans to robot

How often would we like to update a robot of his/her/it's next course of action after it has been given a command such as "Turn 20 degrees to the right and move forwards". If it is too fast it will always have to receive this command and process it, hence the robot will not actually do anything.

If we go along with the idea of acting out on one plan until it is achieved is also clearly flawed, like in the defensive case of shadowing an opponents attacker.

Arduino does not receive serial input whilst the power board is attached.

Tested over both USB and RF. Likely linked to issue #2 where the arduino cannot be programmed whilst the header board is attached.

It is certain that the Arduino is not receiving serial input (rather than receiving and not responding via serial) after testing reflex actions (receive 'MOTORS\n' -> all motors on).

Being able to turn and move based on different parameters.

TLDR:
[MILESTONE2] For the planner I need (will be edited based on whether we have it, or I add more).

  • Ability to turn for a set amount of time, or degree (probably time because of time constraints)
  • Ability to go forwards/backwards for a set amount of time or distance.

Holonomic implementations will have to come a bit later(?)

In detail:
For all plans being made, it is necessary to find the angle in which to turn to and displacement of the ball for each of the robots. This can be done easily by calling the relevant pitch objects methods through the world being used by the planner.

However the problem is when giving commands to the robot in that plan cycle, as curently it is only possible to give commands such as TURN-RIGHT which will make the robot turn towards the right indefinitely until the robot receives a new plan (which might make it turn left, and then the cycle will keep on going). This is the implementation used currently (excerpt below)

    elif (self.mode == 'dog'):

        # If the robot does not have the ball, it should go to the ball.
        if (self.state == 'noBall'):
            # Get the ball position so that we may find the angle to align with it, as well as the displacement
            ball_x = self.world._ball.x()
            ball_y = self.world._ball.y()

            angle_to_turn_to = self.bot.get_rotation_to_point(ball_x,ball_y)
            distance_to_move = self.bot.get_displacement_to_point(ball_x, ball_y)

            dir_to_turn = get_rotation_direction(self.world._ball)

            # We command the robot turn to the ball, and move forward if it is facing it.
            # This is implementation is deeply simplified (but works)
            bot_rotate_or_move(dir_to_turn)

As information can be calculated in the planner (like how much to turn, how much to go forward, etc.) it would be advantageous to be able to pass commands that utilise this information. So something like:

    elif (self.mode == 'dog'):

        # If the robot does not have the ball, it should go to the ball.
        if (self.state == 'noBall'):
            # Get the ball position so that we may find the angle to align with it, as well as the displacement
            ball_x = self.world._ball.x()
            ball_y = self.world._ball.y()

            angle_to_turn_to = self.bot.get_rotation_to_point(ball_x,ball_y)
            distance_to_move = self.bot.get_displacement_to_point(ball_x, ball_y)

            dir_to_turn = get_rotation_direction(self.world._ball)

            # We command the robot turn to the ball, and move forward if it is facing it.
            bot_rotate_or_move(dir_to_turn, angle_to_turn_to, distance_to_move)

Grabber redesign

The existing grabber is not ideal. It often struggles to push the ball into the robot's grasp and depends too much on battery life to do so (no clutch gears -> can't drive the motor for too long).

Ball visibility is also poor, particularly with there being yellow pieces on the arm of the grabber.

Low battery also results in the grabber sagging as it often does not reach a point where it can stay open beneath its own weight.

Unable to program Arduino whilst attached via RF

This is likely an issue with the configuration of the SRF stick and Xino RF chip, particularly with the node settings.

AVRDude returns the following error:
avrdude: ser_recv(): programmer is not responding avrdude: stk500_recv(): programmer is not responding

RGB calibration in vision UI

May be worth investing in a new UI at the same time. The OpenCV kit is very limited where e.g. pyqt would allow for something much better.

Planner throws recursion cap error sometimes on init

This is an issue with the alternating bit implementation.

If the planner is terminated while the robot is expecting bit 1 then it will not start again until the robot expected bit 0 - so a workaround is to reboot the robot whenever rebooting the planner.

I can fix this but the fix will be quite intrusive so I'm leaving it for now.

Main camera GUI overlay visible on calibration view

The processed image displayed by the main GUI (with FPS counter, lines, boxes etc) is being fed back in to the calibration GUI, making calibration slightly tricky. Calibration image should be taken before any overlay is applied, but after any pre-processing takes place - presumably being done in the wrong order?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.