> ~/.bashrcsource ~/.bashrc这下准备就完成了,可以启动launc文件了。roslaunch racecar_gazebo racecar.lau_mit racecar gazebo">
当前位置:   article > 正文

ROS学习:智能车室外光电组仿真_mit racecar gazebo

mit racecar gazebo

一、模型建立

首先先准备我们的开源仿真包mit-racecar,博主已经把资源上传到CSDN上了。需要请自取。
https://download.csdn.net/download/weixin_44606638/12470588
接下来将racecar_gazebo放入工作区间
在这里插入图片描述编译工作区间

catkin_make
  • 1

在这里插入图片描述
设置环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 1
  • 2

在这里插入图片描述
这下准备就完成了,可以启动launc文件了。

roslaunch racecar_gazebo racecar.launch
  • 1

在这里插入图片描述
注意,如果出现raise ResourceNotFound(name, ros_paths=self._ros_paths)
ResourceNotFound: racecar
说明你没有racecar的模型
在这里插入图片描述
还是老样子,博主博主已经把资源上传到CSDN上了。需要请自取。
https://download.csdn.net/download/weixin_44606638/12470596

如果你执行成功,就会启动gazebo,就可以看见小车模型了。
在这里插入图片描述

二、准备赛道

目前比赛规则已经渐渐明朗,参考官方,制作标准比赛仿真环境,学习阿克曼小车控制,ROS基础和相关智能车算法(后续会补充)。开启Building Editor,依据下图绘制环境:
在这里插入图片描述这时,我们在gazebo中按Ctrl+B,就会弹出绘图画面。
在这里插入图片描述选择Wall,在白色区域画出你需要的赛道模型。
在这里插入图片描述保存并应用:
在这里插入图片描述效果展示:
在这里插入图片描述当然,如果你还要添加障碍物之类的,可以在Insert中自行选择添加。这里我就不多添加了。
在这里插入图片描述

三、控制小车

新建文件racecar.py
在这里插入图片描述
Python代码:

#!/usr/bin/env python
 
"""
template_node.py
LCHS RACECAR 2016-17
Written by Braden Oh
This program serves as a template for a working node.
It contains a useful implementation of the drive function,
an outline for the main function, and contains all commands
necessary to initialize a node.  It also contains comments
outlining specific documentation.
"""
 
#----------------------------------------------------------
# IMPORTS
#----------------------------------------------------------
import rospy											# Import ROS libraries
from sensor_msgs.msg import LaserScan					# Import required msg types
from ackermann_msgs.msg import AckermannDriveStamped	
# Other imports here...
 
#----------------------------------------------------------
# CONSTANTS
#----------------------------------------------------------
DATA_IN = '/scan'									# Read data from this topic
DATA_OUT = 'vesc/ackermann_cmd_mux/input/navigation'	# Publish data to this topic
NODE_NAME = 'sampleController'						# Name of the node
SPEED = 1.0											# Default speed in m/s
# Other constants here...
 
#----------------------------------------------------------
# Functions
#----------------------------------------------------------
def drive(speed, angle, myPublisher):
        msg = AckermannDriveStamped()           # Initializes msg object
        msg.drive.speed = speed                 # Sets msg speed to entered speed
        msg.drive.acceleration = 0              # Sets msg acceleration to 0
        msg.drive.jerk = 1                      # Sets msg jerk to 1
        msg.drive.steering_angle = angle        # Sets msg steering angle to entered angle
        msg.drive.steering_angle_velocity = 1   # Sets msg angle velocity to 1
        myPublisher.publish(msg)              	# Publishes the message
        
# def myFunction(parameter_1, parameter_n):
	# Other functions here
 
#============================
# MAIN
#============================
def main(msg):
 
	# Initialize publisher object
	myPublisher = rospy.Publisher(DATA_OUT,AckermannDriveStamped,queue_size=10)
 
	# Useful calculations here...
	
	# Use the publisher
	# i.e. to drive straight ahead, call the drive function:
	# drive(SPEED, 0, myPublisher)  
 
#============================
 
rospy.init_node(NODE_NAME)					# Initialize node with preset name
rospy.Subscriber(DATA_IN,LaserScan,main)	# Create subscriber object
											#  - Reads data from preset topic
											#  - Data of type LaserScan
											#  - Upon new data, execute main
rospy.spin()	# Continue running until user stops this node
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

赋予可执行文件:

chmod 777 *
  • 1

执行脚本:

python racecar.py
  • 1

结果显示:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/619203
推荐阅读
相关标签
  

闽ICP备14008679号