Hi Ruud, Thanks for the answer. I noticed that with your set of commands I cannot see an actual modification of actors position and velocity: this means that, if after your commands I getPosition() or getSpeed() for the "modified" actors, I will then get the same values that I had prior to your list of commands - this is why I need to simulate the step. Sorry, the 'get the final wanted result' in my case means that I can: 1) modify position velocity and acc of each actor that I want (say, actor 1 was at (x, y, v, a) = (1, 1, 1, 1) but I want it at (x, y, v, a) = (2, 3, 4, 5)) 2) when I try to getXXX(), I would then get the values that I wanted for each specific actor (following above, I get (x, y, v, a) = (2, 3, 4, 5) for that specific actor).
Stefano On Wed, Sep 13, 2023 at 4:34 AM Ruud van Gaal <[email protected]> wrote: > Hi Stefano, > > In my case I'm doing this (with SUMO 1.16): > - moveToXY() with 'keepRoute' set mostly to 0 (once I go off-road I get > into trouble if I use any placement bits) > - setSpeed() > - I don't call setAcceleration() (not for a particular reason) > > In sumo-gui this can give slightly shaking vehicles, but I've attributed > that to asynchronicity. Perhaps it's the mismatching acceleration which > would make that better. > I didn't ever use setPreviousSpeed(); perhaps this other order helps, > although I'm not sure how you define 'get the final wanted result' and if > this order would mess that up. > > Cheers, > Ruud > > > On Wed, Sep 13, 2023 at 12:38 AM Stefano Bonasera via sumo-user < > [email protected]> wrote: > >> Hello, >> >> I am trying to modify 1) position 2) velocity and 3) acceleration of each >> actor within my simulation to prescribed values that I chose. >> Sumo version: 1.16.0 - interfaced with flow >> What I currently do is >> ---------------------------- >> for loop over all the actors >> >> self.k.kernel_api.vehicle.setPreviousSpeed( >> vehID=actor_id, >> speed=wanted_velocity - wanted_acceleration*simulation_step) >> >> self.k.vehicle.moveToXY( >> veh_id=actor_id, >> edge_id=actor.edge, >> lane=actor.lane, >> posX=actor.pos_2d[0], >> posY=actor.pos_2d[1], >> angle=self.k.vehicle.get_angle(actor.actor_id), >> keepRoute=1, >> ) >> >> self.k.kernel_api.vehicle.setAcceleration( >> vehID=actor.actor_id, >> acceleration=actor.acceleration * 2, >> duration=self.sim_step) >> >> end for >> >> self.k.simulation.simulation_step() >> -------------------------------------- >> >> With this approach I can successfully set each actor position velocity >> and accelerations to my values. However it seems the success is really >> depending on the sequence of steps (for example setting moveToXY prior to >> setPreviousSpeed results in an unsuccessful final outcome - no error, just >> not getting what I want). >> Therefore, I have the following questions: >> 0) Is what I am doing 1) feasible and 2) sound, given the above mentioned >> sequence of commands? >> 1) I tried to use setSpeed multiple times instead of setPreviousSpeed, >> but it doesn't work. Can you help me understand why? >> 2) It seems weird that I have to double my wanted acceleration (see >> acceleration=actor.acceleration * 2) to get the final wanted result. Why is >> that happening? >> >> Thanks in advance for the help! >> >> -- >> Kind regards, >> Stefano. >> _______________________________________________ >> sumo-user mailing list >> [email protected] >> To unsubscribe from this list, visit >> https://www.eclipse.org/mailman/listinfo/sumo-user >> > -- Kind regards, Stefano.
_______________________________________________ sumo-user mailing list [email protected] To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
