#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jan 2013
    Posts
    2
    Rep Power
    0

    Wink Vector object collision


    Background:
    We have a robot, we are using a servo with a parallax ir sensor mounted on top which sweeps 180 degrees and populates an array with the range it sees on a microcontroller. This array of ranges containes enough data to extract left and right edges of object in the room. I want to make a simulation using pygame that will simulate data so that hypobots (if you don't know what this is its just statistical hypothetical robot positions) can match to it.

    Python: (using library pygame)
    I want to make an array. (Simulated on a virtual map)
    The array will hold one value per degree from 0 to 180
    The value it holds is the distance vector to the object in the corresponding direction
    The vector should be of length equal to the distance from the origin (later to be a variable location) to the first object it sees at a respective angle.

    For example, if there is an object of width 3, And is in front of us, we will see an array of 9,9,9,9,9,1,1,1,9,9,9,9,9,9

    The 1s are the near distance if the object, the 9's are the distant background

    The core of it:
    How should I go about drawing a vector that terminates as soon as it hits on object?

    -communities like yours are a godsend to people like me, thank you so much for taking the time to go down this path with me please ask any questions because I know there are many losses in communication between electrical and software engineering.
  2. #2
  3. Contributing User
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Aug 2011
    Posts
    4,841
    Rep Power
    480
    Please reconsider.
    Code:
    ...
                                                  ###################################
                                                    #################################
                                                      ###############################
                                                        #############################
                                                          ###########################
                                                            #########################
                                                             ########################
    A flat wall has distance                                   ######################
                                                                #####################
    measured_distance * cosine(angle)                             ###################
                                                                   ##################
                                                                    #################
                                                                     ################
                                                                      ###############
                                                                       ##############
                                                                        #############
    Robot at the X                                                    ###############
    The walls are                                                ####################
    not flat.                                              ##########################
                                                      ###############################
                                                #####################################
                                           ##########################################
                                     ################################################
                                #####################################################
                          ###########################################################
                     ##########              ########################################
               ################  Golem        #######################################
            ###################  obscured        ####################################
    X        ##################  here              ##################################
            ###################                      ################################
               ######################################################################
                     ################################################################
                          ###########################################################
                                #####################################################
                                     ################################################
                                           ##########################################
                                                #####################################
                                                      ###############################
                                                           ##########################
                                                                 ####################
                                                                      ###############
                                                                        #############
                                                                       ##############
                                                                      ###############
                                                                     ################
                                                                    #################
                                                                   ##################
                                                                  ###################
                                                                #####################
                                                               ######################
                                                             ########################
                                                            #########################
                                                          ###########################
                                                        #############################
                                                      ###############################
                                                    #################################
                                                  ###################################
                                               ######################################
                                            #########              ##################
                                         ############  Au           #################
                                     ################              ##################
                                 ####################################################
                            #########################################################
                     ################################################################
     ################################################################################
    #################################################################################
    #################################################################################
    #################################################################################
    #################################################################################
    Computed with j software.
    Code:
    TAU=: 2p1   NB.  Pi is wrong.   http://laughingsquid.com/pi-is-wrong/
    angle=: 12&o.
    deg=: (360 % TAU) * angle
    mag=: 10&o.
    
    A=:>|:(%&2 1x@(1 0x&+))&.>{;~(%~ i:)40
    B=:j./"1 A
    C=:0.9 < mag B
    C=: C (+. (0.1 < mag) *. (_20&< *. <&20)@:deg) B
    C { ' #'
    [code]Code tags[/code] are essential for python code and Makefiles!
  4. #3
  5. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jan 2013
    Posts
    2
    Rep Power
    0

    Yes exactly! b49P23TIvg


    Originally Posted by b49P23TIvg
    Please reconsider.
    Code:
    ...
                                                  ###################################
                                                    #################################
                                                      ###############################
                                                        #############################
                                                          ###########################
                                                            #########################
                                                             ########################
    A flat wall has distance                                   ######################
                                                                #####################
    measured_distance * cosine(angle)                             ###################
                                                                   ##################
                                                                    #################
                                                                     ################
                                                                      ###############
                                                                       ##############
                                                                        #############
    Robot at the X                                                    ###############
    The walls are                                                ####################
    not flat.                                              ##########################
                                                      ###############################
                                                #####################################
                                           ##########################################
                                     ################################################
                                #####################################################
                          ###########################################################
                     ##########              ########################################
               ################  Golem        #######################################
            ###################  obscured        ####################################
    X        ##################  here              ##################################
            ###################                      ################################
               ######################################################################
                     ################################################################
                          ###########################################################
                                #####################################################
                                     ################################################
                                           ##########################################
                                                #####################################
                                                      ###############################
                                                           ##########################
                                                                 ####################
                                                                      ###############
                                                                        #############
                                                                       ##############
                                                                      ###############
                                                                     ################
                                                                    #################
                                                                   ##################
                                                                  ###################
                                                                #####################
                                                               ######################
                                                             ########################
                                                            #########################
                                                          ###########################
                                                        #############################
                                                      ###############################
                                                    #################################
                                                  ###################################
                                               ######################################
                                            #########              ##################
                                         ############  Au           #################
                                     ################              ##################
                                 ####################################################
                            #########################################################
                     ################################################################
     ################################################################################
    #################################################################################
    #################################################################################
    #################################################################################
    #################################################################################
    Computed with j software.
    Code:
    TAU=: 2p1   NB.  Pi is wrong.   http://laughingsquid.com/pi-is-wrong/
    angle=: 12&o.
    deg=: (360 % TAU) * angle
    mag=: 10&o.
    
    A=:>|:(%&2 1x@(1 0x&+))&.>{;~(%~ i:)40
    B=:j./"1 A
    C=:0.9 < mag B
    C=: C (+. (0.1 < mag) *. (_20&< *. <&20)@:deg) B
    C { ' #'
    What a great idea!
    Sometimes a picture is worth a thousand words....

    Here is a to-scale, on the actual-board picture of precisely what I want my python simulation to do.


    http://imageshack.us/photo/my-images/690/examplexm.jpg/




    The green box is the robot
    the downed trees are below the radar and hence invisible
    the blue lines are the vectors I wish to draw.

    I would like the simulation to allow me to drop the bot down anywhere with a click, and then the blue lines are generated.
  6. #4
  7. Contributing User
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Aug 2011
    Posts
    4,841
    Rep Power
    480
    I would use a line drawing algorithm to find the far end of the line. From your drawing I imagine an array specifying surface height at each point in the grid.
    Say your IR distance gauge is at height 7, the algorithm would search along a direction using the line drawing algorithm until it found a grid entry greater than 6. It looks like the topology grid can be much much coarser than the screen resolution. You might not need a particularly great implementation of the line algorithm.
    [code]Code tags[/code] are essential for python code and Makefiles!

IMN logo majestic logo threadwatch logo seochat tools logo