在rviz里尝试先锋机器人的导航仿真

在rviz里尝试先锋机器人的导航仿真

首先从GitHub上下载了大神的包
下载链接:https://github.com/LCAD-UFES/p3dx_navigation
https://github.com/SD-Robot-Vision/PioneerModel
参考链接:
http://wiki.lofarolabs.com/index.php/Moving_The_Pioneer_3-DX_In_Gazebo
在这些包的基础上根据自己的需要进行删减
我们要先建立一个工作空间

mkdir -p ~/catkin-ws/src
cd ~/catkin_ws/src

在其中克隆两个包

git clone https://github.com/SD-Robot-Vision/PioneerModel.git
git clone https://github.com/LCAD-UFES/p3dx_navigation.git
cd ~/catkin_ws
catkin_make

将p3dx_navigation/launch/simulation.launch文件中启动rviz的部分复制到p3dx_navigation/launch/move_base_gazebo.launch中

<!--=======Iniciar RVIZ=============-->
  <arg name="model" default="$(find p3dx_description)/urdf/pioneer3dx.xml"/>
  <arg name="gui" default="False" />
  <param name="robot_description" textfile="$(arg model)" />
  <param name="use_gui" value="$(arg gui)"/>
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find p3dx_navigation)/config/p3dx_gazebo/navigation.rviz" />

然后,在catkin_ws目录下执行source devel/setup.bash,意思是把catkin_ws目录下,devel文件夹里的setup.bash文件挂载到ROS的文件系统里去,这样当用户执行一些文件系统的命令时,就不会提示找不到该工作空间里的包或者文件了。

之后就可以运行了

cd ~/catkin_ws/src/p3dx_navigation
roslaunch launch/move_base_gazebo.launch

出现错误
这里写图片描述
这里写图片描述
机器人显示出现问题,我将rviz中fixed frame值从/map改为/base_link可以出现正常机器人,但是地图报错
No transform from [map] to [base_link],推测该代码可能缺少从base_link到map的tf变换,于是我在p3dx_navigation/src中添加了一个set_tf.cpp

#include <ros/ros.h>
#include <tf/transform_broadcaster.h>

int main(int argc, char** argv){
  ros::init(argc, argv, "tf");
  ros::NodeHandle n;

  ros::Rate r(100);

  tf::TransformBroadcaster broadcaster;
tf::Transform transform;
  while(n.ok()){

transform.setOrigin( tf::Vector3(0,0,0));
transform.setRotation( tf::Quaternion(0, 0, 0, 1));
    broadcaster.sendTransform(
      tf::StampedTransform(
        transform,
        ros::Time::now(),"base_link", "map"));
    r.sleep();
  }
}

在包的cMakelist.list中加入

add_executable(set_tf src/set_tf.cpp)
target_link_libraries(set_tf ${catkin_LIBRARIES})

在cMakelist.list的find_package中加入tf
这里写图片描述
同时在p3dx_navigation/launch/move_base_gazebo.launch开启rviz的部分加入机器人自身各部分之间的tf变换

<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />  
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /> 

运行catkin_make
出现正常的机器人和地图
这里写图片描述
这里写图片描述
这里写图片描述设定目标位置,可以规划路径
这里写图片描述
但是机器人不能动,不知道是不是我没装模拟器的原因
而且还是会有warning
这里写图片描述
希望有大神可以给我解答!

猜你喜欢

转载自blog.csdn.net/qq_38402294/article/details/75575175