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 ...
随机推荐
- 【Nginx】初试反向代理:反向代理的原理和用途
Nginx是一个轻量级的服务器,是一个俄罗斯的开发者开发的开源软件.Nginx具有占内存小.并发能力高的特点,底层采用epoll(Linux2.6+)和kqueue(FREEBSD)网络I/O模型,相 ...
- python正则表达式中的分组 group
维基百科:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C ...
- python 字符串,数学之间的不可描述的关系
首先说一下输入: >>> a=raw_input(" ") 1.234 >>> a '1.234' >>> 可以看到使用raw ...
- 【转】python assert用法
1.assert语句用来声明某个条件是真的.2.如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句.3 ...
- 【循环节】【矩阵乘法】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem F. Fibonacci of Fibonacci
题意:F(n)为斐波那契数列的第n项,问你F(F(n)) mod 20160519的值. 发现有循环节,F(26880696)=0,F(26880697)=1,.... 于是两次矩乘快速幂即可. #i ...
- 【FFT(母函数)+容斥】BZOJ3771-Triple
[题目大意] 给出 n个物品,价值为别为Xi且各不相同,现在可以取1个.2个或3个,问每种价值和有几种情况? *顺序不同算一种 [思路] 显然是个母函数,A表示每种物品取一个的情况,B表示每种物品取二 ...
- java之判断输入的数是否为素数
import java.util.Scanner; public class TestIsSushu { public static void main(String[] args) { Scanne ...
- [转]提示错误 package javax.servlet.jsp does not exist package javax.servletr.jsp.tagext does not exist
你在JAVA servlet容器运行的时候没配置servlet-api.jar,tools.jar,rt.jar,jsp-api.jar的classpath 我的classpath= .;%JAVA_ ...
- CentOS6安装NodeJS(非编译)
由于编译安装需要各种依赖库,会远远高于生产环境下的默认版本,强行升级会产生很多不必要的问题,所以一般用官网编译好的安装 下载nodejs并安装 wget https://nodejs.org/dist ...
- thinkphp去重统计数据sql
DISTINCT 方法用于返回唯一不同的值 官方文档给出的示例: $Model->distinct(true)->field('userName')->select(); 解析的SQ ...