From b26cfed3732c43008761494d1c87bf9b56289989 Mon Sep 17 00:00:00 2001 From: nongfugengxia Date: Mon, 17 Jun 2024 17:34:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=8C=E4=BA=BA=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/adv_traffic_manager.md | 2 +- docs/benchmark_creating.md | 5 +-- docs/catalogue_vehicles.md | 2 +- docs/core_actors.md | 10 +++--- docs/core_world.md | 4 +-- docs/examples.md | 5 +++ docs/foundations.md | 4 +-- docs/img/Carla.pptx | Bin 8664316 -> 8664452 bytes docs/python_api.md | 16 ++++----- docs/ref_recorder_binary_file_format.md | 2 +- docs/run_ros.md | 2 +- docs/todo.md | 28 +++++++++++++--- docs/tuto_G_control_walker_skeletons.md | 12 +++---- docs/tuto_G_openstreetmap.md | 2 +- docs/tuto_G_pedestrian_navigation.md | 2 +- docs/tuto_G_retrieve_data.md | 2 +- docs/tuto_first_steps.md | 1 + src/examples/automatic_control.py | 2 +- src/walker/move_jump.py | 42 ++++++++++++++++++++++++ 19 files changed, 105 insertions(+), 38 deletions(-) create mode 100644 src/walker/move_jump.py diff --git a/docs/adv_traffic_manager.md b/docs/adv_traffic_manager.md index baa6c72aa..5e4296620 100644 --- a/docs/adv_traffic_manager.md +++ b/docs/adv_traffic_manager.md @@ -356,7 +356,7 @@ for actor in my_vehicles: ### 停止交通管理器 -TM 不是一个需要被摧毁的参与者;当创建它的客户端停止时,它将停止。这是由 API 自动管理的,用户无需执行任何操作。但是,在关闭 TM 时,用户必须摧毁由它控制的车辆,否则它们将在地图上保持不动。 `generate_traffic.py `脚本会自动执行此操作: +交通管理器是一个不需要被销毁的参与者;当创建它的客户端停止时,它将停止。这是由 API 自动管理的,用户无需执行任何操作。但是,在关闭交通管理器时,用户必须销毁由它控制的车辆,否则它们将在地图上保持不动。 `generate_traffic.py `脚本会自动执行此操作: ```py client.apply_batch([carla.command.DestroyActor(x) for x in vehicles_list]) diff --git a/docs/benchmark_creating.md b/docs/benchmark_creating.md index beca4833d..37c727628 100644 --- a/docs/benchmark_creating.md +++ b/docs/benchmark_creating.md @@ -9,6 +9,7 @@ 驾驶基准测试与其他两个模块相关联。代理模块是另一个模块(实验套件)中执行的控制器。这两个模块都是抽象类,必须由用户重新定义。 以下代码摘录是如何应用驾驶基准的示例; + ```python # 我们实例化了一个转发代理,这是一个简单的策略, # 只需将加速度设置为0.9,将转向设置为零 @@ -89,7 +90,7 @@ def test_weathers(self): ``` ## 构建实验 -实验由一组姿势定义的任务组成。让我们从选择其中一个城市的姿势开始,以 Town01 为例。首先,我们需要查看所有可能的位置,为此,在终端中运行 CARLA 模拟器,运行: +实验由一组姿势定义的任务组成。让我们从选择其中一个城市的姿势开始,以 Town01 为例。首先,我们需要查看所有可能的位置,为此,在终端中运行 CARLA 模拟器,运行 [view_start_positions.py](https://github.com/OpenHUTB/Self_Driving_Car_Trajectory_Tracking/blob/main/PythonClient/view_start_positions.py) : ```shell python view_start_positions.py ``` @@ -156,7 +157,7 @@ experiments_vector = [] ``` -完整代码可以在 [basic_experiment_suite.py](https://github.com/carla-simulator/carla/blob/master/PythonClient/carla/driving_benchmark/experiment_suites/basic_experiment_suite.py) 找到。 +完整代码可以在 [basic_experiment_suite.py](https://github.com/OpenHUTB/Self_Driving_Car_Trajectory_Tracking/blob/main/PythonClient/carla/driving_benchmark/experiment_suites/basic_experiment_suite.py) 找到。 ## 预期结果 diff --git a/docs/catalogue_vehicles.md b/docs/catalogue_vehicles.md index 50e2f74f7..a00a0dfcb 100644 --- a/docs/catalogue_vehicles.md +++ b/docs/catalogue_vehicles.md @@ -127,7 +127,7 @@ vehicle = world.spawn_actor(vehicle_bp, vehicle_trans) spectator.set_transform(camera_trans) ``` -在尝试生成另一辆车之前,不要忘记摧毁该车辆以避免碰撞: +在尝试生成另一辆车之前,不要忘记销毁该车辆以避免碰撞: ```py vehicle.destroy() diff --git a/docs/core_actors.md b/docs/core_actors.md index 9ba4b3f73..36e6bd294 100644 --- a/docs/core_actors.md +++ b/docs/core_actors.md @@ -2,14 +2,14 @@ Carla 中的参与者是在仿真中执行动作的元素,他们可以影响其他参与者。Carla 的参与者包括车辆和步行者,也包括传感器、交通标志、红绿灯和观看者。对如何操作它们有充分的了解是至关重要的。 -本节将介绍生成、摧毁、类型以及如何管理它们。然而,可能性几乎是无穷无尽的。实验、查看本文档中的 __教程__,并在 [Carla 论坛](https://github.com/carla-simulator/carla/discussions/) 中分享疑虑和想法。 +本节将介绍生成、销毁、类型以及如何管理它们。然而,可能性几乎是无穷无尽的。实验、查看本文档中的 __教程__,并在 [Carla 论坛](https://github.com/carla-simulator/carla/discussions/) 中分享疑虑和想法。 - [__蓝图__](#blueprints) - [管理蓝图库](#managing-the-blueprint-library) - [__参与者生命周期__](#actor-life-cycle) - [生成](#spawning) - [处理](#handling) - - [摧毁](#destruction) + - [销毁](#destruction) - [__参与者类型__](#types-of-actors) - [传感器](#sensors) - [观察者](#spectator) @@ -140,9 +140,9 @@ actor.set_simulate_physics(False) 大多数方法是异步向仿真器发送请求。仿真器每次更新解析它们的时间有限。使用 _set()_ 方法淹没仿真器将积累明显的延迟。 -### 摧毁 +### 销毁 -当 Python 脚本完成时,参与者不会被销毁。他们必须明确地摧毁自己。 +当 Python 脚本完成时,不回销毁参与者。他们必须明确地销毁自己。 ```py destroyed_sucessfully = actor.destroy() # 如果成功返回 True @@ -298,7 +298,7 @@ ai_controller.stop() [carla.Client](python_api.md#carla.Client.apply_batch_sync) 中的一个片段使用批次生成大量步行者并让它们四处游荡。 !!! 重要 - __要摧毁人工智能行人__,请停止人工智能控制器并摧毁参与者和控制器。 + __要销毁人工智能行人__,请停止人工智能控制器并销毁参与者和控制器。 --- 关于 Carla 中的参与者,这就是一个总结。下一步将仔细研究 Carla 的地图、道路和交通。 diff --git a/docs/core_world.md b/docs/core_world.md index 8bd3854ce..0657496e4 100644 --- a/docs/core_world.md +++ b/docs/core_world.md @@ -54,7 +54,7 @@ client.set_timeout(10.0) # 秒 world = client.get_world() ``` -客户端还可以获得可用地图列表来更改当前地图。这将摧毁当前的世界并创造一个新的世界。 +客户端还可以获得可用地图列表来更改当前地图。这将销毁当前的世界并创造一个新的世界。 ```py print(client.get_available_maps()) ... @@ -101,7 +101,7 @@ Python API 参考的 [最新部分](python_api.md#command.ApplyAngularVelocity) 世界上有不同的与参与者相关的方法,允许不同的功能。 -* 生成参与者(但不摧毁他们)。 +* 生成参与者(但不销毁他们)。 * 获得场景中的每一位参与者,或者找到一个特定的参与者 * 访问蓝图库。 * 访问观察参与者、仿真的视角。 diff --git a/docs/examples.md b/docs/examples.md index 206e7a554..3cd2a34ec 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -12,6 +12,11 @@ python examples/manual_control.py --host localhost --port 2000 --rolename hero - ``` ![](img/interactive_script/manual_control.png) +手动控制行人: +```shell +python examples/manual_control.py --filter walker.pedestrian.* +``` + ### [绘制边界框](https://github.com/OpenHUTB/carla_doc/blob/master/src/examples/sensor_bounding_box.py) 脚本将根据用户指定的视角 `view`(上方`above`、后面`behind`)附加一个 RGB 相机,并在距离`distance`之内绘制所有的参与者。 ```shell diff --git a/docs/foundations.md b/docs/foundations.md index e5d7469df..5d77606b1 100644 --- a/docs/foundations.md +++ b/docs/foundations.md @@ -51,7 +51,7 @@ client.start_recorder('recording.log') ### 世界 -__世界__ 是代表仿真的对象。它充当一个抽象层,包含生成参与者、改变天气、获取世界当前状态等的主要方法。每个仿真只有一个世界。当地图改变时,它会被摧毁并替换为新的。 +__世界__ 是代表仿真的对象。它充当一个抽象层,包含生成参与者、改变天气、获取世界当前状态等的主要方法。每个仿真只有一个世界。当地图改变时,它会被销毁并替换为新的。 使用客户端对象检索世界对象: @@ -188,7 +188,7 @@ world.on_tick(lambda world_snapshot: do_something(world_snapshot)) 记录器文件包括有关许多不同元素的信息。 -* __参与者__ — 创造和摧毁、边界和触发盒。 +* __参与者__ — 创造和销毁、边界和触发盒。 * __交通等__ — 状态变化和时间设置。 * __车辆__ — 位置和方向、线速度和角速度、光状态和物理控制。 * __行人__ — 位置和方向,以及线速度和角速度。 diff --git a/docs/img/Carla.pptx b/docs/img/Carla.pptx index 1dcad21b7ecc13b2cf1324ab8e6b5aa295aedcfb..a79ca58e5dc1a62ffce542f6f2a7ee8012e517ab 100644 GIT binary patch delta 18770 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 delta 18631 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 diff --git a/docs/python_api.md b/docs/python_api.md index 84c19f370..0f20684e3 100644 --- a/docs/python_api.md +++ b/docs/python_api.md @@ -1,4 +1,4 @@ -#Python API 参考 +# [Python API 参考](https://carla.readthedocs.io/en/latest/python_api/) 此参考包含 Python API 的所有详细信息。要查阅特定 Carla 版本的先前参考,请使用右下角的面板更改文档版本。
这会将整个文档更改为之前的状态。请记住, 最新 版本是 `dev` 分支,可能会显示任何 Carla 打包版本中不可用的功能。
## carla.AckermannControllerSettings @@ -487,12 +487,12 @@ Creates a new world with default settings using `map_name` map. All actors in th - **警告:** _`map_layers` 仅对"Opt"地图可用。 _ - **reload_world**(**self**, **reset_settings**=True) -重新加载当前世界,请注意,将使用同一地图使用默认设置创建一个新世界。世界上所有参与者都将被摧毁,__但__ 交通管理器实例将继续存在。 +重新加载当前世界,请注意,将使用同一地图使用默认设置创建一个新世界。世界上所有参与者都将被销毁,__但__ 交通管理器实例将继续存在。 - **参数:** - `reset_settings` (_bool_) - 选项可将情节设置重置为默认值,设置为false可保留当前设置。这对于在更改映射时保持同步模式和保持确定性场景非常有用。 - **Raises:** 对应的运行时错误 RuntimeError。 - **replay_file**(**self**, **name**, **start**, **duration**, **follow_id**, **replay_sensors**) -使用`map_name`加载具有默认设置的新世界。当前世界中的所有参与者都将被摧毁,__但__ 交通管理器实例将继续存在。 +使用`map_name`加载具有默认设置的新世界。当前世界中的所有参与者都将被销毁,__但__ 交通管理器实例将继续存在。 - **参数:** - `name` (_str_) - 包含仿真信息的文件的名称。 - `start` (_float - seconds_) - 开始播放仿真的时间。负数表示从结尾开始读取,在录制结束前10秒为-10。 @@ -2605,7 +2605,7 @@ _ - **参数:** - `r` (_float - 米_) - 启用物理的新半径。 - **set_osm_mode**(**self**, **mode_switch**=True) -启用或禁用 OSM 模式。该模式允许用户在使用 [OSM 功能](tuto_G_openstreetmap.md) 创建的地图中运行 TM。这些地图允许有死胡同。通常,如果车辆无法找到下一个航路点,交通管理器就会崩溃。如果启用 OSM 模式,它将显示警告,并在必要时摧毁车辆。 +启用或禁用 OSM 模式。该模式允许用户在使用 [OSM 功能](tuto_G_openstreetmap.md) 创建的地图中运行 TM。这些地图允许有死胡同。通常,如果车辆无法找到下一个航路点,交通管理器就会崩溃。如果启用 OSM 模式,它将显示警告,并在必要时销毁车辆。 - **参数:** - `mode_switch` (_bool_) - 如果 __True__ ,则启用 OSM 模式。 - **set_path**(**self**, **actor**, **path**) @@ -3167,7 +3167,7 @@ VehiclePhysicsControl 构造函数。 ## carla.Walker 从 _[carla.Actor](#carla.Actor)_ 继承
-该类从 [carla.Actor](#carla.Actor) 继承并定义仿真中的行人。Walkers 是一种特殊类型的 actor,可以由 AI ([carla.WalkerAIController](#carla.WalkerAIController)) 控制,也可以通过脚本手动控制,使用一系列 [carla.WalkerControl](#carla.WalkerControl) 来移动它们及其骨骼。 +该类从 [carla.Actor](#carla.Actor) 继承并定义仿真中的行人。Walkers 是一种特殊类型的参与者,可以由 AI ([carla.WalkerAIController](#carla.WalkerAIController)) 控制,也可以通过脚本手动控制,使用一系列 [carla.WalkerControl](#carla.WalkerControl) 来移动它们及其骨骼。 ### 方法 - **apply_control**(**self**, **control**) @@ -3192,7 +3192,7 @@ VehiclePhysicsControl 构造函数。 - name: 骨骼名称 - world: 世界坐标变换 - component: 基于参与者的枢轴进行变换 - - relative: 基于骨骼父级进行变换。 + - relative: 基于父级骨骼进行变换。 - **返回:** _[carla.WalkerBoneControlOut](#carla.WalkerBoneControlOut)_ - **Setter:** _[carla.Walker.set_bones](#carla.Walker.set_bones)_ - **get_control**(**self**) @@ -3967,7 +3967,7 @@ Actor affected by the command. --- ## command.ApplyVehicleControl -in [carla.Vehicle](#carla.Vehicle) 中 __apply_control()__ 的命令适应。对车辆应用某个控制。 +在 [carla.Vehicle](#carla.Vehicle) 中 __apply_control()__ 命令进行适应,实现对车辆应用某个控制。 ### 实例变量 - **actor_id** (_int_) @@ -4038,7 +4038,7 @@ in [carla.Vehicle](#carla.Vehicle) 中 __apply_control() -[carla.Actor](#carla.Actor) 中 __destroy()__ 命令的改编版,将告诉仿真器摧毁该参与者。如果参与者已经被摧毁则没有影响。当在 [carla.Client](#carla.Client) 中执行 __apply_batch_sync()__ 将会返回一个布尔值状态表示参与者是否被成功摧毁。 +[carla.Actor](#carla.Actor) 中 __destroy()__ 命令的改编版,将告诉仿真器销毁该参与者。如果参与者已经被销毁则没有影响。当在 [carla.Client](#carla.Client) 中执行 __apply_batch_sync()__ 将会返回一个布尔值状态表示参与者是否被成功销毁。 ### 实例变量 - **actor_id** (_int_) diff --git a/docs/ref_recorder_binary_file_format.md b/docs/ref_recorder_binary_file_format.md index c24404bee..a9d9debbd 100644 --- a/docs/ref_recorder_binary_file_format.md +++ b/docs/ref_recorder_binary_file_format.md @@ -185,4 +185,4 @@ ![layout](img/RecorderLayoutSample.jpg) -在**第 1 帧**中,创建了一些参与者并重新设置了父级,因此我们可以在图像中观察其事件。在**第 2 帧**中没有事件。在**第 3 帧**中,一些参与者发生了碰撞,因此碰撞事件会随该信息一起出现。在**第 4 帧**中,参与者被摧毁。 +在**第 1 帧**中,创建了一些参与者并重新设置了父级,因此我们可以在图像中观察其事件。在**第 2 帧**中没有事件。在**第 3 帧**中,一些参与者发生了碰撞,因此碰撞事件会随该信息一起出现。在**第 4 帧**中,参与者被销毁。 diff --git a/docs/run_ros.md b/docs/run_ros.md index 5bdc6810d..6f3a710b1 100644 --- a/docs/run_ros.md +++ b/docs/run_ros.md @@ -173,7 +173,7 @@ __2.__ 在另一个终端中,发布到主题 `/carla//vehicle_contr | 主题 | 类型 | 描述 | |-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| -| `/carla/destroy_object` | [carla_msgs/DestroyObject.srv](https://github.com/carla-simulator/ros-carla-msgs/blob/f75637ce83a0b4e8fbd9818980c9b11570ff477c/srv/DestroyObject.srv) | 摧毁一个物体 | +| `/carla/destroy_object` | [carla_msgs/DestroyObject.srv](https://github.com/carla-simulator/ros-carla-msgs/blob/f75637ce83a0b4e8fbd9818980c9b11570ff477c/srv/DestroyObject.srv) | 销毁一个物体 | | `/carla/get_blueprints` | [carla_msgs/GetBlueprints.srv](https://github.com/carla-simulator/ros-carla-msgs/blob/f75637ce83a0b4e8fbd9818980c9b11570ff477c/srv/GetBlueprints.srv) | 获取蓝图 | | `/carla/spawn_object` | [carla_msgs/SpawnObject.srv](https://github.com/carla-simulator/ros-carla-msgs/blob/f75637ce83a0b4e8fbd9818980c9b11570ff477c/srv/SpawnObject.srv) | 生成一个对象 | diff --git a/docs/todo.md b/docs/todo.md index 3fd60b70c..ebf47a5c3 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -14,22 +14,34 @@ ## 学术研究 ### [感知](algorithms/perception.md) -目标跟踪、再识别、语义分割、骨架识别等。 +车辆/行人: +检测、跟踪、再识别、语义分割、行为建模、对抗训练、多模态融合、惯视融合等。 + +行人: +过马路和不过马路分类、姿态自编码(增加所提取骨架的质量)、姿态估计、姿态抬升;运动重定向、风格迁移; ### [规划](algorithms/planning.md) -[定位](algorithms/localization.md) 、惯视融合、建图、规划、决策。 +建图、[定位](algorithms/localization.md) 、规划、决策。 + +决策的伦理和公平。 ### [控制](algorithms/control.md) PID、基于模型的控制。 +通过 `carla.Walker.set_bones()` 对行人骨骼进行变换。 + ### 场景 -* 智能体、[智能驾驶](https://openhutb.github.io/carla_doc/ecosys_iss/) 、机器人、无人机等。 +* 代理、[智能驾驶](https://openhutb.github.io/carla_doc/ecosys_iss/) 等。 * 提供数据孪生建筑生成的 Python 接口。 +### 代理 +* 虚拟人预测驾驶行为的神经激活结构 +驾驶、行走、站立、跑步; -## 艺术改进 + +## 艺术增强 * 场景的自动化建模(删除):道路、[建筑](https://github.com/chenzhaiyu/footprint-detection) 等; * 资产:道路、建筑、[行人](https://github.com/EpicGames/MetaHuman-DNA-Calibration) 、车辆、树木等; * [体积雾、雪、脏](https://bitbucket.org/carla-simulator/carla-content/pull-requests/382) 的支持; @@ -39,10 +51,16 @@ PID、基于模型的控制。 https://bitbucket.org/carla-simulator/carla-content Unreal/CarlaUE4/Content/Carla ``` -参考[行人构建流程](https://ww2.mathworks.cn/help/roadrunner-scenario/ug/import-custom-character-meshes.html) 。 +* [中电软件园](https://overpass-api.de/api/map?bbox=112.8671,28.2281,112.8873,28.2412) 新安装apkpure,再安装RealityScan +### 行人 +参考[行人构建流程](https://ww2.mathworks.cn/help/roadrunner-scenario/ug/import-custom-character-meshes.html) 。 + +* 未定位功能:跑步;未实现功能:交谈、叫出租车、坐下。 + + ### 虚幻引擎 * 引擎优化:[文档](https://github.com/OpenHUTB/engine_doc) 本地化整理。 diff --git a/docs/tuto_G_control_walker_skeletons.md b/docs/tuto_G_control_walker_skeletons.md index 9518282ba..a1be6d481 100644 --- a/docs/tuto_G_control_walker_skeletons.md +++ b/docs/tuto_G_control_walker_skeletons.md @@ -11,10 +11,10 @@ !!! 笔记 **本文档假设用户熟悉 Python API。**。
用户在阅读本文档之前应阅读第一步教程: - [核心概念](core_concepts.md)。进行行人建模请参考[链接](./tuto_content_authoring_pedestrians.md) 。 + [核心概念](foundations.md)。进行行人建模请参考[链接](./tuto_content_authoring_pedestrians.md) 。 --- -## 行人骨骼结构 +## 行人骨骼结构 所有行人都具有相同的骨骼层次结构和骨骼名称。下面是骨架层次结构的图像。骨骼的层次结构图参考[链接](./tuto_content_authoring_pedestrians.md) 。 @@ -88,11 +88,11 @@ crl_root ``` --- -## 手动控制行人骨骼 +## 手动控制行人骨骼 以下是如何通过 Carla Python API 更改步行者骨骼变换的详细分步示例。 -### 连接到仿真器 +### 连接到仿真器 导入本例中使用的必要库 @@ -108,7 +108,7 @@ client = carla.Client('127.0.0.1', 2000) client.set_timeout(2.0) ``` -### 生成行人 +### 生成行人 在地图的一个生成点生成一个随机行人。 @@ -120,7 +120,7 @@ spawn_point = random.choice(spawn_points) if spawn_points else carla.Transform() world.try_spawn_actor(blueprint, spawn_point) ``` -### 控制行人骨骼 +### 控制行人骨骼 可以通过将 `WalkerBoneControl` 类的实例传递给行人的 `apply_control` 函数来修改行人的骨架。`WalkerBoneControl` 类包含要修改的骨骼的变换。它的 `bone_transforms` 成员是成对值元组的列表,其中第一个值是骨骼名称,第二个值是骨骼变换。可以在每个刻度上调用 `apply_control` 函数来为行人的骨骼设置动画。每个变换的位置和旋转都是相对于其父变换的。因此,当修改父骨骼的变换时,子骨骼在模型空间中的变换也会相对改变。 diff --git a/docs/tuto_G_openstreetmap.md b/docs/tuto_G_openstreetmap.md index 5113c6b10..3f6734ad7 100644 --- a/docs/tuto_G_openstreetmap.md +++ b/docs/tuto_G_openstreetmap.md @@ -204,7 +204,7 @@ python3 config.py --osm-path=/path/to/OSM/file
!!! 警告 - 生成的道路在地图的边界处突然结束。当车辆无法找到下一个路径点时,这将导致交通管理器崩溃。为了避免这种情况,流量管理器中的 OSM 模式默认设置为True ( [`set_osm_mode()`](python_api.md#carlatrafficmanager) )。这将在必要时显示警告并摧毁车辆。 + 生成的道路在地图的边界处突然结束。当车辆无法找到下一个路径点时,这将导致交通管理器崩溃。为了避免这种情况,流量管理器中的 OSM 模式默认设置为True ( [`set_osm_mode()`](python_api.md#carlatrafficmanager) )。这将在必要时显示警告并销毁车辆。 --- diff --git a/docs/tuto_G_pedestrian_navigation.md b/docs/tuto_G_pedestrian_navigation.md index d5c7c8299..ef2062d8c 100644 --- a/docs/tuto_G_pedestrian_navigation.md +++ b/docs/tuto_G_pedestrian_navigation.md @@ -265,7 +265,7 @@ for frame in range(0,360): ## 总结 -在本教程中,您学习了如何使用 AI 控制器生成行人,恢复行人骨骼的真实三维坐标,并将这些骨骼投影到相机传感器捕获的二维图像上。您可以使用本教程中学到的技术,使用 Carla 仿真器为人体姿势估计框架设置训练和验证,完整代码[链接](https://github.com/OpenHUTB/carla_doc/blob/master/src/tuto_G_pedestrian_bones.py)。 +在本教程中,您学习了如何使用 AI 控制器生成行人,恢复行人骨骼的真实三维坐标,并将这些骨骼投影到相机传感器捕获的二维图像上。您可以使用本教程中学到的技术,使用 Carla 仿真器为人体姿势估计框架设置训练和验证,完整代码[链接](https://github.com/OpenHUTB/carla_doc/blob/master/src/tuto_G_pedestrian_navigation.py)。 diff --git a/docs/tuto_G_retrieve_data.md b/docs/tuto_G_retrieve_data.md index 2d9b041ef..ad5e0a8a1 100644 --- a/docs/tuto_G_retrieve_data.md +++ b/docs/tuto_G_retrieve_data.md @@ -830,7 +830,7 @@ world.set_weather(weather) 新的仿真与记录没有严格的联系。它可以随时修改,即使记录器停止,仿真也会继续。 -这对于用户来说是有利可图的。例如,可以通过回放几秒钟前的仿真并生成或摧毁参与者来强制或避免碰撞。在特定时刻结束记录也很有用。这样做,车辆可能会采取不同的路径。 +这对于用户来说是有利可图的。例如,可以通过回放几秒钟前的仿真并生成或销毁参与者来强制或避免碰撞。在特定时刻结束记录也很有用。这样做,车辆可能会采取不同的路径。 改变条件并扰乱仿真。没有什么可失去的,因为记录器允许初始仿真始终可以重新进行。这是充分发挥 Carla 潜力的关键。 diff --git a/docs/tuto_first_steps.md b/docs/tuto_first_steps.md index 3f9291c85..19b362df9 100644 --- a/docs/tuto_first_steps.md +++ b/docs/tuto_first_steps.md @@ -219,6 +219,7 @@ Carla 附带了几张预制地图,专注于提供多种功能。这些地图 | [__城镇12__](map_town12.md) | 一张包含许多不同区域的大地图,包括高层建筑、住宅区和乡村环境。 | | [__城镇13__](map_town13.md) | 一张与 12 号镇规模相似的大地图,但具有鲜明的特色。 | | [__城镇15__](map_town15.md) | 基于巴塞罗那自治大学道路布局的地图。 | +| [__HUTB__](https://bitbucket.org/hutbcity/openhutbcarla/src/main/) | 基于湖南工商大学道路布局的地图。 | 您可以浏览 Carla 安装中的可用地图: diff --git a/src/examples/automatic_control.py b/src/examples/automatic_control.py index 02998886b..2407e7161 100644 --- a/src/examples/automatic_control.py +++ b/src/examples/automatic_control.py @@ -6,7 +6,7 @@ # This work is licensed under the terms of the MIT license. # For a copy, see . -"""来自客户端的车辆自动控制示例。""" +"""来自客户端的车辆自动控制示例(启动就进入自动驾驶模式)。""" from __future__ import print_function diff --git a/src/walker/move_jump.py b/src/walker/move_jump.py new file mode 100644 index 000000000..ceb82fd74 --- /dev/null +++ b/src/walker/move_jump.py @@ -0,0 +1,42 @@ +# 行人在生成时跳跃,视角并切换到行人的位置 +import random +import time + +import carla + +client = carla.Client('localhost', 2000) +client.set_timeout(10.0) +print(client.get_available_maps()) # 获取所有可使用地图名 + +world = client.get_world() + +bp = random.choice(world.get_blueprint_library().filter('walker')) +transform = world.get_map().get_spawn_points()[0] +pedestrain = world.spawn_actor(bp, transform) + +# 我们也会设置观察者以便我们能看到我们所做的 +spectator = world.get_spectator() +trans = pedestrain.get_transform() +spectator.set_transform(trans) + +control = carla.WalkerControl() + +i = 0 +while True: + control = carla.WalkerControl() + control.speed = 0.9 + control.direction.y = 1 + control.direction.x = 0 + control.direction.z = 0 + pedestrain.apply_control(control) + time.sleep(1) + + # boolean operation 1 for jump and 0 for not to jump + control.jump = 1 + pedestrain.apply_control(control) + time.sleep(1) + + pedestrain.apply_control(control) + time.sleep(1) + + i += 1 \ No newline at end of file