ros机器小车运动控制

目录

1 机器人小车的简单介绍

1.1  小车结构

2 开始测试和运动前的准备工作

2.1  创建并编译功能包practice:

2.1.1  创建功能包practice:

2.1.2  编译功能包practice:

2.2查看话题消息

3 代码分析

3.1  编写小车运动的py文件,并进行编译调试

3.2  launch一键启动文件

4 在仿真器中模拟小车路径

5 图案分析解释

6 实验原理:

7 算法流程及小车实际运行路线结果分析:

8 实验思路与分析体会

机器人小车运动控制设计

1 机器人小车的简单介绍

1.1  小车结构

本次实验采用的是EPRobot智能小车,EPRobot 智能小车是为本科、高职等不同人群计算机编程、机器人开发以及嵌入式 系统开发等方向定制开发的学习平台。EPRobot 基于最新的树莓派 4B 卡片式电脑开发,搭载深度定制的底盘控制器,让小车的功能与性能达到极致。

与市面产品不同的是思岚 A1 达是停止的,运行 ROS 的启动程序之后才会转动,这样能够更有效地利用电池,并大大省去了手工开关雷达的麻烦。

2 开始测试和运动前的准备工作

在虚拟机或者小车系统上新建一个工作空间,用来存放要测试运行的代码,其次要新建功能包以及编译工作空间。而此次做实验我们采用的是小车上的树莓派,很多相关设置均已配置完善,所以我采用的是小车上已经编译并设置好环境变量的工作空间robot_ws,在其中进行功能包的创建和编译:

2.1  创建并编译功能包practice:

2.1.1  创建功能包practice:

$cd ~/robot_ws/src

$catkin_create_pkg practice std_msgs roscpp rospy

2.1.2  编译功能包practice

$cd ~/robot_ws

$catkin_make

#catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name"

$source ~/robot_ws/devel/setup.bash    

2.2查看话题消息

rosmsg show nav_msgs/Odometry

std_msgs/Header header    

  uint32 seq

  time stamp

  string frame_id

string child_frame_id

geometry_msgs/PoseWithCovariance pose 

  geometry_msgs/Pose pose  

    geometry_msgs/Point position  

      float64 x

      float64 y

      float64 z

    geometry_msgs/Quaternion orientation

      float64 x

      float64 y

      float64 z

      float64 w

  float64[36] covariance

geometry_msgs/TwistWithCovariance twist  

  geometry_msgs/Twist twist

    geometry_msgs/Vector3 linear   

      float64 x    

      float64 y

      float64 z

    geometry_msgs/Vector3 angular 

      float64 x

      float64 y

      float64 z

  float64[36] covariance

3 代码分析

3.1  编写小车运动的py文件,并进行编译调试

3.2   launch一键启动文件

  通过对小车的使用可以知道,在 ROS 中运行程序大多是通过系统启动完成后,使用 ssh 软件或者虚拟机的 ssh 命令连接小车,再通过远程终端输入指令,运行相应的launch 文件才能执行相关程序。但是在很多情况下,我们需要小车树莓派的 ROS 程序像单片机程序一样,开机就能够自动执行,比如将我们开发完成的程序应用于某个产品。所以,我们就需要将指定的 ROS 程序设置为开机自启动。

本实验将设置test.launch 文件为开机自启动,主要是通过单片机和TCP的连接互通。

<launch>

     <include file="$(find robot_ws)/launch/EPRobot_start.launch"/>

     <node  pkg="practice"  name="practice" type="test.py" output="screen"/>

</launch>

4 在仿真器中模拟小车路径

在仿真中模拟我们此次采用的是arbotix模拟器+rviz的显示,主要命令如下:启动小车底层驱动程序:roslaunch eprobot_start EPRobot_start.launch

启动仿真器:roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch(如图3)

启动键盘控制:roslaunch mbot_teleop mbot_teleop.launch

启动py文件:rosrun practice test1.py

6 实验原理:

我们此次使用的小车使用的是树莓派ros程序,其中EPRobot 使用的路径规划和导航算法为 TEB 算法,该算法针对于阿克曼底盘结构的小车。如果机器人为圆形差分转向小车,需要使用 DWA 算法。

定义X1方向为小车的正方向,则为机器人的方向角,因此用一个三维向量就完全可以表示机器人的运动路径,机器人在平面上的位姿表述。

做直线运动时,及要求在运动过程中小车的方向角为常数,故=0

做圆弧运动的情况如图7所示,则要考虑小车的回转半径,回转中心0为小车的速度瞬心。

由刚体运动学知识容易得出小车的瞬时运动状态,由此得知左轮转速小于右轮或者右轮运动时右轮转速小于左轮,机器人质心实现圆弧运动。

猜你喜欢

转载自blog.csdn.net/qq_50242449/article/details/129209645