之前调试ros和carla的一起运行把carla给搞崩了,昨天才安装好.真的是麻烦,环境搭配是大问题.

好久没有看carla的example,继续学习它的automatic_control.py,现在大部分可以明白了.

这个源码里面核心的部分就是关于agent的应用,它需要在while循环里面不断的更新agent的信息,并且要然后关于路径规划的部分只有set_destination()函数,我觉得按目前的要求,也只用掌握这个函数就可以了,剩下的部分就是解决传感器和数据采集的卡顿问题了.今天根据automatic_control.py实现了自己的一个小小的想法,让vehicle不断的运动,从一个点运动到另一个点,等到了点后自动更新下一个点,这样一直循环.下面是最后呈现的源码.bug很多,最重要的是中断程序carla就直接崩溃卡死了,不知道为什么,需要再研究学习下.

"""
本片文档主要练习在automatic里面学习的一些代码,
主要实现让vehicle设置一个路径点,
然后到达该路径点后自动寻找并前往下一个路径点,
主要运用的函数是
set_destination()函数
agent.done()
步骤:
1.先实现车辆从一个点到另一个点.(实现)
2.再实现到达另一个点后,自动随机选择下一个点(实现)
3.最后在加上lidar采集数据并保存在一个文件夹里面
反思:
对于同步频率的考虑不足,
对于agent的运行学习不足
对于最后退出的考虑不足
现在退出simulator后会直接卡死,不知道是什么原因
可能是没有使用try-except结构
"""import randomimport carlafrom agents.navigation.behavior_agent import BehaviorAgent
from agents.navigation.roaming_agent import RoamingAgent
from agents.navigation.basic_agent import BasicAgent  def show_point(world, point_location):world.debug.draw_string(point_location, 'X', draw_shadow=False,color=carla.Color(r=0, g=255, b=0), life_time=50,persistent_lines=True)def main():try:client = carla.Client('localhost', 2000)client.set_timeout(2.0)world = client.get_world()settings = world.get_settings()settings.synchronous_mode = Truesettings.fixed_delta_seconds = 0.05world.apply_settings(settings)blueprint_library = world.get_blueprint_library()bp = blueprint_library.find('vehicle.tesla.cybertruck')spawn_points = world.get_map().get_spawn_points()show_point(world, spawn_points[0].location)show_point(world, spawn_points[1].location)vehicle_bp = world.try_spawn_actor(bp, spawn_points[0])world.tick()# 对于判断是否到达终点,一开始还不知道有agent.done()这个函数,# 最开始的设想是利用vehicle.get_location()获得的坐标与# 设定的destnation坐标进行比对然后发现它们居然z轴的坐标不一样,害我卡了好久# 然后就设定了x与y分别对比,发现也不能输出,然后在仿真界面才发现居然只是到达了点附近# 并没有准确的停在该点上...# 最后询问了师兄才知道agent里面有一个API,agent.done()专门解决这个问题.# 最后使用这个API实现了开头的任务.感觉还是得把agent相关的源码阅读一下.# test_location = vehicle_bp.get_location()# print(test_location.x, test_location.y)# print(spawn_points[0].location)# if ((test_location.x == spawn_points[0].location.x) and #                 (test_location.y == spawn_points[0].location.y)):#     print(1111)# random.shuffle(spawn_points)agent = BasicAgent(vehicle_bp )agent.set_destination((spawn_points[1].location.x, spawn_points[1].location.y,spawn_points[1].location.z))while True:agent.update_information(vehicle_bp)world.tick()if (agent.done()):print("到达目标点")random.shuffle(spawn_points)show_point(world, spawn_points[1].location)print("设立新目标点:%s", str(spawn_points[1].location))show_point(world, spawn_points[1].location)agent.set_destination((spawn_points[1].location.x, spawn_points[1].location.y,spawn_points[1].location.z))control = agent.run_step(debug=True)vehicle_bp.apply_control(control)finally:world.destroy()if __name__ == '__main__':try:main()except KeyboardInterrupt:passfinally:print('\ndone.')

carla学习笔记(八)相关推荐

  1. ReactJS学习笔记八:动画

    ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...

  2. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  3. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  4. ROS学习笔记八:创建ROS msg和srv

    ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...

  5. Halcon 学习笔记八:颜色识别

    Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...

  6. ZooKeeper学习笔记(八):ZooKeeper集群写数据原理

    写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...

  7. MongoDB 学习笔记八 复制、分片、备份与恢复、监控

    MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...

  8. python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  9. Polyworks脚本开发学习笔记(八)-组合运用命令批量改名

    Polyworks脚本开发学习笔记(八)-组合运用命令批量改名 需求解析 以下是使用包边比较点创建的一组包边点(即Gap点)和曲面点-包边点(即Flush点),这种命名方式不太常规,改为Gap和Flu ...

最新文章

  1. 13、JsonResponse响应介绍
  2. 云原生解决什么问题?
  3. 编程问题之:x=xamp;(x-1)
  4. Linux下启 停 oracle 以及em控制台
  5. web项目html引入css文件路径,详解Webpack和Webpack-simple中如何引入CSS文件_旧店_前端开发者...
  6. pageSet还没完count就执行了
  7. 展示一个基本的正则用例
  8. rime android汉字,Rime输入法
  9. springboot 后台管理框架
  10. 如何旋转PDF页面并保存
  11. vos系统是什么?vos网络电话系统怎样搭建?
  12. python正整数平方根_Python3算法之四:x的平方根
  13. 灵遁者第一部诗歌集《触摸世界》上集40首诗歌欣赏
  14. win10投影无法正常使用:我们正在确认此功能 解决方法
  15. 【Tools】抓包工具——Charles(中名:花瓶)
  16. 关于x>y?x:y的含义
  17. python新闻评论分析_使用 python 抓取并分析京东商品评论数据
  18. 什么是微分,dy又是什么
  19. Linux ora-12514多实例,Oracle错误 ORA-12514 解决方法
  20. 基于Java毕业设计在线玩具租赁系统源码+系统+mysql+lw文档+部署软件

热门文章

  1. 如何让公司其他人(同一个局域网)访问自己电脑静态.html
  2. 生日悖论 Birthday Paradox 至少有两人同一天生日概率
  3. 简单的指针二叉查找树和数组二叉查找树
  4. 解决Ueditor编辑器图片保存路径问题
  5. linux之ssh命令详解
  6. 17.sql server数据库使用规则、二八原则、数据库查询集群--数据库读写分离多种实现、数据库配置读写分离(by-朝夕)
  7. 选择SaaS供应商的15个关键问题
  8. natapp内网穿透速学教程
  9. 错题本——Python
  10. SQL中的PRIMARY KEY(PK)(主键)和Foreign Key (FK)(外键解析