diff --git "a/2019/07/31/2019-07-31-11-21-36\346\224\266\351\233\206/index.html" "b/2019/07/31/2019-07-31-11-21-36\346\224\266\351\233\206/index.html" index 3b2f4f9e..406d2dd6 100644 --- "a/2019/07/31/2019-07-31-11-21-36\346\224\266\351\233\206/index.html" +++ "b/2019/07/31/2019-07-31-11-21-36\346\224\266\351\233\206/index.html" @@ -31,8 +31,8 @@ - + @@ -384,8 +384,8 @@

总结
- +
diff --git "a/2019/08/02/2019-08-02-11-18-32\346\224\266\351\233\206/index.html" "b/2019/08/02/2019-08-02-11-18-32\346\224\266\351\233\206/index.html" index 4d96363c..cbeac47f 100644 --- "a/2019/08/02/2019-08-02-11-18-32\346\224\266\351\233\206/index.html" +++ "b/2019/08/02/2019-08-02-11-18-32\346\224\266\351\233\206/index.html" @@ -30,11 +30,11 @@ - + @@ -318,11 +318,11 @@

- +
diff --git "a/2021/03/10/2021-03-07-\345\221\250\346\227\245-19-28-18\345\221\250\346\225\264\347\220\206/index.html" "b/2021/03/10/2021-03-07-\345\221\250\346\227\245-19-28-18\345\221\250\346\225\264\347\220\206/index.html" index b23d9210..c635ce42 100644 --- "a/2021/03/10/2021-03-07-\345\221\250\346\227\245-19-28-18\345\221\250\346\225\264\347\220\206/index.html" +++ "b/2021/03/10/2021-03-07-\345\221\250\346\227\245-19-28-18\345\221\250\346\225\264\347\220\206/index.html" @@ -31,8 +31,8 @@ - + @@ -304,8 +304,8 @@

- +
diff --git "a/2021/04/20/2021-04-20-\345\221\250\344\272\214-23-40-58UI\347\254\224\350\256\260/index.html" "b/2021/04/20/2021-04-20-\345\221\250\344\272\214-23-40-58UI\347\254\224\350\256\260/index.html" index 1d30f6ff..dfb6e9c4 100644 --- "a/2021/04/20/2021-04-20-\345\221\250\344\272\214-23-40-58UI\347\254\224\350\256\260/index.html" +++ "b/2021/04/20/2021-04-20-\345\221\250\344\272\214-23-40-58UI\347\254\224\350\256\260/index.html" @@ -55,11 +55,11 @@ + + - - @@ -513,11 +513,11 @@

后记
+ + - -
diff --git "a/2021/05/09/2021-05-09-\345\221\250\346\227\245-20-10-28\345\221\250\346\225\264\347\220\206/index.html" "b/2021/05/09/2021-05-09-\345\221\250\346\227\245-20-10-28\345\221\250\346\225\264\347\220\206/index.html" index 5e1325f2..c6a2c85b 100644 --- "a/2021/05/09/2021-05-09-\345\221\250\346\227\245-20-10-28\345\221\250\346\225\264\347\220\206/index.html" +++ "b/2021/05/09/2021-05-09-\345\221\250\346\227\245-20-10-28\345\221\250\346\225\264\347\220\206/index.html" @@ -30,9 +30,9 @@ + - @@ -319,9 +319,9 @@

+ -
diff --git "a/2023/12/05/2023-12-05-\345\221\250\344\272\214-9-09-47OSC\347\254\224\350\256\260/index.html" "b/2023/12/05/2023-12-05-\345\221\250\344\272\214-9-09-47OSC\347\254\224\350\256\260/index.html" index 81b853f0..03a539ab 100644 --- "a/2023/12/05/2023-12-05-\345\221\250\344\272\214-9-09-47OSC\347\254\224\350\256\260/index.html" +++ "b/2023/12/05/2023-12-05-\345\221\250\344\272\214-9-09-47OSC\347\254\224\350\256\260/index.html" @@ -258,7 +258,7 @@

  • Entity实体,车辆行人等参与者。
  • RoadNetwork路网,静态的场景元素,包括OpenDRIVE、交通信号、环境模型等。
  • -
  • StroyBoard故事板/场景剧本**,(完整的动态描述。
  • +
  • StroyBoard故事板/场景剧本,(完整的动态描述。
  • 另有两个内容:ParameterDeclaration参数声明Catalog目录,将在将来用到时提及。
  • diff --git a/atom.xml b/atom.xml index 0ea46cbd..e16b4d4c 100644 --- a/atom.xml +++ b/atom.xml @@ -23,7 +23,7 @@ 2023-12-05T01:09:49.000Z 2023-12-05T01:09:49.000Z -
    OpenScenario笔记

    为了实现自动驾驶场景设计的标准化,德国自动化及测量系统标准协会(ASAM)推出了OpenX系列标准。

    例如OpenDrive标准用于描述场景静态信息的路网,OpenCRG描述路面信息,而OpenSCENARIO则是用来描述动态场景的。

    这里会对学习到的OpenSCENARIO 1.0(下称OSC)相关内容进行记录。

    部分翻译根据个人理解做了调整,一切以英文为准(特别的,*/概念名称*是我认为相对值得一提但没有采用的官方文档翻译;更特别的,这官方中文真够烂的)。

    参考:


    OCS场景基本概念/方案

    场景的基础概念是“谁,在哪里,做什么”,即实体路网上根据故事板定义的一组指令进行交互

    场景定义的五个基本概念(Concept*/方案*)是:

    场景构成

    OSC通过StoryBoard描述整个场景的完整内容,它有下述构成:

    以上的所有内容都被称为StoryBoardElement(故事板元素/场景剧本要素)。

    故事板元素状态及其状态机

    StoryBoardElement拥有3种状态,即为StoryBoardElementState(故事板元素状态):

    对于在这3种状态中切换,有4种Transition(转换):

    Entity简介

    Entity有两类:

    Entity默认拥有一个Controller(控制器),用于接收来自控制算法之类的指令。

    此外,Entity的实例会被分为两种:

    EntitySelection被选实体

    EntitySelection是将场景中已经存在的若干Entity进行快速分组。

    这样分组,是为了能一同在其他地方被引用(例如批量生成Entity实例,并执行相同的动作)。

    Trigger触发器与Condition条件

    在Act以及Event中,都需要使用这两种主要的Trigger(触发器)来控制流程的启停:StartTriggerStopTrigger
    StartTrigger将故事板元素从standByState切换到runningState;而StopTrigger将其从其他状态(待机或运行)切换到completeState。

    一个Trigger的结果是一个T/F值,这是由它所含有的Condition(条件)以逻辑运算共同决定的。

    为此,OSC将Condition的逻辑运算设计成这样:

    1. ①若干Condition关联成为一个ConditionGroup(条件组);ConditionGroup的结果为所有Condition结果之和/AND
    2. ②若干ConditionGroup一同放入一个Trigger中;Trigger的结果为所有ConditionGroup结果之或/OR

    有关StartTrigger

    拥有StartTrigger的故事板元素:

    没有StartTrigger的故事板元素,例如ManeuverGroup和Maneuver,它们会继承父级的StartTrigger,也就是从Act中继承;具体表现也就是当Act启动后,其底下的ManeuverGroup都会自动启动。

    但是,如果拥有自己的StartTrigger,那它们的启动就要满足它们自己的Condition;而如果它们的父级Act不在runningState(运行状态),则不能启动,这是不言自明的。

    此外,Story也不需要startTrigger,毕竟在仿真启动时它就自然被启动了。

    有关StopTrigger

    拥有StopTrigger的故事板元素:

    同StartTrigger,其他故事板元素会继承父级的StopTrigger;但有所不同的是,一旦父级故事板元素停止了(进入completeState),无论自己有没有StartTrigger,它底下的所有故事板元素同样都要立刻停止。

    Condition简介

    操作、事件与动作

    正如上文所述,ManeuverGroup主要包含Actors和Maneuver这两部分。前者决定哪些Entity会被影响,而后者描述具体是什么Action影响(以及是怎么被触发Event的)。

    动作

    对于Action有以下3种分类,具体可见官方文档:

    ]]> + OpenScenario笔记

    为了实现自动驾驶场景设计的标准化,德国自动化及测量系统标准协会(ASAM)推出了OpenX系列标准。

    例如OpenDrive标准用于描述场景静态信息的路网,OpenCRG描述路面信息,而OpenSCENARIO则是用来描述动态场景的。

    这里会对学习到的OpenSCENARIO 1.0(下称OSC)相关内容进行记录。

    部分翻译根据个人理解做了调整,一切以英文为准(特别的,*/概念名称*是我认为相对值得一提但没有采用的官方文档翻译;更特别的,这官方中文真够烂的)。

    参考:


    OCS场景基本概念/方案

    场景的基础概念是“谁,在哪里,做什么”,即实体路网上根据故事板定义的一组指令进行交互

    场景定义的五个基本概念(Concept*/方案*)是:

    场景构成

    OSC通过StoryBoard描述整个场景的完整内容,它有下述构成:

    以上的所有内容都被称为StoryBoardElement(故事板元素/场景剧本要素)。

    故事板元素状态及其状态机

    StoryBoardElement拥有3种状态,即为StoryBoardElementState(故事板元素状态):

    对于在这3种状态中切换,有4种Transition(转换):

    Entity简介

    Entity有两类:

    Entity默认拥有一个Controller(控制器),用于接收来自控制算法之类的指令。

    此外,Entity的实例会被分为两种:

    EntitySelection被选实体

    EntitySelection是将场景中已经存在的若干Entity进行快速分组。

    这样分组,是为了能一同在其他地方被引用(例如批量生成Entity实例,并执行相同的动作)。

    Trigger触发器与Condition条件

    在Act以及Event中,都需要使用这两种主要的Trigger(触发器)来控制流程的启停:StartTriggerStopTrigger
    StartTrigger将故事板元素从standByState切换到runningState;而StopTrigger将其从其他状态(待机或运行)切换到completeState。

    一个Trigger的结果是一个T/F值,这是由它所含有的Condition(条件)以逻辑运算共同决定的。

    为此,OSC将Condition的逻辑运算设计成这样:

    1. ①若干Condition关联成为一个ConditionGroup(条件组);ConditionGroup的结果为所有Condition结果之和/AND
    2. ②若干ConditionGroup一同放入一个Trigger中;Trigger的结果为所有ConditionGroup结果之或/OR

    有关StartTrigger

    拥有StartTrigger的故事板元素:

    没有StartTrigger的故事板元素,例如ManeuverGroup和Maneuver,它们会继承父级的StartTrigger,也就是从Act中继承;具体表现也就是当Act启动后,其底下的ManeuverGroup都会自动启动。

    但是,如果拥有自己的StartTrigger,那它们的启动就要满足它们自己的Condition;而如果它们的父级Act不在runningState(运行状态),则不能启动,这是不言自明的。

    此外,Story也不需要startTrigger,毕竟在仿真启动时它就自然被启动了。

    有关StopTrigger

    拥有StopTrigger的故事板元素:

    同StartTrigger,其他故事板元素会继承父级的StopTrigger;但有所不同的是,一旦父级故事板元素停止了(进入completeState),无论自己有没有StartTrigger,它底下的所有故事板元素同样都要立刻停止。

    Condition简介

    操作、事件与动作

    正如上文所述,ManeuverGroup主要包含Actors和Maneuver这两部分。前者决定哪些Entity会被影响,而后者描述具体是什么Action影响(以及是怎么被触发Event的)。

    动作

    对于Action有以下3种分类,具体可见官方文档:

    ]]>
    <h1 id="OpenScenario笔记"><a href="#OpenScenario笔记" class="headerlink" title="OpenScenario笔记"></a>OpenScenario笔记</h1><p>为了实现自动驾驶场景设计的标准化,德国自动化及测量系统标准协会(ASAM)推出了OpenX系列标准。</p> @@ -265,12 +265,12 @@ + + - - @@ -290,16 +290,16 @@ + + + + - - - - @@ -416,10 +416,10 @@ - - + + diff --git a/css/main.css b/css/main.css index ff4de15f..ab27b2a7 100644 --- a/css/main.css +++ b/css/main.css @@ -1169,7 +1169,7 @@ pre .javascript .function { } .links-of-author a::before, .links-of-author span.exturl::before { - background: #82c203; + background: #fff; border-radius: 50%; content: ' '; display: inline-block;