mirror of
https://gitlab.rlp.net/mobitar/ReCo.jl.git
synced 2024-11-08 22:21:08 +00:00
Added angle2
This commit is contained in:
parent
a922ab9ab5
commit
14302fbe4e
3 changed files with 27 additions and 8 deletions
16
src/Geometry.jl
Normal file
16
src/Geometry.jl
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
module Geometry
|
||||||
|
|
||||||
|
export angle2
|
||||||
|
|
||||||
|
using StaticArrays: SVector
|
||||||
|
|
||||||
|
function angle2(a::SVector{2,Float64}, b::SVector{2,Float64})
|
||||||
|
θ_a = atan(a[2], a[1])
|
||||||
|
θ_b = atan(b[2], b[1])
|
||||||
|
|
||||||
|
θ = θ_b - θ_a
|
||||||
|
|
||||||
|
return rem2pi(θ, RoundNearest)
|
||||||
|
end
|
||||||
|
|
||||||
|
end # module
|
12
src/RL.jl
12
src/RL.jl
|
@ -10,7 +10,7 @@ using LoopVectorization: @turbo
|
||||||
using Random: Random
|
using Random: Random
|
||||||
using ProgressMeter: @showprogress
|
using ProgressMeter: @showprogress
|
||||||
|
|
||||||
using ..ReCo: ReCo, Particle
|
using ..ReCo: ReCo, Particle, angle2
|
||||||
|
|
||||||
const INITIAL_REWARD = 0.0
|
const INITIAL_REWARD = 0.0
|
||||||
|
|
||||||
|
@ -45,10 +45,10 @@ mutable struct EnvParams
|
||||||
function EnvParams(
|
function EnvParams(
|
||||||
min_distance::Float64,
|
min_distance::Float64,
|
||||||
max_distance::Float64;
|
max_distance::Float64;
|
||||||
n_v_actions::Int64=3,
|
n_v_actions::Int64=2,
|
||||||
n_ω_actions::Int64=3,
|
n_ω_actions::Int64=3,
|
||||||
max_v::Float64=80.0,
|
max_v::Float64=80.0,
|
||||||
max_ω::Float64=π / 1.5,
|
max_ω::Float64=π / 2,
|
||||||
n_distance_states::Int64=2,
|
n_distance_states::Int64=2,
|
||||||
n_direction_states::Int64=2,
|
n_direction_states::Int64=2,
|
||||||
)
|
)
|
||||||
|
@ -93,7 +93,7 @@ mutable struct EnvParams
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
direction_range = 0.0:(2 * π / n_direction_states):(2 * π)
|
direction_range = (-π):(2 * π / n_direction_states):π
|
||||||
|
|
||||||
direction_state_space = Vector{DirectionState}(undef, n_direction_states)
|
direction_state_space = Vector{DirectionState}(undef, n_direction_states)
|
||||||
|
|
||||||
|
@ -347,7 +347,7 @@ function post_integration_hook(
|
||||||
min_distance is not infinite, because otherwise
|
min_distance is not infinite, because otherwise
|
||||||
env_direction_state would be nothing and this else block will not be called
|
env_direction_state would be nothing and this else block will not be called
|
||||||
=#
|
=#
|
||||||
direction = acos((r⃗₁₂[1] * co + r⃗₁₂[2] * si) / min_distance)
|
direction = angle2(SVector(co, si), r⃗₁₂)
|
||||||
|
|
||||||
for direction_state in rl_params.env_params.direction_state_space
|
for direction_state in rl_params.env_params.direction_state_space
|
||||||
if direction in direction_state.interval
|
if direction in direction_state.interval
|
||||||
|
@ -422,7 +422,7 @@ function run_rl(;
|
||||||
end
|
end
|
||||||
|
|
||||||
# Episode
|
# Episode
|
||||||
run_sim(
|
ReCo.run_sim(
|
||||||
dir; duration=episode_duration, seed=rand(1:typemax(Int64)), rl_params=rl_params
|
dir; duration=episode_duration, seed=rand(1:typemax(Int64)), rl_params=rl_params
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,12 @@ import Base: wait
|
||||||
include("PreVectors.jl")
|
include("PreVectors.jl")
|
||||||
using .PreVectors
|
using .PreVectors
|
||||||
|
|
||||||
|
include("Geometry.jl")
|
||||||
|
using .Geometry
|
||||||
|
|
||||||
include("Particle.jl")
|
include("Particle.jl")
|
||||||
|
include("data.jl")
|
||||||
|
include("setup.jl")
|
||||||
|
|
||||||
include("Shape.jl")
|
include("Shape.jl")
|
||||||
using .Shape
|
using .Shape
|
||||||
|
@ -26,8 +31,6 @@ using .Shape
|
||||||
include("RL.jl")
|
include("RL.jl")
|
||||||
using .RL
|
using .RL
|
||||||
|
|
||||||
include("data.jl")
|
|
||||||
include("setup.jl")
|
|
||||||
include("simulation.jl")
|
include("simulation.jl")
|
||||||
include("run.jl")
|
include("run.jl")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue