总体框架:
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*算法)