news 2026/3/15 21:12:25

自动驾驶—CARLA仿真(14)draw_skeleton demo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶—CARLA仿真(14)draw_skeleton demo

📌 测试用例

PythonAPI/examples/draw_skeleton.py

行人骨骼(Skeleton)可视化示例,用于:

  1. 在仿真中生成一个行人(Pedestrian)
  2. 实时获取其骨骼关节点的 3D 世界坐标
  3. 将骨骼投影到 RGB 摄像头图像上,绘制骨架连线与关键点
  4. 摄像机围绕行人做环绕运动,展示动态效果

适用于人体姿态估计、动作捕捉、行人行为分析等研究。

carla_draw_skeleton

🔑 主要模块解析

1.CarlaSyncMode:同步模式上下文管理器
  • 功能:封装 CARLA 同步模式的开启/关闭逻辑
  • 优势
    • 自动管理world.tick()与传感器数据对齐
    • 确保每帧只处理同一仿真时刻的摄像头图像和行人状态
  • 使用方式
    withCarlaSyncMode(world,camera,fps=30)assync_mode:snapshot,image_rgb=sync_mode.tick(timeout=5.0)

✅ 这是 CARLA多传感器同步的最佳实践


2.行人骨骼获取与处理
bones=ped.get_bones()# 获取骨骼结构fori,boneinenumerate(bones.bone_transforms):boneIndex[bone.name]=i points.append(bone.world.location)# 3D 世界坐标
  • get_bones()返回包含68 个骨骼节点的层级结构(含名称、局部/世界坐标)
  • 常见节点命名如:
    • crl_hips__C(臀部中心)
    • crl_spine__C(脊柱)
    • crl_hand__L(左手)
    • crl_Head__C(头部)

💡 这些名称对应CARLA 内置行人模型的骨骼绑定


3.3D→2D 投影管线
defget_screen_points(camera,K,image_w,image_h,points3d):# 1. 构建世界→相机变换矩阵world_2_camera=np.array(camera.get_transform().get_inverse_matrix())# 2. 将 3D 点转为齐次坐标 (x,y,z,1)points=np.array([...]).reshape(-1,4).T# 3. 变换到相机坐标系points_camera=np.dot(world_2_camera,points)# 4. CARLA 坐标系 → 标准 CV 坐标系: (x,y,z) → (y, -z, x)points=np.array([points_camera[1],-points_camera[2],points_camera[0]])# 5. 相机内参投影 + 归一化points_2d=np.dot(K,points)points_2d=[x/z,y/z,z]
  • 完整实现从世界坐标到像素坐标的转换
  • 正确处理CARLA 左手坐标系计算机视觉右手坐标系的差异

4.骨骼可视化绘制
  • draw_skeleton()
    根据预定义的骨骼连接关系(如hips → spine,spine → neck),调用draw_line_on_buffer绘制绿色骨架线
  • draw_points_on_buffer()
    在关节点位置绘制红色圆点(除根节点外)
  • 自定义光栅化
    未使用 Pygame 高级绘图,而是直接操作NumPy 图像缓冲区,确保与原始图像融合

✅ 支持任意骨骼拓扑,只需修改boneIndex映射关系。


5.动态场景控制
  • 行人动画
    ped.blend_pose(math.sin(blending))# 混合行走/站立姿态controller.go_to_location(...)# AI 控制器导航
  • 环绕摄像机
    x=math.cos(turning)*-3y=math.sin(turning)*3trans.location=ped.location+(x,y,2)trans.rotation.yaw=-360*(turning/(2π))# 保持面向行人camera.set_transform(trans)
  • 效果:摄像机以 3 米半径绕行人旋转,同时俯视 16°

6.图像处理与显示
  • get_image_as_array()
    将 CARLA 图像转为可写的 NumPy 数组(BGR → RGB)
  • draw_image()
    使用 Pygame 显示叠加骨骼的图像
  • 多进程保存(注释掉)
    # pool.apply_async(write_image, (snapshot.frame, "ped", buffer))
    可扩展为实时保存带骨骼标注的视频帧

🎯 核心应用场景

应用如何利用本脚本
2D 人体姿态估计生成带精确 2D 关键点标注的图像数据集
3D 人体重建结合深度图 + 3D 骨骼坐标训练模型
行人行为分析分析blend_pose参数与动作的关系
虚拟试衣/AR将虚拟服装绑定到骨骼节点

⚠️ 技术点

  1. 完整的骨骼拓扑定义

    • 手动编码了60+ 条骨骼连接(从手指到脚趾)
    • 覆盖全身细节,支持高精度姿态可视化
  2. 坐标系无缝转换

    • 正确处理 CARLA 特有的(x,y,z) → (y,-z,x)转换
    • 避免常见投影错误(如左右颠倒、上下翻转)
  3. 纯客户端渲染

    • 所有绘制在 Python/NumPy 完成,不依赖 CARLA 渲染管线
    • 可轻松修改为保存标注文件(JSON/PNG)

✅ 总结

该脚本是 CARLA行人骨骼可视化的标杆示例,展示了:

  1. 如何获取高精度行人骨骼数据
  2. 如何实现鲁棒的 3D→2D 投影
  3. 如何在动态场景中实时绘制骨架

它是构建人体姿态估计数据集行人交互系统的理想起点,尤其适合需要精确关节标注的计算机视觉任务。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 2:21:21

15款ohmyzsh主题深度评测:从极简到高信息密度的完美选择

15款ohmyzsh主题深度评测:从极简到高信息密度的完美选择 【免费下载链接】ohmyzsh 项目地址: https://gitcode.com/gh_mirrors/ohmy/ohmyzsh 还在为单调的终端界面烦恼吗?ohmyzsh作为最流行的Zsh配置框架,提供了数十款精心设计的主题…

作者头像 李华
网站建设 2026/3/15 1:50:37

强化学习入门自学指南:从理论到实践的完整学习路线

你是否对人工智能中的强化学习充满好奇,却不知从何入手?《强化学习:导论》第二版中文PDF资源正是为你量身打造的学习伙伴。这本由理查德S萨顿和安德鲁G巴托合著的经典教材,将带你系统掌握强化学习的核心理论与算法应用。 【免费下…

作者头像 李华
网站建设 2026/3/15 21:13:42

键盘布局编辑器:快速设计个性化键盘的终极工具

键盘布局编辑器:快速设计个性化键盘的终极工具 【免费下载链接】keyboard-layout-editor Web application to enable the design & editing of keyboard layouts 项目地址: https://gitcode.com/gh_mirrors/ke/keyboard-layout-editor 在追求个性化电脑使…

作者头像 李华
网站建设 2026/3/15 21:20:06

34、网络中的循环与 motifs 分析

网络中的循环与 motifs 分析 在生物细胞内,转录调控是一项至关重要的机制。不过,转录因子在酿酒酵母(S. cerevisiae)中仅占所有蛋白质编码基因的约 3%(秀丽隐杆线虫(C. elegans)中占 5%,人类中占 10%)。细胞内还有其他重要的生物过程,可通过网络形式呈现,除了转录网…

作者头像 李华
网站建设 2026/3/12 4:44:07

33、Ubuntu服务器故障排查全攻略

Ubuntu服务器故障排查全攻略 在Ubuntu服务器的运维过程中,故障排查是一项至关重要的技能。无论是系统日志的查看,还是网络问题的追踪,都需要我们掌握有效的方法和工具。下面将为大家详细介绍Ubuntu服务器故障排查的相关内容。 根本原因分析的重要性 根本原因分析应被视为…

作者头像 李华
网站建设 2026/3/15 1:09:57

告别单打独斗!一场关乎独立开发者未来的“对话”即将开启

“技术迭代太快,刚学会的框架已经过时了。”“一个人开发,从产品到运营全要自己搞定,也没有任何福利保障。”“想尝试数字游民,但创业的成本怎么控制?”……如果你是独立开发者,对这些焦虑一定不陌生。前几…

作者头像 李华