阿克曼小车调试日常

一.准备工作

1.锁定树莓派串口名称,GPS(/dev/ttyUSBGPS)和数传(/dev/ttyUSBxb)都锁了,

还需要增加一个joy901(/dev/ttyUSBjoy)(1号车应该锁过了)

(1)插上新设备,执行命令($ 代表命令行,不用输入)

$ ls /dev/ttyUSB*//有时是ACM*

(2)继续执行命令

$ lsusb

阿克曼小车调试日常_第1张图片

(3)拔掉设备再次执行命令

$ lsusb

(4)对比发现少了一行,需要里面的两串数字(ID)

前面是:ATTRS{idVendor} 1a86

后面是:ATTRS{idProduct} 7523

(5)写入usb规则,运行命令(没有的话会新创建,有的话继续添加)

$ sudo gedit /etc/udev/rules.d/usb.rules

写入下面内容:(SYMLINK 相当于起的别名)

KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523",MODE:="0666", SYMLINK+="ttyUSBjoy"

阿克曼小车调试日常_第2张图片

保存,退出

(6)拔掉设备,运行两行代码

$ sudo service udev reload

$ sudo service udev restart

(7)插上设备,运行命令

$ ls /dev/ttyUSB*

(8)出现"ttyUSBjoy",成功

总流程

阿克曼小车调试日常_第3张图片

2.替换小车的程序

领导车、跟随车(需要修改follower/include里面的paramSetting.h中的Self_ID和Neighbor_ID,与小车对应即可)

删掉工作空间里面的,build和devel文件夹,运行单功能包编译命令

$ catkin_make -DCATKIN_WHITELIST_PACKAGES=leader

$ catkin_make -DCATKIN_WHITELIST_PACKAGES=follower

$ sudo date –s 6/6/2030

3.JY901模块设置

软件:MiniIMU.exe(免安装)(见小车资料-JY901-joy901上位机)

阿克曼小车调试日常_第4张图片

点击配置进行校准和设置:(具体参见:JY901使用说明V2.pdf,好像界面软件不配套

(1)校准(静置点击加速度,磁场-进行二平面法校准(水平、侧面))

(2)内容:只勾选欧拉角、磁场

(3)通讯速率:115200  回传速率50Hz

只需要要航向角,校准完大概,以正北为0度,逆时针为正(上位机显示±180度,程序里解算的是0~360度)

可以单独运行程序 rosrun leader/follower joy901 测试航向角

二、实验时的操作

领导车:(通过遥控控制)

1.航模遥控控制

(1) 开机,此时观察小车上自带小显示屏左下角,显示ROS(为ROS控制模式),

(2)航模遥控器左边遥感轻往前推一下,小显示屏左下角变为R-C(为航模遥控器控制模式)

2.开启小车初始化节点

roslaunch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch 

3.运行leader.launch

roslaunch leader leader.launch

注:

领导车节点功能(src):

joy901.cpp  读取自己的磁力计测的航向角,并发布出去,topic为/joy901_data   正北0,逆时针0~360

test_serial.cpp 打开串口读取GPS原始数据

read_data_node.cpp 订阅test_serial.cpp 中的数据,进行经\纬的解算,并发布出去,topic为/gga_available_info

read_odom.cpp 读取小车里程计测得的角速度和线速度,并发布话题/odom

state_broadcaster.cpp 订阅航向(/joy901_data),经纬(/gga_available_info),速度(/odom),并通过串口(数传)广播出去

跟随车(编队或者绕圈-四种控制模式):

1.开启小车初始化节点

roslaunch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch

3.运行follower.launch

roslaunch follower follower.launch

小车的所有控制参数都在follower.launch里可以改

注:

跟随车节点功能(src):

joy901.cpp  读取自己的磁力计测的航向角,并发布出去,topic为/joy901_data

test_serial.cpp 打开串口读取GPS原始数据

read_data_node.cpp 订阅test_serial.cpp 中的数据,进行经\纬的解算,并发布出去,topic为/gga_available_info

state_broadcaster.cpp (读和发,轮流调用)

(1)订阅航向(/joy901_data),经纬(/gga_available_info),速度(/odom),并通过串口(数传)广播出去

(2)读取通过串口(数传)读取领导车、邻居车的航向,经纬,速度,并打包发布topic为/neighbor,给控制节点使用

follower.cpp 四种控制模式的实现

先mode0,

在过渡mode1的时候,先让调节为位置调节,将与领导者的角度调节置为0

然后位置调节可以调小距离的那个值,更加精确,然后期望位置可以以后,然后再加上角度调节的mode1。

阿克曼小车调试日常_第5张图片

阿克曼小车调试日常_第6张图片

阿克曼小车调试日常_第7张图片

阿克曼小车调试日常_第8张图片

阿克曼小车调试日常_第9张图片

阿克曼小车调试日常_第10张图片

三、小车的硬件构成

(1)检查使能开关

阿克曼小车调试日常_第11张图片

(2)检查电压

阿克曼小车调试日常_第12张图片

2.小车硬件构成

刚收到货的小车主要是由一块STM32F4核心开发板、一个激光雷达、一块树莓派4B开发板、手柄遥控及其接收器、4个轮子(带编码器)以及一块9800MAH锂电池构成。

具体如下:

(1)STM32F4核心开发板(主板)

阿克曼小车调试日常_第13张图片

STM32F4核心开发板主要用于小车的硬件(小车电机转速)控制、以及各种传感器(编码器、电压、无线遥控器、IMU传感器)数据的采集、2.4G无线WiFi模块的控制以及进行四个轮子转速和电源电压的显示。并且预留的定时器拓展口可用于航模遥控器接收机的连接。

(2)激光雷达

阿克曼小车调试日常_第14张图片

主要用于三维地图实时建模,可用于激光雷达SLAM算法的开发,实现路径规划,三维定位等功能,主要例程有构建代价地图、自适应蒙特卡罗定位、全局路径规划(Dijkstra、Astar、DWA、TEB等算法)。

(3)树莓派4B开发板

阿克曼小车调试日常_第15张图片

树莓派开发板通过USB连接到STM32F4开发板,实现了树莓派和STM32之间的数据通信,即可以获得所有STM32采集到的各种传感器的数据(电机实时转速,IMU模块的3轴角速度、3轴加速度)以及STM32开发板解算出的小车的姿态(欧拉角和四元数形式)和里程计获得的位置(通过编码器获得)。并且可以通过在树莓派里编写程序,以期望线速度、期望角速度的形式作为控制输入,进而传输到STM32主控。进而实现对小车的控制。

(4)手柄遥控及其接收器

阿克曼小车调试日常_第16张图片

遥控手柄可以通过连接在STM32上的遥控手柄接收器获得遥控手柄发出的实时控制信号,进而控制小车的移动。目前手柄的使用主要是先打开手柄开关,然后控制前进和转向摇杆就可以实现小车的控制,食指按键(上、下)可以控制车速的加减。

(5)4个轮子(带编码器)

阿克曼小车调试日常_第17张图片

编码器通过STM32的定时器的编码器功能,即可测得固定时间内电机转动产生的高低电平数,进而可以解算到电机的转速,然后通过积分及轮子的周长,便可以获得里程。当小车发生转向时,就需要航向角进行两轴的运动分解。

(6)9800MAH锂电池

阿克曼小车调试日常_第18张图片

锂电池电压不能低于10V,要及时充电。

此外,为了实现多辆小车的跟踪和控制,又继续增加了GPS和无线数传两个设备,通过USB扩展口实现与树莓派的连接。

阿克曼小车调试日常_第19张图片阿克曼小车调试日常_第20张图片

你可能感兴趣的:(ros机器人,阿克曼小车,Jeson,Nano,个人开发)