smartcar 系列机器人学习笔记1
总体框架:
1,感知
一个相机,一个雷达,一个odom(非必须:一个imu)
功能:
车道线检测,红绿灯检测,障碍物检测
2,决策规划
功能:
一次规划,(避障即:二次规划)
3,控制执行
功能:
速度控制,角度控制
4,人机交互
功能:
显示高精度地图,感知数据,定位数据等关键信息。
总结开发过程中遇到的一些问题:
1、usb永久改变权限的方法
参考文章:https://www.cnblogs.com/lvchaoshun/p/5911903.html
创建文件: /etc/udev/rules.d/70-ttyusb.rules
添加内容: KERNEL=="ttyUSB[0-9]*", MODE="0666"
对于js(手柄),假如不知道路径的话,可以都加上。
KERNEL=="ttyUSB[0-9]*", MODE="0666"
KERNEL=="ttyACM[0-9]*", MODE="0666"
KERNEL=="js[0-9]*", MODE="0666"
KERNEL=="input/js[0-9]*", MODE="0666"
2、ttyUSB 和 ttyACM 的区别
参考文章: https://www.cnblogs.com/sky-heaven/p/5594089.html
对于转换桥,功能较单一,归类为ttyUSB。驱动在drivers/usb/serial/usb-serial.c。 比如FDTI转换芯片虚拟出的串口,在ubuntu上都识别为ttyUSB*.
对于带通信规约的接口,实现复杂,归类为ttyACM。驱动在drivers/usb/class/cdc_acm.c。比如arduino uno rev3板子的usb串口是由atmega16u2芯片完成的。本身芯片可以运行usb协议代码。
关于几个结构体的文章:
3、如何将cmd_vel 转为左右轮轮速
参考资料: https://blog.csdn.net/heyijia0327/article/details/41823809/ ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
rosmsg show geometry_msgs/Twist
linear.x ,linear.y,linear.z
angular.x,angular.y,angular.z .
一般是取 linear.x 线速度, angular.z 角速度。
其中linear 的x就是代表前进方向的速度,单位为m/s。angular 的z就代表机器人的绕中心旋转的角速度,单位为 弧度/s (rad/s)。
4、里程计结果转为 odom
参考资料: https://www.ncnynl.com/archives/201702/1328.html
nav_msgs::Odometry
odom.header.stamp
odom.header.frame_id
//posion
odom.pose.pose.position.x
odom.pose.pose.position.y
odom.pose.pose.position.z
odom.pose.pose.orientation
//velocity
odom.child_frame_id
odom.twist.twist.linear.x
odom.twist.twist.linear.y
odom.twist.twist.linear.z
odom.twist.angular.x
odom.twist.angular.y
odom.twist.angular.z
5、键盘如何控制机器人
参考文章:http://www.guyuehome.com/253 ROS探索总结(八)——键盘控制
6、经典机器人 Husky参考
参考文章: https://www.cnblogs.com/shangchele/p/7328490.html ROS示例----导航功能包Husky_exploration
7、一些D*参考资料
参考文章:
https://www.cnblogs.com/flyinggod/p/8782264.html Dstar Lite路径规划算法简介
https://github.com/search?l=C%2B%2B&q=D%2A+Lite&type=Repositories 算法实现
https://github.com/azampagl/robotics-d-star-lite
https://www.cnblogs.com/flyinggod/p/8671053.html 人工智能: 自动寻路算法实现(四、D、D*算法)
smartcar 系列机器人学习笔记1的更多相关文章
- java8 学习系列--NIO学习笔记
近期有点时间,决定学习下java8相关的内容: 当然了不止java8中新增的功能点,整个JDK都需要自己研究的,不过这是个漫长的过程吧,以自己的惰性来看: 不过开发中不是有时候讲究模块化开发么,那么我 ...
- ios/mac/COCOA系列 -- UIALertVIew 学习笔记
最近在学习ios开发,学习的书籍<ios7 Pragramming cookbook>,做笔记的目的以后方便查看.笔记形式是小例子,将书上的例子书写完整. UIAlertViewClass ...
- contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>
说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ---------------------------------------------- ...
- 干货 | Python进阶系列之学习笔记(二)
目录 对象 字符串 一.对象 (1)什么是对象 在python中一切都是对象,每个对象都有三个属性分别是,(id)身份,就是在内存中的地址,类型(type),是int.字符.字典(dic).列表(li ...
- Docker系列之学习笔记
一.Docker简介 1.1.Docker架构 Docker 使用客户端-服务器 (C/S) 架构模式,分为Docker守护进程和客户端,Docker 客户端,实际上是 docker 的二进制程序,D ...
- 干货 | Python进阶系列之学习笔记(四)
目录 Python条件判断 Python循环语句 Python循环控制 迭代器与生成器 异常 一.Python 条件判断 如果某些条件满足,才能做某件事情:条件不满足时,则不能做,这就是所谓的判断. ...
- AngularJS学习笔记2——AngularJS的初始化
本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化. Angular <script> Tag 下面通过一小段代码来介绍推荐的自动初始化过程: <!doctyp ...
- Netty 学习笔记(1)通信原理
前言 本文主要从 select 和 epoll 系统调用入手,来打开 Netty 的大门,从认识 Netty 的基础原理 —— I/O 多路复用模型开始. Netty 的通信原理 Netty 底层 ...
- Angular6 学习笔记——指令
angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...
随机推荐
- 【Tempest】openstack自动化测试组件tempest及自动化测试工具nose
宝宝心里苦,但是宝宝只能在这穷乡僻壤说,下周又要开组会必须得干点事了.这次是做论文中的实验部分,主要利用到了openstack中的自动化测试组件Tempest,具体原因不细说了. 安装 分两种安装方法 ...
- 高效的 itertools 模块(转)
原文地址:http://python.jobbole.com/87380/ 我们知道,迭代器的特点是:惰性求值(Lazy evaluation),即只有当迭代至某个值时,它才会被计算,这个特点使得迭代 ...
- HDU5742 It's All In The Mind 数学思维题
Problem Description Professor Zhang has a number sequence a1,a2,...,an. However, the sequence is not ...
- [CF600E]Dsu on tree
题意:树上每个点都有颜色,称一个颜色占领一棵子树,当且仅当没有别的颜色在这棵子树内的数量比它多.求所有子树的占领颜色之和.题解:最显然的是DFS序+主席树或莫队,这里使用Dsu on tree. 每次 ...
- 雅礼集训DAY 6 T1 xmasdag
感谢gryz的mly大好人再次给我提供了题目和数据. 和昨晚那个题几乎一样,都是x^n最后转化成第二类斯特林数*阶乘*Σ(和路径长度有关的组合数),而因为组合数是可以利用Pascal公式实现O(1)递 ...
- HDU 6040 Hints of sd0061(nth_element)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6040 [题目大意] 给出一个随机数生成器,有m个询问,问第bi小的元素是啥 询问中对于bi< ...
- 20162318 实验一《Java开发环境的熟悉》实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级:1623班 姓名:张泰毓 成绩:2分 指导老师:娄老师.王老师 实验日期:2017年3月17日 实验密级:非密级 实验器 ...
- [原创]MyEclipse2014全手动实现反向工程---解决手动整合ssh时发生的、在hibernate反向工程的时候找不到项目名的问题
1.在MyEclipse2014中新建两个Web Project项目,名字分别为:Hibernate_manual和Hibernate_auto. 2.单击选中新建的Web项目Hibernate_au ...
- weblogic生成和配置SSL证书
采用Linux自带的OPENSSL进行证书的生成工作 准备阶段 以root登录,同时在el01gbcn01上完成 [oracle@el01gbcn01]# which java /u01/FMW/we ...
- C/C++ 宏定义中#、##、#@的区别
#表示:对应变量字符串化 ##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符 连接符#@:它将单字符标记符变换为单字符,即加单引号.例如: #define B(x) #@x ...