当前位置:   article > 正文

ubuntu中使用ROS进行机器人路径规划仿真_ros 路径 仿真

ros 路径 仿真

介绍了在ubuntu20.04中使用ROS平台,实现对机器人进行路径规划的仿真过程

本文的教程对刚入门ROS的同学有一定的帮助

1 安装和配置ROS开发环境

在windows上安装ubuntu20.04虚拟机

启动ubuntu20.04,Ctrl+Alt+T 打开终端

设置sources.list

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

设置秘钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

更新软件

sudo apt update && sudo apt upgrade -y

安装ros

sudo apt install -y ros-noetic-desktop-full

更新.bashrc文件

  1. echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
  2. source ~/.bashrc

另外,推荐安装vscode和git、vim、cmake等软件

  1. sudo snap install --classic code
  2. sudo apt install -y git vim cmake terminator

在vscode软件中推荐安装插件如下:

  • ROS
  • C/C++
  • C/C++ Extension Pack
  • Python
     

2 快速体验

2.1 下载源码

  1. mv ~/catkin_ws ~/catkin_ws_back 2>/dev/null || :
  2. git clone https://gitee.com/lishan666/ros-robot-demo.git ~/catkin_ws
  3. cd ~/catkin_ws
  4. git submodule update --init --recursive

安装依赖包,编译项目

source ~/catkin_ws/install.sh

2.2 启动

启动单个机器人导航的演示程序

roslaunch robot_nav single_nav.launch

启动两个机器人导航的演示程序

roslaunch robot_two_nav robots_navigation.launch

注意,如果提示[gazebo-2] process has died,可以先彻底关闭gzserver,再启动仿真环境

killall gzserver

后续关闭gazebo、rviz等软件的时候记得通过点击左上方的File->Quit

  3 从头创建

3.1 创建机器人节点和包

  1. mkdir -p ~/catkin_ws/src
  2. cd ~/catkin_ws/src
  3. catkin_create_pkg robot1 rospy
  4. catkin_create_pkg robot2 robot1 rospy

编译

  1. cd ~/catkin_ws
  2. catkin_make

3.2 创建URDF机器人模型

新建包abot_description

  1. cd ~/catkin_ws/src
  2. catkin_create_pkg abot_description URDF xacro

在abot_description下新建4个文件夹,其中

  • urdf:用于存放机器人模型的urdf或xacro文件
  • meshes:用于放置urdf中引用的模型渲染文件
  • launch:用于保存相关启动文件
  • config:用于保存rviz的配置文件
  1. cd ~/catkin_ws/src/abot_description
  2. mkdir urdf meshes launch config

在urdf目录下新建abot.urdf文件,ros仿真中很大部分时间是在编辑该urdf文件

vim ~/catkin_ws/src/abot_description/urdf/abot.urdf

文件内容如下

  1. <?xml version="1.0"?>
  2. <robot name="abot">
  3. <link name="base_link">
  4. <visual>
  5. <origin xyz="0 0 0" rpy="0 0 0"/>
  6. <geometry>
  7. <box size="0.30 0.25 0.15"/>
  8. </geometry>
  9. <material name="yellow">
  10. <color rgba="1 1 0 1"/>
  11. </material>
  12. </visual>
  13. </link>
  14. </robot>

3.3 显示机器人模型

在launch目录下新建abot.launch文件

vim ~/catkin_ws/src/abot_description/launch/abot.launch

文件内容如下

  1. <launch>
  2. <!-- 设置 launch 文件的参数 -->
  3. <arg name="paused" default="false"/>
  4. <!-- <arg name="world_name" value="$(find
  5. abot_description)/map/abot_square.world"/> -->
  6. <arg name="use_sim_time" default="true"/>
  7. <arg name="gui" default="true"/>
  8. <arg name="headless" default="false"/>
  9. <arg name="debug" default="false"/>
  10. <arg name="x_pos" default="0"/>
  11. <arg name="y_pos" default="0"/>
  12. <arg name="z_pos" default="15"/>
  13. <!-- 运行 gazebo 仿真环境 -->
  14. <!-- <include file="$(find gazebo_ros)/launch/empty_world.launch">
  15. <arg name="world_name" value="$(arg world_name)"/>
  16. <arg name="debug" value="$(arg debug)" />
  17. <arg name="gui" value="$(arg gui)"/>
  18. <arg name="paused" value="$(arg paused)"/>
  19. <arg name="use_sim_time" value="$(arg use_sim_time)"/>
  20. <arg name="headless" value="$(arg headless)"/>
  21. </include> -->
  22. <!--robot motor -->
  23. <param name="robot_description"
  24. textfile="$(find abot_description)/urdf/abot.urdf"/>
  25. <!-- 运行 joint_state_publisher 节点,发布机器人的关节状态 -->
  26. <node name="joint_state_publisher" pkg="joint_state_publisher"
  27. type="joint_state_publisher">
  28. </node>
  29. <!-- 运行 robot_state_publisher 节点,发布 tf -->
  30. <node name="robot_state_publisher" pkg="robot_state_publisher"
  31. type="robot_state_publisher" output="screen">
  32. </node>
  33. <!-- 在 gazebo 中加载机器人模型-->
  34. <!-- <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model"
  35. respawn="false" output="screen"
  36. args="-urdf -model abot_model
  37. -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos)
  38. -param robot_description"/> -->
  39. </launch>

新开一个终端,启动模型

roslaunch abot_description abot.launch

再新开一个终端,运行可视化工具

rosrun rviz rviz

在rviz软件界面中,修改坐标系将map修改为base_link

点击左下角的 add,添加机器人模型插件,选中 RobotModel 点击确定

在rviz界面按下键盘得ctrl+s,保存文件为~/catkin_ws/src/abot_description/config/abot.rviz

修改abot.launch文件,添加rviz节点内容如下

  1. <launch>
  2. <!-- 运行RVIZ可视化界面-->
  3. <node name="rviz" pkg="rviz" type="rviz"
  4. args="-d $(find abot_description)/config/abot.rviz" required="true">
  5. </node>
  6. </launch>

3.4 启动地图导航

roslaunch wpb_home/wpb_home_tutorials gmapping.launch

 启动仿真环境

roslaunch wpr_simulation wpb_simple.launch

3.5 建图

  1. roslaunch wpr_simulation wpb_gmapping.launch
  2. rosrun wpr_simulation keyboard_vel_ctrl
  3. rosrun map_server map_saver -f map

导航

  1. roslaunch wpr_simulation wpb_stage_slam.launch
  2. roslaunch wpr_simulation wpb_demo_nav.launch

  1. roslaunch wpr_simulation wpb_hector.launch

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

闽ICP备14008679号