Hi Stefano,

Indeed, no changing in vehicle state takes place until you simulate a step.
You would say it's a linear system but I can imagine two methods:

1: v=v+a*dt, p=p+v*dt
2: p=v+v*dt, v=v+a*dt

This may account for a change in your expectations regarding position after
a simulation step. What do you get for position when setting position to
(0,0,0), adding velocity of (1,0,0) and an acceleration of (10,0,0) and
taking a small step?
Note also that I also call Simulation::step(0) to step one-by-one. This
makes it possible to set my own position/velocity (etc) at every step. If I
don't and use Simulation::step(tNow), internally after 1 timestep, SUMO
takes over and starts calculating its own speed etc again. So make sure you
overrule your inputs at every step.

Cheers,
Ruud



On Wed, Sep 13, 2023 at 5:43 PM Stefano Bonasera <[email protected]>
wrote:

> 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

Reply via email to