前言
在有新的slam算法或路径规划算法改进时,使用真实ROS小车实验可能比较麻烦,采用仿真环境的小车测试可以随便换算法,随意改进。提高效率。
一、拆除分布式通信
stage机器人仿真器只在PC端运行,不需要机器人端,要让master节点运行到PC上,先打开/.bashrc文件。gedit ~/.bashrc
我们之前指定了一个机器人的ip作为MASTER_UR的ip地址,我们前面加个#注释掉。下一行的#去掉,他会读取自己的ip地址作为master节点的地址。修改后如图两行。
保存后,source .bashrc
启动roscore测试,ros master的运行地址为192.168.9.218
ifconfig 查看本机ip是一样的192.168.9.218
二、stage仿真器
1.启动stage仿真器
roslaunch robot_simulation simulation_one_robot.launch,打开仿真器
打开终端rosrun teleop_twist_keyboard teleop_twist_keyboard.py遥控红点机器人进行移动。
另外,gedit .bashrc里的最下边BASE_TYPE是需要根据车型进行修改的,仿真中主要关心这个环境变量。
在这PC端修改和机器人端无关,比如nano robot有不同特性,NanoCar是阿克曼转向车型,他没有办法实现场景中的原地旋转,比如键盘控制车rosrun teleop_twist_keyboard teleop_twist_keyboard.py遥控红点机器人进行移动时,l命令原地转不管用。
2.stage仿真器的建图
roslaunch robot_navigation robot_slam_laser.launch这个命令输完后双击tab,
可以看到simulation的参数,他的默认值在launch文件中为false,false时会尝试去启动本体的硬件。改为ture就会启动机器人仿真器。roslaunch robot_navigation robot_slam_laser.launch simulation:=true
再打开一个rivz界面,roslaunch robot_navigation slam_rviz.launch
(也可以直接 roslaunch robot_navigation robot_slam_laser.launch simulation:=true open_rviz:=true,rviz界面也直接打开了)
启动键盘控制rosrun teleop_twist_keyboard teleop_twist_keyboard.py,完成整个建图
我们把地图保存在主目录下
rosrun map_server map_saver -f stag_map
3.stage仿真器的导航
roslaunch robot_navigation robot_navigation.launch simulation:=true open_rviz:=true
打开后2D Nav Goal便可以实现自主规划路径导航。
rosmsg show geometry_msgs/Twist
这个消息是三个线速度叠加三个角速度而共同组成一个平面运动,但在stage仿真器中angular的放loat64 z不是机器人的角速度而是前轮转向角度,所以仿真中看上去并不流畅。
我们可以修改配置,打开这个文件夹
这一行
把默认的False改为Ture,在teb规划器也支持这个模式,发布的cmd_vel中角速度实际上是转向角。实际机器人不改。改完后: