在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
希望有大神可以给我解答!