• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

智能车仿真 —— 2020室外光电创意组线上仿真赛

人工智能 布剪刀石头 1641次浏览 0个评论

前言

今天推出了官方的仿真文件,我也参与了部分仿真模型的设计,提供一个简单的参考思路。

模型下载地址

https://pan.baidu.com/s/1TFBTbCeyQMuKnxemCbyNSw 提取码: crm5

安装依赖工具

sudo apt-get install ros-kinetic-controller-manager
sudo apt-get install ros-kinetic-gazebo-ros-control
sudo apt-get install ros-kinetic-effort-controllers
sudo apt-get install ros-kinetic-joint-state-controller
sudo apt-get install ros-kinetic-driver-base
sudo apt-get install ros-kinetic-rtabmap-ros
sudo apt-get install ros-kinetic-ackermann-msgs
sudo apt-get install ros-kinetic-teb-local-planner
如果gazebo打开仿真出现cmd134字眼是gazebo版本太低的原因从7.0.0升级到7.16.0即可!!!

模型使用说明

首先创建工作区间:

mkdir -p smartcar_ws/src

初始化工作区间

cd ~/smartcar_ws/src
catkin_init_workspace

然后导入仿真文件,将百度云下载的压缩文件解压,将其中的racecar_description.7z文件复制到smartcar_ws/src下并提取(如下图):
在这里插入图片描述 将压缩文件中的smartcar_plane.7z文件提取到.gazebo下的models下,具体操作如下:

  • 在home目录下ctrl + h显示隐藏文件
  • 找到.gazebo文件
  • 进入文件中的models文件夹(如果没有就自己创建一个)
  • 将smartcar_plane.7z解压到models下 在这里插入图片描述 在这里插入图片描述 在racecar_description文件夹下创建worlds文件夹,然后把百度网盘的world文件放到下面: 在这里插入图片描述 修改一下launch文件夹中的racecar.launch文件: 在这里插入图片描述 编译工程:
cd ~/smartcar_ws
catkin_make

在这里插入图片描述 使能环境变量:

echo "source ~/smartcar_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

启动仿真环境:

roslaunch racecar_description racecar.launch

在这里插入图片描述 启动rviz和gazebo:

roslaunch racecar_description racecar_rviz.launch

在这里插入图片描述

仿真任务提示

因为涉及比赛我就不详细讲解怎么配置完整的项目,做一些提示:

  • 首先车不能动,需要配置运动控制器,参考我的项目:https://github.com/xmy0916/racecar中racecar_control文件夹配置运动控制器
  • 官方仿真没有配置gmapping那些,可以参考我的项目里面racecar_gazebo下的congig文件配置
  • 上述配置完成后可以直接使用teb运动规划的速度和方向。
  • 也可以参考我写的path_pursuit.py代码完成纯路径追踪,这个算法有缺陷我没有订阅局部路径规划的话题所以只能巡线不能避障。代码在racecar_gazebo下的srcipts下。

关于运动控制的配置

其实车模已经配置好了关节,要做的就是写关节的控制器,关节控制器代码在racecar车模里就一个yml文件,内容如下:

racecar:
  # Publish all joint states -----------------------------------
  joint_state_controller:
    type: joint_state_controller/JointStateController
    publish_rate: 50


  # Velocity Controllers ---------------------------------------
  left_rear_wheel_velocity_controller:
    type: effort_controllers/JointVelocityController
    joint: left_rear_wheel_joint
    pid: {p: 1.0, i: 0.0, d: 0.0, i_clamp: 0.0}
  right_rear_wheel_velocity_controller:
    type: effort_controllers/JointVelocityController
    joint: right_rear_wheel_joint
    pid: {p: 1.0, i: 0.0, d: 0.0, i_clamp: 0.0}
  left_front_wheel_velocity_controller:
    type: effort_controllers/JointVelocityController
    joint: left_front_wheel_joint
    pid: {p: 0.5, i: 0.0, d: 0.0, i_clamp: 0.0}
  right_front_wheel_velocity_controller:
    type: effort_controllers/JointVelocityController
    joint: right_front_wheel_joint
    pid: {p: 0.5, i: 0.0, d: 0.0, i_clamp: 0.0}


  # Position Controllers ---------------------------------------
  left_steering_hinge_position_controller:
    joint: left_steering_hinge_joint
    type: effort_controllers/JointPositionController
    pid: {p: 10.0, i: 0.0, d: 0.5}
  right_steering_hinge_position_controller:
    joint: right_steering_hinge_joint
    type: effort_controllers/JointPositionController
    pid: {p: 10.0, i: 0.0, d: 0.5}

还不明白嘛?Velocity Controllers部分控制转速的pid以及关节定义,Position Controllers部分配置转向关节的pid以及关节定义,对照官方的车模改个对应的关节名字不就完事了~ 其实想要发现哪里需要修改配置,研究对应的启动文件即可:

<?xml version='1.0'?>

<launch>

  <!-- Load joint controller configurations from YAML file to parameter server -->
  <rosparam file="$(find racecar_control)/config/racecar_control.yaml" command="load"/>

  <!-- load the controllers -->
  <node name="controller_manager" pkg="controller_manager" type="spawner" respawn="false"
        output="screen" ns="/racecar" args="left_rear_wheel_velocity_controller right_rear_wheel_velocity_controller
                                            left_front_wheel_velocity_controller right_front_wheel_velocity_controller
                                            left_steering_hinge_position_controller right_steering_hinge_position_controller
                                            joint_state_controller"/>

  <!-- convert joint states to TF transforms for rviz, etc -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="false" output="screen">
    <remap from="/joint_states" to="/racecar/joint_states" />
  </node>

  <!-- servo node -->
  <node pkg="racecar_control" type="servo_commands.py" name="servo_commands" output="screen">
    <remap from="/racecar/ackermann_cmd_mux/output" to="/vesc/low_level/ackermann_cmd_mux/output"/>
  </node>

  <!-- Allow for Gazebo to broadcast odom -->
  <node pkg="racecar_gazebo" name="gazebo_odometry_node" type="gazebo_odometry.py"/>

</launch>

这里面这一段代码就提示了修改racecar_control.yaml文件嘛:

<!-- Load joint controller configurations from YAML file to parameter server -->
  <rosparam file="$(find racecar_control)/config/racecar_control.yaml" command="load"/>
  <node name="controller_manager" pkg="controller_manager" type="spawner" respawn="false"
        output="screen" ns="/racecar" args="left_rear_wheel_velocity_controller right_rear_wheel_velocity_controller
                                            left_front_wheel_velocity_controller right_front_wheel_velocity_controller
                                            left_steering_hinge_position_controller right_steering_hinge_position_controller
                                            joint_state_controller"/>

接下来你应该知道还有啥要修改的了!仔细阅读源码~

享受比赛~

附件:关于添加锥桶

gazebo是可以直接打开world文件的,命令格式:

gazebo ***.world

官方提供的场地目前没加锥桶,我们可以自己添加,首先下载gazebo的模型:

链接:http://pan.baidu.com/s/1pKaeg0F 密码:cmxc (来自rosclub.cn)

或是下载https://bitbucket.org/osrf/gazebo_models/downloads/ (ExBot ROS专区,网友提醒)

下载后找到官方的场地world文件,进入那个文件夹:

gazebo racetrack.world

在这里插入图片描述 点击左上角insert插入锥桶:
智能车仿真 —— 2020室外光电创意组线上仿真赛 插入后保存新的world文件,点击左上角:
智能车仿真 —— 2020室外光电创意组线上仿真赛 选择save world as替换官方的world即可:
在这里插入图片描述

最后github项目racecar点个star不过分吧,最近在学习无人驾驶后续在仿真完善一下哈哈哈:传送门


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明智能车仿真 —— 2020室外光电创意组线上仿真赛
喜欢 (0)

您必须 登录 才能发表评论!

加载中……