目的:在仿真环境中控制Turtlebot3 Burger运动、slam和自动导航
环境:双系统下ROS为noetic。(其他版本的ROS注意在下载软件包时改成自己的ROS)
步骤:
(1).创建仿真环境:
1.打开gazebo:
两种方法:一种是在roscore
里面打开rosrun gazebo_ros gazebo
另一种是直接在终端里打开gazebo
2.菜单栏选择Edit(编辑)>Building Editor(模拟建筑物编辑器),或使用快捷键Ctrl+B打开环境编辑器
3.选择左边区域Wall(墙壁),在界面右上侧二维视图区域单击鼠标左键开始绘制墙壁,移动鼠标可以拖动墙壁,会以橙色高量显示墙壁和其长度,再次单击鼠标左键确认墙壁的终点。可以选择继续移动鼠标以上一面墙壁的终点开始绘制下一面墙壁,也可以单击鼠标右键结束此面墙壁的绘制。
4.绘制一个封闭仿真环境,绘制完成后可以对墙壁进行编辑和调整,鼠标左键双击需要编辑的墙壁可以弹出检查器,在检查器中可以对墙壁的位置、长度、厚度和高度等参数进行编辑。这里外墙长度设置可以不用改动,内外墙高度都设置为1.5m,厚度默认为0.15m。
5. 给墙壁添加材质和纹理特征,选择左侧区域下方Add Texture(添加质地)中的Bricks(砖)选项,然后鼠标左键单击三维视图区域的外墙,即可以为外墙添加砖的纹理和质地。我们在外墙添加Bricks,在内墙添加wood
6. 在菜单栏选择File(文件)>Save As(另存为),另存当前编辑好的仿真环境文件,选择一个保存路径(可以自己先创建一个文件)并取名为my_building(可自定义名称),保存完成之后可以看到生成一个名为my_building的文件夹,包含model.config和model.sdf两个文件。
sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc ros-noetic-rgbd-launch ros-noetic-depthimage-to-laserscan ros-noetic-rosserial-arduino ros-noetic-rosserial-python ros-noetic-rosserial-server ros-noetic-rosserial-client ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro ros-noetic-compressed-image-transport ros-noetic-rqt-image-view ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers
(注意,我用的是noetic,大家要换成自己ROS版本)
2.创建ROS工作空间并下载Turtlebot移动机器人软件包:
mkdir -p ~/turtlebot_ws/src/
cd ~/turtlebot_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ~/turtlebot_ws
catkin_make
如果下载出问题,注意换成手机热点
没问题后
export TURTLEBOT3_MODEL=burger
(可以放进.bashrc文件里)
source ~/turtlebot_ws/devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch
然后将自己创建的仿真环境导入进来进行保存(在insert里找,一般在最下面)
另存为(save world as),存到~/tutlebot_ws/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/目录下
名称我的是myworld1.world**(后缀必须是.world)**
打开~/tutlebot_ws/src/turtlebot3_simulations/turtlebot3_gazebo/launch/turtlebot3_world.launch文件,将其中加载仿真环境的命令改为:
在此文件中修改加载Turtlebot3模型在仿真环境中的初始位置:
(使机器人保持在地图里面)
3. 键盘控制仿真环境中的机器人运动:
export TURTLEBOT3_MODEL=burger
source ~/turtlebot_ws/devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
4.地图构建与保存:
保持仿真环境和键盘控制窗口运行,打开一个新的终端窗口运行slam文件:
export TURTLEBOT3_MODEL=burger
source ~/turtlebot_ws/devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch
键盘控制机器人在环境中运动,创建满意的地图后用命令保存地图:
rosrun map_server map_saver -f ~tutlebot_ws/src/turtlebot3/turtlebot3_navigation
(3)自动导航:
保持仿真环境运行,关闭其余窗口运行的文件,运行自动导航文件:
export TURTLEBOT3_MODEL=burger
source ~/turtlebot_ws/devel/setup.bash
roslaunch turtlebot3_navigation turtlebot3_navigation.launch
鼠标左键选择rviz工具栏的“2D Pose Estimate”重定位仿真环境中机器人位置和地图中一致,然后选择rviz工具栏中“2D Nav Goal”选项,长按鼠标左键在地图上为机器人指定一个导航目标点。松开鼠标后,在短时间内规划出了一条最优的路径,机器人开始向目标点运动。