阿克曼小车调试日常

一.准备工作

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

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

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

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

(2)继续执行命令

$ lsusb

(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"

保存,退出

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

$ sudo service udev reload

$ sudo service udev restart

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

$ ls /dev/ttyUSB*

(8)出现"ttyUSBjoy",成功

总流程

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上位机)

点击配置进行校准和设置:(具体参见: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。

三、小车的硬件构成

(1)检查使能开关

(2)检查电压

2.小车硬件构成

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

具体如下:

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

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

(2)激光雷达

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

(3)树莓派4B开发板

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

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

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

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

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

(6)9800MAH锂电池

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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32F103RCT6是一款基于ARM Cortex-M3内核的微控制器,适合用于嵌入式系统和物联网应用。阿克曼小车是一种具有良好机动性能的无人驾驶辆。下面是一段基于STM32F103RCT6的阿克曼小车代码的简要描述。 阿克曼小车的代码实现通常包括以下几个部分:体控制、传感器数据处理、路径规划和避障算法。 体控制部分包括通过PWM控制电机的转速和方向。STM32F103RCT6的GPIO引脚可以配置为PWM输出,可以直接连接到电机驱动电路上。通过控制不同电机的转速和方向,可以实现小车的前进、后退、转弯等动作。 传感器数据处理部分包括读取和处理传感器数据,如超声波或红外传感器。STM32F103RCT6的ADC模块可以用于模拟信号采集,通过读取传感器的模拟信号,可以获取到距离等环境信息。根据传感器数据的处理结果,小车可以做出相应的动作,如停下、继续前进或转向等。 路径规划部分是根据给定的目标位置和当前位置,计算出小车应该移动的方向和距离。这通常需要使用算法,如PID控制器或扩展卡尔曼滤波器。 避障算法部分是基于传感器数据,判断前方是否有障碍物,并决定应该如何避免碰撞。此部分可能需要使用机器学习或神经网络算法,以提高避障的效果。 以上是对STM32F103RCT6阿克曼小车代码的简要描述,具体的实现会有更多的细节和功能。通过合理的代码编写和硬件配置,可以实现一个高性能的阿克曼小车。 ### 回答2: STM32F103RCT6是一款基于ARM Cortex-M3内核的32位微控制器芯片。阿克曼小车是一种具有转向能力的四轮驱动智能小车。下面是一个关于如何控制阿克曼小车的STM32F103RCT6代码的简要介绍: 首先,需要设置引脚的输入输出模式。将四个轮子的驱动电机和转向电机连接到相应的引脚上,然后设置这些引脚的模式为输出模式,以便能够控制电机的运动。 接下来,可以定义一些常量和变量来存储小车的参数,例如轮子的半径、宽等。 然后,需要编写函数来控制小车运动。例如,可以编写一个函数来控制小车前进,该函数根据设定的速度和时间来控制电机的转动。通过调整电机的转动速度和时间,可以实现小车前进的功能。同样的方法可以用于控制小车后退、左转、右转等。 接下来,需要编写函数来控制小车的转向。阿克曼小车的转向是通过不同速度的轮子转动来实现的。比如,为了使小车向左转,左边的轮子需要以一个较小的速度转动,右边的轮子则需要以较大的速度转动。通过控制每个轮子电机的速度,可以实现小车的转向功能。 最后,可以将上述编写的函数组合起来,编写一个主程序来控制小车运动。在主程序中,可以根据用户的指令调用不同的函数,实现小车运动和转向。 以上是一个简要的介绍,实际的代码可能更加复杂,涉及到更多的功能和参数设置。希望以上内容对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Perishell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值